اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

وعليكم السلام ورحمة الله وبركاته ..

مشكلتك أخي الكريم في السطر :-

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

:excl:  ولكن الأفضل تعديل الحلقة أيضاً ، لأنك تقوم بإنشاء 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 .. حيث ان هذه الأسماء محجوزة لأوامر آكسيس .

 

جرب هذه التعديلات بيدك ، وأخبرني بالنتيجة .

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information