السلام عليكم للجميع،
أخي الكريم محمد بالنسبة للكائنات QueryDefs و QueryDef فهي تعرف على النحو التالي:
هي عبارة عن كائنات تحفظ المعلومات الخاصة بجميع الاستعلامات المنشأة في محرك قاعدة البيانات (engine database) أو التي سيتم إنشائها عن طريق الكائن باستخدام أمر CreateQueryDef. وبالإضافة إلى توفير أوامر تنفذ الاستعلامات ومعرفة نتائجها.
وكما تستخدم هذه الكائنات للتحكم بإعدادات أي استفسار (مثل: نص الاستعلام (SQL Statement)، نوع الاستعلام، الحد الأقصى لعدد النتائج المسترجعة من الاستعلام، تحديد متغيرات الاستعلام أو الحصول على قيمها...... الخ)
مثال (تنفيذ استعلام بمتغيرات عن طريق الكود )
1- قم بإنشاء استعلام جديد عن طريق "Create query in design view" حيث يكون نص الاستعلام كالتالي
الحقل SELECT
أسم الجدول FROM
[متغير ما] = الحقل WHERE
2-قم بحفظ الاستعلام
3- عن طريق VB كود قم بإنشاء Sub يحتوي على الكود التالي:
Dim q As QueryDef
Dim rs As Recordset
Dim par As Parameter
("أسم الاستعلام")Set q = CurrentDb().QueryDefs
("أسم المتغير") ser par =q.Parameters
قيمة المتغير =par.value
--- ملاحظة إلى هذا السطر تم إضافة قيمة للمتغير فقط، والآن ننفذ الاستعلام لاسترجاع السجلات التي تحتوي على نفس قيمة المتغير
q.OpenRecordset أو q.Execute
بأستخدام OpenRecordset تحصل على نتائج أما Execute تستخدم إذا كان نوع الاستعلام إضافة أو تعديل أو حذف حيث الناتج عادة يكون عدد السجلات المتأثرة، ويتم معرفة ذلك عن طريق المتغير RecordsAffected
4- وفي النهاية نقوم باستدعاء اسم الـــ SUB في أي مكان بالكود (مثل ربطها بــ Button Events)
تسهل هذه الطريقة من البرمجة عملية فصل الكود عن Sql حيث تكون عملية الصيانة أسرع ، كما نلاحظ بأن نص الاستعلام محفوظة في قائمة الاستعلامات ولكن عملية التحكم بها وتنفيذها تكون بالكود.

-فراس