SQL الصاعد داخل السؤال VB - MS الوصول 2003
-
07-07-2019 - |
سؤال
ويا شباب، هل يستطيع أحد مساعدتي مع سؤال بسيط. لدي هذا البيان 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")