منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة مع داو
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

استخدم داو

و عند استخدام الكود

كود :
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
عفوا مع ادو و ليس مع داو
إستخدم هذا الكود افضل .. بحيث يتم تمريره الى جمله SQL
كود :
SQL = "select*from YourTabelname"
    rs.Open SQL, db, adOpenKeyset, adLockPessimistic
    Text1 = rs.RecordCount
السلام عليكم...

السبب في أن الخاصية 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

نرجو الاستفادة و السلام.