إنشاء كائنات QueryDefs
ستحتاج كثيراً إلى إنشاء استعلامات جديدة في إجراء VBA ، ويتم إنشاء الاستعلام الجديد على أنه كائن QueryDef ، ويكون بناء جملة طريقة CreatQueryDef لكائن Database :
Set qdf = database.CreatQueryDef(Name, SQLText)
حيث أن :
qdf : هو متغير كائن لكائن QueryDef الجديد .
Database : هو مرجع لكائن Database المفتوح والذي سيحتوي على كائن QueryDef الجديد .
Name : هو تعبير سلسلة اختياري يقوم بتسمية كائن QueryDef الجديد .
SQLText : هي عبارة SQL صالحة اختيارية ، تعتبر سلسلة لتعريف كائن QueryDef .
في حالة عدم تحديد وسائط Name و SQLText لطريقة CreatQueryDef يمكن استخدام عبارات التعيين لتحديد خصائص Name و SQLText لكائن QueryDef الجديد .
أمثلة وتوضيحات :
Dim db As Database
Dim qdf As QueryDef
Set db = CurrentDb ' لجعل القاعدة الحالية هي القاعدة الافتراضية
Set qdf = db.CreateQueryDef("اسم الاستعلام الجديد", "SQL عبارة")
Docmd.OpenQuery qdf.Name
والسطر الأخير عند الرغبة في فتح الاستعلام
ولتغيير عبارة SQL لاستعلام موجود (هذه الطريقة تغنيك عن وضع عدد كبير من استعلامات التحديد) :
Dim db as Database
Dim qdf as QueryDef
Set db = CurrentDb ' لجعل القاعدة الحالية هي القاعدة الافتراضية
Set qdf = db.QueryDefs("اسم الاستعلام")
Qdf.SQL = " SQLعبارة "
Docmd.OpenQuery qdf.Name
والسطر الأخير عند الرغبة في فتح الاستعلام
كما يمكن استعمال QueryDef لتشغيل عبارة SQL لإستعلامات الفعل ، المثال التالي ينشئ جدول جديد باسم جدول الصادر:
Dim db As Database
Dim qdf As QueryDef
Set db = CurrentDb ' لجعل القاعدة الحالية هي القاعدة الافتراضية
Set qdf = db.CreateQueryDef("")
qdf.SQL = "SELECT [جدول الصادر].تسلسل, [جدول الصادر].[رقم الصادر], [جدول الصادر].تاريخه, [جدول الصادر].الموضوع INTO الصادر FROM [جدول الصادر];"
qdf.Execute
ولفتح استعلام مؤقتاً في الذاكرة دون حفظه في قاعدة البيانات :
Dim db As Database
Dim qdf As QueryDef
Set db = CurrentDb ' لجعل القاعدة الحالية هي القاعدة الافتراضية
Set qdf = db.CreateQueryDef("", "SQL عبارة")
Dim rst
Set rst = qdf.OpenRecordset(dbOpenDynaset)
وللجميع التحية