سؤال

ويا شباب، هل يستطيع أحد مساعدتي مع سؤال بسيط. لدي هذا البيان SQL أدناه في فرعي في VB ضمن الوصول من نقرة زر، وأنا جديد على هذا.

وهنا هو ما كتبته:

Private Sub Command0_Click()
  Dim rs As Recordset
  Dim sql As String
  Dim db As Database

  Set db = CurrentDb

  sql = "SELECT * FROM Transactions"

  Set rs = db.OpenRecordset(sql)

  Do Until rs.EOF
    rs.MoveNext

  Loop
  If Not rs.EOF Then

    MsgBox "test"
  End If

End Sub

حسنا، فكيف يمكنني ملء هذا ؟؟ أساسا أنا المشاركة بصراع شخصي تبدأ مع هذا، لذلك أنا أتساءل كيف لي أن أغتنم هذه رمز بسيط، وتشغيله مثل الاستعلام بحيث يفتح السجلات الناتجة.

وشكرا!

هل كانت مفيدة؟

المحلول

وبعض الملاحظات والنصائح الأخرى:

1) تشير دائما أي نوع من السجلات التي تستخدمها. هنا يبدو أن مجموعة سجلات DAO، لذلك يذهب لاعلان كامل مثل:

Dim rs as DAO.recordset

ورونينغ على كمبيوتر آخر، وتبعا لترتيب إعلان المكتبات ADODB وDAO، لا يمكن للنفس رمز للغاية تولد الشوائب.

2) لتجنب أي رسالة خطأ مزعجة إذا أي سجل متاح، يمكنك إضافة اختبار إضافي، شيء من هذا القبيل

if rs.recordcount = 0 then
Else
    rs.moveFirst
    ....

و3) لتصفح سجلات كاملة مع debug.print، يمكنك أن تفعل ذلك بهذه الطريقة. مجرد الإعلان "m_debugLine" كسلسلة، و"الكبد الدهني 'كما DAO.Field في الإعلانات الخاصة بك.

rs.MoveFirst
do while not rs.eof
    m_debugLine = ""
    for each fld in rs.fields
        m_debugLine = m_debugLine + vbTab + fld.value
    next fld
    debug.print m_debugLine
    rs.movenext
loop

و4) هل يمكن إضافة حتى خط debug.print لطباعة أسماء الحقول قبل طباعة البيانات. أعتقد أنك ستجد هذا واحد

نصائح أخرى

واعتمادا على ما كنت تحاول القيام به، قد يكون الإفراط في تعقيد هذا. ومن شأن النهج الأفضل أن يكون لتعيين مصدر السجلات للنموذج (في صفحة الخصائص) الى طاولة المعاملات ثم إسقاط الحقول التي تريدها على النموذج باستخدام مصمم البصرية.

ولكن، إذا كنت حقا يجب أن تفعل ذلك بهذه الطريقة، وهنا هو رمز من شأنها أن تحل محل ما لديك، وفتح جدول بيانات مثل عرض البيانات في الجدول المعاملات.

Private Sub Command0_Click()
   docmd.Opentable "transactions"
End Sub

إذا كنت تريد تحديد النتائج إلى الاستعلام، ثم أولا إنشاء الاستعلام وحفظه ثم استخدام التعليمات البرمجية التالية.

Private Sub Command0_Click()
   docmd.OpenQuery "MyQueryName"
End Sub

ليكون الحرفي للغاية، لم كود الأصلي تعبئة السجلات (في كائن روبية). يمكنك الوصول إلى حقول بالاسم استخدام التعليمات البرمجية في حلقة في حين الخاص بك مثل

debug.print rs("Field1")

ويمكنك وضع التعليمات البرمجية داخل Do..Loop. وسيتم تقييم هذا الرمز لكل سجل التي واجهتها.

Do Until rs.EOF
   Msgbox "The value for MyField is " & rst!MyField
   rs.MoveNext
Loop

وتحصل على أعمدة الرقم القياسي لمجموعة السجلات مثل التمرير (0) أو التمرير ( "اسم العمود") ....

وإذا الجدول المعاملات الخاصة بك وثلاثة أعمدة يدعى أ، ب، ج يمكن أن تحصل عليه مثل:

rs(0)
rs(1)
rs(2)

أو

rs("a")
rs("b")
rs("c")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top