طير البحر قام بنشر April 6 قام بنشر April 6 Private Sub Command120_Click() ' Dim childForm As Form ' Dim rs As Recordset ' Dim i As Integer ' ' ' الحصول على مرجع إلى النموذج الفرعي ' Set childForm = Me.Child0.Form ' ' ' البدء بإنشاء المصفوفة بحجم واحد ' Dim arrFilenoValues() As Variant ' ReDim arrFilenoValues(0) ' ' ' الحصول على مرجع إلى مجموعة السجلات في النموذج الفرعي ' Set rs = childForm.RecordsetClone ' ' ' التأكد من أن هناك سجلات قبل البدء ' If Not rs.EOF Then ' ' التحرك إلى السجل الأول ' rs.MoveFirst ' ' ' جمع قيم حقل fileno لكل السجلات وتخزينها في المصفوفة ' Do Until rs.EOF ' ' إضافة قيمة حقل fileno إلى المصفوفة ' arrFilenoValues(i) = rs!fileno ' i = i + 1 ' ' ' التحرك إلى السجل التالي ' rs.MoveNext ' ' ' تحديث حجم المصفوفة للسماح بإضافة سجل جديد ' ReDim Preserve arrFilenoValues(i) ' Loop ' ' ' إغلاق سجلات النموذج الفرعي ' rs.Close ' ' ' فتح التقرير لعرض السجلات المعتمدة على القيم المحصل عليها ' If i > 0 Then ' DoCmd.OpenReport "postcardmany_wide", acViewPreview, , "[fileno] IN (" & Join(arrFilenoValues, ",") & ")" ' Else ' MsgBox "لا توجد سجلات لطباعتها في التقرير.", vbExclamation + vbOKOnly, "تنبيه" ' End If ' Else ' MsgBox "لا توجد سجلات لطباعتها في التقرير.", vbExclamation + vbOKOnly, "تنبيه" ' End If ' ' ' حذف المصفوفة للاستعداد لاستخدامها مرة أخرى ' Erase arrFilenoValues End Sub اخواني استخدم هذا الكود وهو يعمل بشكل جيد لكن المشكله انه يعمل لمره واحده وبعدها لا يمكن اعاده تعيين بيانات جديده فى المصفوفه الا اذا تم اغلاق النموذج وفتحه من جديد كيف لى حذف المصفوفه فى نهايه الكود او اى حل يسمح باعادة تعبئتها
أفضل إجابة طير البحر قام بنشر April 6 الكاتب أفضل إجابة قام بنشر April 6 اشكركم الحل فى تحريك امر الذهاب للسجل الاول خار جملة if not جزيتم الجنه ' إعادة تعيين مؤشر السجلات للبدء من السجل الأول rs.MoveFirst خارج جملة If Not rs.EOF Then
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.