1. تشغيل قاعدة بيانات الوصول في DELPHI (إنشاء ملف .mdb، ضغط قاعدة البيانات)
اجتاز التعليمة البرمجية التالية الاختبار تحت WIN2K، D6، MDAC2.6،
يعمل البرنامج المترجم بنجاح في الإصدار الثاني من WIN98 بدون بيئة ACCESS.
// قبل استخدام ComObj,ActiveX
// قم بتعريف سلسلة الاتصال
ثابت
SConnectionString = 'PRovider=Microsoft.Jet.OLEDB.4.0;مصدر البيانات=%s;'
+'Jet OLEDB: كلمة مرور قاعدة البيانات=%s;';
//================================================================================================ ==========================================================
// الإجراء: GetTempPathFileName
// المؤلف: ysai
// التاريخ: 27-01-2003
// الوسائط: (لا شيء)
// النتيجة: سلسلة
//================================================================================================ ==========================================================
وظيفة GetTempPathFileName():string;
// احصل على اسم الملف المؤقت
فار
SPath،SFile: صفيف [0..254] من char؛
يبدأ
GetTempPath(254,SPath);
GetTempFileName(SPath,'~SM',0,SFile);
result:=SFile;
DeleteFile(PChar(result));
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: إنشاء ملف الوصول
// المؤلف: ysai
// التاريخ: 27-01-2003
// الوسائط: اسم الملف: سلسلة؛ كلمة المرور: سلسلة = ''
// النتيجة: منطقية
//================================================================================================ ==========================================================
وظيفة CreateAccessFile(FileName:String;PassWord:string=''):boolean;
// إنشاء ملف وصول، يفشل إذا كان الملف موجودًا
فار
STempFileName: سلسلة؛
vCatalog:OleVariant;
يبدأ
STempFileName:=GetTempPathFileName;
يحاول
vCatalog:=CreateOleObject('ADOX.Catalog');
vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
DeleteFile(STempFileName);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: CompactDatabase
// المؤلف: ysai
// التاريخ: 27-01-2003
// الوسائط: AFileName,APassWord:string
// النتيجة: منطقية
//================================================================================================ ==========================================================
وظيفة CompactDatabase(AFileName,APassWord:string):boolean;
// ضغط قاعدة البيانات وإصلاحها والكتابة فوق الملفات المصدر
فار
STempFileName: سلسلة؛
vJE:OleVariant;
يبدأ
STempFileName:=GetTempPathFileName;
يحاول
vJE:=CreateOleObject('JRO.JetEngine');
vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
format(SConnectionString,[STempFileName,APassWord]));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: تغيير DatabasePassword
// المؤلف: ysai
// التاريخ: 27-01-2003
// الوسائط: AFileName، AoldPassWord، ANewPassWord: سلسلة
// النتيجة: منطقية
//================================================================================================ ==========================================================
وظيفة ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
// تعديل كلمة مرور قاعدة بيانات الوصول
فار
STempFileName: سلسلة؛
vJE:OleVariant;
يبدأ
STempFileName:=GetTempPathFileName;
يحاول
vJE:=CreateOleObject('JRO.JetEngine');
vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
format(SConnectionString,[STempFileName,ANewPassWord]));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
2. الأشياء التي يجب عليك الانتباه إليها وبعض النصائح عند استخدام عبارات SQL في ACCESS
قامت عبارة SQL التالية بتمرير الاستعلام في ACCESS XP
إنشاء جدول:
إنشاء علامة تبويب الجدول 1 (
عداد الهوية،
سلسلة الاسم,
عدد صحيح للعمر،
[التاريخ] التاريخ والوقت)؛
مهارة:
يتم الإعلان عن حقول الزيادة التلقائية باستخدام العداد.
يتم وضع الحقول التي تكون أسماء حقولها عبارة عن كلمات أساسية بين قوسين مربعين []، وتكون الأرقام مقبولة أيضًا كأسماء حقول.
إنشاء فهرس:
تقوم العبارة التالية بإنشاء فهرس قابل للتكرار في عمود التاريخ في علامة التبويب 1
إنشاء فهرس iDate ON Tab1 ([التاريخ])؛
بعد الانتهاء، يتم عرض سمة فهرس التاريخ للحقل في ACCESS كـ - نعم (توجد تكرارات).
تقوم العبارة التالية بإنشاء فهرس غير قابل للتكرار في عمود الاسم في علامة التبويب 1
إنشاء فهرس فريد iName ON Tab1 (الاسم)؛
بعد الانتهاء، يتم عرض سمة الفهرس لاسم الحقل في ACCESS كـ - نعم (بدون تكرار).
العبارة التالية تحذف الفهرسين اللذين تم إنشاؤهما للتو
إسقاط مؤشر iDate على Tab1؛
قم بإسقاط اسم الفهرس على علامة التبويب 1؛
مقارنة عبارات ACCESS وUPDATE في SQLSERVER:
عبارة UPDATE لتحديث جداول متعددة في SQLSERVER:
تحديث علامة التبويب 1
SET a.Name = b.Name
من علامة التبويب 1 أ، علامة التبويب 2 ب
حيث a.ID = b.ID؛
يجب أن تكون عبارة SQL بنفس الوظيفة في ACCESS
تحديث علامة التبويب 1 أ، علامة التبويب 2 ب
SET a.Name = b.Name
حيث a.ID = b.ID؛
وهذا يعني أن عبارة UPDATE في ACCESS لا تحتوي على عبارة FROM، ويتم سرد كافة الجداول المشار إليها بعد الكلمة الأساسية UPDATE.
في المثال أعلاه، إذا لم يكن Tab2 جدولاً، بل استعلام، على سبيل المثال:
تحديث علامة التبويب 1 أ، (حدد المعرف، الاسم من علامة التبويب 2) ب
SET a.Name = b.Name
حيث a.ID = b.ID؛
الوصول إلى عدة قواعد بيانات ACCESS مختلفة - استخدم جملة In في SQL:
حدد a.*,b.* من علامة التبويب 1 a,Tab2 b في 'db2.mdb' حيث a.ID=b.ID;
تستعلم عبارة SQL أعلاه عن كافة السجلات المرتبطة بـ Tab2 في Tab1 وdb2.mdb (في المجلد الحالي) في قاعدة البيانات الحالية.
العيوب - لا يمكن أن تحتوي قواعد البيانات الخارجية على كلمات مرور.
الملحق: رأيت رد ugvanxk في إحدى المشاركات ويمكنني استخدامه
حدد * من [c:/aa/a.mdb;pwd=1111].table1;
تم اجتياز اختبار ACCESS XP
الوصول إلى مصادر بيانات ODBC الأخرى في ACCESS
يستعلم المثال التالي عن البيانات الموجودة في SQLSERVER في ACCESS
اختر * من علامة التبويب 1 في [ODBC]
[ODBC؛ برنامج التشغيل = SQL Server؛ UID = sa؛ PWD =؛ الخادم = 127.0.0.1؛ قاعدة البيانات = العرض التوضيحي؛]
المعلمات الكاملة لخاصية اتصال مصدر البيانات الخارجية هي:
[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]
DRIVER=يمكن العثور على برنامج التشغيل في السجل
HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/
وجدت في
لاستيراد البيانات بين قواعد البيانات غير المتجانسة، يرجى الرجوع إلى Blue Blood Sword
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
يدعم ACCESS الاستعلامات الفرعية
يدعم ACCESS الصلات الخارجية، ولكنه لا يتضمن الصلات الخارجية الكاملة إذا كانت مدعومة.
الانضمام الأيسر أو الانضمام الأيمن
ولكن غير معتمد
الانضمام الخارجي الكامل أو الانضمام الكامل
الاستعلام عن التاريخ في ACCESS
ملاحظة: فاصل التاريخ والوقت في ACCESS هو # بدلاً من علامات الاقتباس
حدد * من علامة التبويب 1 حيث [التاريخ]>#2002-1-1#;
في دلفي أستخدم هذا
SQL.إضافة (تنسيق (
'اختر * من علامة التبويب 1 حيث [التاريخ]>#%s#;',
[DateToStr(Date)]));
يمكن فصل السلاسل النصية في ACCESS بعلامتي اقتباس مزدوجتين، لكن SQLSERVER لا يتعرف عليها، لذا لتسهيل الترحيل والتوافق،
يوصى باستخدام علامات الاقتباس المفردة كمحددات للسلسلة.