kawas قام بنشر سبتمبر 8 قام بنشر سبتمبر 8 هل ممكن معرفة الخطأ وتعديله لما اضغط على زر ( حجز موعد ) يعطيني خطأ مرفق الملف في الرابط https://we.tl/t-TVrdRy2OBaQgihdG الرقم السري للبرنامج 1234
Foksh قام بنشر سبتمبر 9 قام بنشر سبتمبر 9 وعليكم السلام ورحمة الله وبركاته .. مشكلتك أخي الكريم في السطر :- rsFiltered.Close والذي يعنيه ان المتغير لم يتم تنفيذ الجملة :- Set rsFiltered = rs.OpenRecordset عليه في بعض الحالات ؛ وبالتالي بقيت قيمته = لا شيء = Nothing . ففي كودك وتحديداً ، إذا كان rs فارغاً ، فإنه لن يدخل في هذا الشرط :- If Not rs.BOF And Not rs.EOF Then وعليه ، فأني اقترح عليك استبدال هذا الجزء :- rsFiltered.Close rs.Close 'Sets objects to nothing Set rsFiltered = Nothing Set rs = Nothing Set db = Nothing الموجود في الدالة Private Sub LoadArray ، بهذا الجزء البسيط :- If Not rsFiltered Is Nothing Then rsFiltered.Close Set rsFiltered = Nothing End If If Not rs Is Nothing Then rs.Close Set rs = Nothing End If Set db = Nothing ولكن الأفضل تعديل الحلقة أيضاً ، لأنك تقوم بإنشاء rsFiltered عدة مرات داخل الحلقة :- Set rsFiltered = rs.OpenRecordset وأعتقد أيضاً أن الأفضل إغلاقه بعد الانتهاء منه مباشرة ، وليس انتظار نهاية الإجراء . وبالتالي تعديلي على الدالة كاملة سيكون بهذا الشكل :- Private Sub LoadArray() '-------------------------------------------------------- '----------------- '--------------- '---------------- '---------------- '--------------- '--------------- '-------------------------------------------------------- '---------- 'This procedure loads text into the 3rd column of the array '-------------------------------------------------------- '-------------------------------------------------------- Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsFiltered As DAO.Recordset Dim strSQL As String Dim i As Integer strSQL = "SELECT tblData.ID, tblData.[No], tblData.Name, tblData.Stae, tblData.Day, tblData.Date, tblData.Phone, tblData.Village, tblData.Waitingplace, tblData.Subject,tblData.Presence,tblData.Notes " _ & "FROM tblData; " 'Debug.Print strSQL Set db = CurrentDb Set rs = db.OpenRecordset(strSQL) 'This line ensures that the recordset is populated If Not rs.BOF And Not rs.EOF Then 'Loops through the array using dates for the filter For i = LBound(myArray) To UBound(myArray) 'Checks whether the 2nd element of the array = True If myArray(i, 1) Then 'Filter recordset with array dates rs.Filter = "[Date] = " & myArray(i, 0) 'Open up new recordset based on filter Set rsFiltered = rs.OpenRecordset 'Loop through new recordset Do While (Not rsFiltered.EOF) 'Adds text to the 3rd column of the array myArray(i, 2) = myArray(i, 2) & vbNewLine _ & rsFiltered!No & " / " _ & rsFiltered!Village & " / " _ & rsFiltered!Notes rsFiltered.MoveNext Loop rsFiltered.Close Set rsFiltered = Nothing End If 'Debug.Print myArray(i, 2) Next i End If If Not rs Is Nothing Then rs.Close Set rs = Nothing End If 'Sets objects to nothing Set db = Nothing End Sub وأيضاً كملاحظة مهمة . يوجد احتمال آخر يتعلق بالحقل [Date] وهو للعلم حقل مخالف لقواعد آكسيس حيث ان الإسم محجوز لآكسيس ، وبالتالي قد يسبب لك هذا مستقبلاً مشاكل كبيرة إذا كان يحتوي على وقت بالإضافة إلى التاريخ ؛ عندها المقارنة = قد لا تجد السجلات المتوقعة . ومثله اعتقد في الحقل Day .. حيث ان هذه الأسماء محجوزة لأوامر آكسيس . جرب هذه التعديلات بيدك ، وأخبرني بالنتيجة . 1
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان