اختيار سجل محدد للنموذج
سؤال
في هذا النموذج ، أقوم بإنشاء شبكة ، يبدو وكأنه مخطط شريط يحتوي على "خلايا" صغيرة مكدسة في الشهر. كل من هذه "الخلايا" هي أشكال فرعية مربعة ، وأقوم بإنشاء أشكال مربعة صغيرة أستخدمها كأشكال فرعية.
إذن ما أردت معرفته هو ، ما هو الكود (VB) لتشغيل استعلام محدد ، والعمل فقط مع سجلات محددة في هذا الاستعلام؟ على سبيل المثال ، كل واحدة من هذه النماذج "الخلية" الصغيرة مثل النماذج الفرعية ، تمثل مؤسسة ، وإذا قمت بتشغيل استعلام ناتج أعلى ، أحصل على 10 متاجر أعلى بأي شيء .... لذلك الفكرة هي الاستخدام كل شكل صغير كممثل لكل سجل من هذا الاستعلام. لذلك بالنسبة للخلية الأولى ، أريد تشغيل استعلام SELECT ، والحصول على النتائج ، والعمل فقط مع السجل الأول. ثم في النموذج الثاني ، قم بتشغيل نفس الاستعلام بالضبط ، وعمل فقط مع السجل الثاني ، وهلم جرا!
من الغريب بعض الشيء أفترض ، لكنه سيعطيهم بالضبط ما يريدون ، والجزء الوحيد الذي لست متأكدًا منه ، هو "تحديد السجل الذي أريد استخدامه في VBA بالضبط"
المحلول
يمكنك تغيير SQL لكل نموذج فرعي لقراءة:
SELECT TOP 1 ID, F1, F2 From Table
SELECT TOP 2 From Table WHERE ID NOT IN (SELECT TOP 1 ID From Table)
SELECT TOP 3 From Table WHERE ID NOT IN (SELECT TOP 2 ID From Table)
<...>
SELECT TOP 10 From Table WHERE ID NOT IN (SELECT TOP 9 ID From Table)
أو ، رؤيتك لديك بالفعل مجموعة غريبة إلى حد ما ، يمكنك كتابة كل معرف إلى واحد من 10 عناصر تحكم مربع نص مخفية باستخدام مجموعة سجلات ، واستخدام كل من مربعات النص هذه كحقل رئيسي للربط مع معرف حقل رابط الطفل .
يعد Link Master Field و Link Child Field خصائص للتحكم الفرعي ، وليس النموذج الموجود.
نصائح أخرى
إذا فهمت طلبك بشكل صحيح ، يمكنك أن تفعل شيئًا كهذا.
هيكل الجدول
ID Autonumber,
Col1 Text
vbcode
Private Sub Command0_Click()
Dim rec As Recordset
Dim id As Integer
Set rec = CurrentDb.OpenRecordset("SELECT TOP 10 * FROM Table1")
While Not rec.EOF
id = rec.Fields("ID")
rec.MoveNext
Wend
End Sub
تعاملان عبارة SQL باعتبارها تعريفًا مستمراً ، أي مجموعة من السجلات (مجموعة السجلات) التي يمكنك معالجتها كما لو كانت جدولًا.
Dim cnn As ADODB.Connection
Dim pseudoTable As ADODB.Recordset
Dim strSQL As String
Set cnn = CurrentProject.Connection
Set pseudoTable = New ADODB.Recordset
strSQL = "SELECT Title FROM realTable where realID < 1000;"
pseudoTable.Open strSQL, cnn, adOpenStatic, adLockOptimistic
If Not pseudoTable.BOF And Not pseudoTable.EOF Then
pseudoTable.MoveFirst
Do Until pseudoTable.EOF
' do something with the table
pseudoTable.MoveNext
Loop
يجب أن يمنحك الرمز أعلاه بداية جيدة.