A L M A I S T R O قام بنشر يونيو 26, 2021 قام بنشر يونيو 26, 2021 السلام عليكم السادة الافاضل لدى كود للبحث فى اكثر من قاعدة بيانات اكسيس من داخل الاكسيل المشكلة ان الكود يقوم بالبحث فى اول واخر قاعدة بيانات فقط ولا يبحث فى القواعد بالترتيب علما بانهم حوالى 6 قواعد بيانات For r = 2 To 18 'Sheets("Settings").[B18].End(xlUp).Row DBFullName = Application.ActiveWorkbook.Path & "\" & Sheets("Settings").Cells(r, "B").Value '"\Database#01.accdb" ' Open the connection Set Connection = New ADODB.Connection Connect = "Provider=Microsoft.ACE.OLEDB.12.0;" Connect = Connect & "Data Source=" & DBFullName & ";" Connection.Open ConnectionString:=Connect Set Recordset = New ADODB.Recordset With Recordset ' Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "# ORDER BY [fdName4]" Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "#" ' Source = "SELECT * FROM Table2 WHERE [fdName2] BETWEEN " & startdt & " AND " & stopdt & " ORDER BY [fdName2]" .Open Source:=Source, ActiveConnection:=Connection For Col = 0 To Recordset.Fields.Count - 1 ' Range("A2").Offset(0, Col).Value = Recordset.Fields(Col).Name Next Range("A5").Offset(1, 0).CopyFromRecordset Recordset End With '//------------------------End Conditioanl 1 ------------------------------------------- Next r ' ActiveSheet.Columns.AutoFit Set Recordset = Nothing Connection.Close Set Connection = Nothing End If
أ / محمد صالح قام بنشر يونيو 27, 2021 قام بنشر يونيو 27, 2021 ينبغي علينا أولا فهم الكود الخاص بك أخي الكريم معنى الكود أنك تبتصل ب 17 قاعدة بيانات جميعها باسم Database#01.accdb وموجودة في 17 مجلد اسم المجلد هو الخلايا من b2 إلى b18 ثم تستعلم من قاعدة البيانات وتضع ناتج الاستعلام في نفس الخلية a6 هل فهمي للكود صحيح؟ وما المطلوب تصحيحه ؟
A L M A I S T R O قام بنشر يونيو 27, 2021 الكاتب قام بنشر يونيو 27, 2021 اسماء قواعد البيانات مختلفة الاسماء هى كما بالشكل الواضح بالصورة ما اريدة ان يتم فتح قواعد اليانات بالترتيب واحدة بعد الاخرى وجلب النتجية بناءا على تاريخ محدد من والى تظر النتيجة بالشيت المسمى Find
أفضل إجابة أ / محمد صالح قام بنشر يونيو 28, 2021 أفضل إجابة قام بنشر يونيو 28, 2021 في ٢٦/٦/٢٠٢١ at 20:48, A L M A I S T R O said: Range("A5").Offset(1, 0).CopyFromRecordset Recordset المشكلة في هذا الجزء الذي ينسخ محتويات الاستعلام ويضعها في الخلية A6 في الشيت الحالي وحسب كلامك ينبغي معرفة آخر صف في شيت find ثم النسخ بعده sheets("find").range("a" & sheets("find").range("a" & rows.count).end(xlup).row + 1). CopyFromRecordset Recordset بالتوفيق
A L M A I S T R O قام بنشر يوليو 1, 2021 الكاتب قام بنشر يوليو 1, 2021 الف شكر ... تمت بنجاح ا/محمد صالح ... لى سؤال اخر لو تسمحلى عايز اعدل فى الكود التالى لاضافة اكثر من اختيار للبحث بقاعدة البيانات بحيث اقدر اخلى المستخدم يبحث برقم الهاتف ورقم الفاتورة علما بان اسم الحقل الخاص برقم الفاتورة اسمه fdname1 واسم الحقل الخاص برقم الموبايل fdname16 وسيتم فى ورقة الاكسيل كتابة رقم الفاتورة فى الخلية مثلا A1 ورقم الموبايل فى الخلية A وفى حالة كانت الخلية A1 و A2 فارغه يجعل البحث كما هو بين التاريخين Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# And #" & stopdt & "# "
أ / محمد صالح قام بنشر يوليو 1, 2021 قام بنشر يوليو 1, 2021 جرب هذا الاستعلام Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# And #" & stopdt & "#" & IIf([A1] = "" And [A2] = "", "", " And ([fdName4] = " & [A1] & " Or [fdName16] = " & [A2] & ")") & ";"
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 وضعت هذا الاستعلام كما ذكرت mobi = Sheets("Find").Range("G1") invois = Sheets("Find").Range("G2") Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "#" & _ IIf(mobi = "" And invois = "", "", " AND ([fdName16] = " & mobi & " OR [fdName1] = " & invois & ")") & ";" علمان بان الخلية G1 هى رقم الموبايل والخلية G2 هى رقم الفاتورة .. ولكن لا تعطى اى نتائج
أ / محمد صالح قام بنشر يوليو 2, 2021 قام بنشر يوليو 2, 2021 عدم إعطاء اي نتائج لها احتمالات كثيرة منها: * عدم وجود نتائج فعلا في قاعدة البيانات تنطبق عليها هذه الشروط. * احتمال وجود اختلاف في نوع البيانات بين الحقول في الأكسس والخلايا في اكسل. فإذا كانت الحقول في الأكسس نصية فيجب احاطتها بعلامتين تنصيص. بالتوفيق
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 لما خليته يبحث عن شرط واحد فقط اشتغل Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "#" & _ IIf([inv] = "", "", " AND ([fdName1] = " & [inv] & ")") & ";" حقل الموبايل فى الاكسيس نصى وحقل الفاتورة فى الاكسيس رقمى
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 (معدل) ا/محمد صالح ما ظبتت معى Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# And #" & stopdt & "#" & _ IIf("G1" = "" And [G2] = "", "", " And ([fdName16] = " & "G1" & " Or [fdName1] = " & [G2] & ")") & ";" يرجى المساعدة تم تعديل يوليو 2, 2021 بواسطه A L M A I S T R O
أ / محمد صالح قام بنشر يوليو 2, 2021 قام بنشر يوليو 2, 2021 اقصد إحاطة القيم بعلامتين تنصيص وليس اسم الحقل Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "#" & _ IIf(mobi = "" And invois = "", "", " AND ([fdName16] = '" & mobi & "' OR [fdName1] = " & invois & ")") & ";" لو ارفقت مثالا كان أفضل من كل هذا الشغل النظري الذي لا يفيد
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 ظبطت معى لكن توجد مشكلة واحدة اريد ان يكون البحث سواء برقم الهاتف او برقم الفاتورة غير مرتبطين ببعض بمعنى لو ادلخت رقم الفاتورة دون رقم الهاتف يقوم بالبحث واذا ادخلت رقم الموبايل دون الفاتورة يقوم ايضا بالبحث لكن ما يحدث رابط الخليتين ببعض اى يجب ان اقوم بوضع رقم على الاقل صفر فى خلية الفاتورة حتلا يقوم بالبحث عن رقم موبايل انا بشكر تعبك معايا والله بس متعشم خير
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 اليك مثال مرفق اخى محمد صالح Desktop.rar
أ / محمد صالح قام بنشر يوليو 2, 2021 قام بنشر يوليو 2, 2021 Source = "SELECT * FROM Table2 WHERE [fdName4] BETWEEN #" & startdt & "# AND #" & stopdt & "#" & _ IIf(mob = "", "", " AND [fdName16] = '" & mob & "'") & IIf(inv = "", "", " And [fdName1] = " & inv) & ";" تم تعديل شرط إذا كان أحد الخليتين فارغا وإعادة صياغة الاستعلام
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 انا اسف لتعبك معايا عند البحث بالموبايل والفاتورة معا تأتى النتيجة مطبوطة تمام وعند البحث بالموبايل فقط تأتى ايضا مظبوطة تماما ولكن عند البحث برقم الفاتورة فقط لا تأتى اى نتائج
أ / محمد صالح قام بنشر يوليو 2, 2021 قام بنشر يوليو 2, 2021 عندي يعمل بصورة ممتازة ربما بسبب أنه حينما يكون رقم الموبايل فارغا فالمتغير mob يساوي 0 وبهذا لا يتحقق الشرط فالصواب حذف الصفر المضاف قبل متغير الموبايل mob = Sheets("Find").Range("G1").Value وجعل تنسيق الخلية G1 نص text حتى يقبل الصفر في البداية وهذا ما قمت به عندي من البداية
A L M A I S T R O قام بنشر يوليو 2, 2021 الكاتب قام بنشر يوليو 2, 2021 الله يفتح عليك حذفت الصفر فعلا وخليت الخلية TEXT وظبطت معايا الف الف مليون شكر ا/محمد صالح 1
أ / محمد صالح قام بنشر يوليو 2, 2021 قام بنشر يوليو 2, 2021 الشكر لله حبيبي لا تنساني من دعواتك الطيبة 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.