اذهب الي المحتوي
أوفيسنا

نجوم المشاركات

Popular Content

Showing content with the highest reputation on 09/09/26 in all areas

  1. كالعادة حبيبنا ،، أنت نزل البتاع وإحنا نجرب 😁.. والأخطاء أو النواقص بتطلع من نفسها 😇🖐️ وبهذي الطريقة بتكتمل التكة الباقية إن شاء الله .. صعب ندخل معاك عالخط من النهاية بعد ما قطعت شوط طويل من البحث والتجربة 🙃 (اطمن) إحنا بندعيلك بالتوفيق والتيسير 😅🤲
    1 point
  2. وعليكم السلام ورحمة الله وبركاته .. مشكلتك أخي الكريم في السطر :- 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 point
×
×
  • اضف...

Important Information