19-01-14, 04:58 PM
السلام عليكم...
السبب في أن الخاصية RecordCount تعطي -1 هو أن محرك قواعد البيانات لا يستطيع أحياناً معرفة عدد السجلات إلا بعد الوصول إلى نهاية مجموعة السجلات (EOF).
لمعرفة عدد السجلات انتقل إلى السجل الأخير بعد فتح الـ Recordset:
لكن هذا الأمر قد يكون مكلفاً إذا كان عدد السجلات كبيراً جداً. بدلاً من ذلك يمكنك استعمال الدالة التالية لمعرفة ما إذا كانت مجموعة السجلات (Recordset) فارغة أم لا:
و إذا أردت المرور على السجلات في حلقة فاستخدم حلقة Do While مع EOF بدلاً من حلقة For. مثلاً:
نرجو الاستفادة و السلام.
السبب في أن الخاصية 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نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
