السلام عليكم
استخدم داو
و عند استخدام الكود
كود :
Text25.Text = Rs12.RecordCount
MsgBox Text25.Text
يعطي -1 فهل من كود يعطي عدد السجلات في داو
rs12.Recordset.MoveFirst
Text25.Text = ""
For Counter = 1 To rs12.Recordset.RecordCount
Text25.Text = Val(Text25.Text) + rs12.Recordset.Fields(5).Value
rs12.Recordset.MoveNext
Next
rs12.Recordset.MoveLast
السلام عليكم...
السبب في أن الخاصية RecordCount تعطي -1 هو أن محرك قواعد البيانات لا يستطيع أحياناً معرفة عدد السجلات إلا بعد الوصول إلى نهاية مجموعة السجلات (EOF).
لمعرفة عدد السجلات انتقل إلى السجل الأخير بعد فتح الـ Recordset:
كود :
Rs12.MoveLast
MsgBox CStr(Rs12.RecordCount)
لكن هذا الأمر قد يكون مكلفاً إذا كان عدد السجلات كبيراً جداً. بدلاً من ذلك يمكنك استعمال الدالة التالية لمعرفة ما إذا كانت مجموعة السجلات (Recordset) فارغة أم لا:
كود :
Public Function IsEmptyRecordSet(ARecordSet As ADODB.Recordset) As Boolean
If ARecordSet Is Nothing Then
IsEmptyRecordSet = True
ElseIf ARecordSet.State <> adStateOpen Then
IsEmptyRecordSet = True
ElseIf ARecordSet.BOF And ARecordSet.EOF Then
IsEmptyRecordSet = True
Else
IsEmptyRecordSet = False
End If
End Function
و إذا أردت المرور على السجلات في حلقة فاستخدم حلقة Do While مع EOF بدلاً من حلقة For. مثلاً:
كود :
' استخدم الدالة السابقة لمعرفة ما إذا كانت مجموعة السجلات فارغة أم لا
If Not IsEmptyRecordSet(Rs12) Then
Do While Not Rs12.EOF
' ...
' اعمل هنا ما تريد عمله
' ...
Rs12.MoveNext ' مهمة جداً
Loop
End If
نرجو الاستفادة و السلام.