1. تشغيل قاعدة بيانات الوصول في دلفي (إنشاء ملف .mdb، ضغط قاعدة البيانات)
تم اختبار التعليمة البرمجية التالية تحت win2k وd6 وmdac2.6.
يعمل البرنامج المترجم بنجاح في الإصدار الثاني من نظام Win98 دون الوصول إلى البيئة.
// قبل استخدام comobj,activex
// قم بتعريف سلسلة الاتصال
ثابت
سلسلة الاتصال = 'provider=microsoft.jet.oledb.4.0;مصدر البيانات=%s;'
+'jet oledb:كلمة مرور قاعدة البيانات=%s;';
//================================================================================================ ==========================================================
// الإجراء: gettemppathfilename
// المؤلف: ysai
// التاريخ : 27-01-2003
// الوسائط: (لا شيء)
// النتيجة: سلسلة
//================================================================================================ ==========================================================
الدالة gettemppathfilename():string;
// احصل على اسم الملف المؤقت
فار
Spath,sfile&:array [0..254] من char;
يبدأ
gettemppath(254,spath);
gettempfilename(spath,'~sm',0,sfile);
النتيجة:=ملف;
deletefile(pchar(result));
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: إنشاء ملف وصول
// المؤلف: ysai
// التاريخ : 27-01-2003
// الوسائط: اسم الملف: سلسلة؛ كلمة المرور: سلسلة = ''
// النتيجة: منطقية
//================================================================================================ ==========================================================
وظيفة createaccessfile(filename:string;password:string=''):boolean;
// إنشاء ملف وصول، يفشل إذا كان الملف موجودًا
فار
اسم ملف الجذعية: سلسلة؛
كتالوج:أوليفاريانت؛
يبدأ
Stempfilename:=gettemppathfilename;
يحاول
vcatalog:=createoleobject('adox.catalog');
vcatalog.create(format(connectionstring,[stempfilename,password]));
result:=copyfile(pchar(stempfilename),pchar(filename),true);
deletefile(stempfilename);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: قاعدة البيانات المدمجة
// المؤلف: ysai
// التاريخ : 27-01-2003
// الوسائط: اسم الملف، كلمة المرور: سلسلة
// النتيجة: منطقية
//================================================================================================ =========================================================
وظيفة قاعدة البيانات المدمجة (اسم الملف، كلمة المرور: سلسلة): منطقية؛
// ضغط قاعدة البيانات وإصلاحها والكتابة فوق الملفات المصدر
فار
اسم ملف الجذعية: سلسلة؛
vje:olevariant;
يبدأ
Stempfilename:=gettemppathfilename;
يحاول
vje:=createoleobject('jro.jetengine');
vje.compactdatabase(format(connectionstring,[afilename,apassword]),
format(sconnectionstring,[stempfilename,apassword]));
result:=copyfile(pchar(stempfilename),pchar(afilename),false);
deletefile(stempfilename);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
//================================================================================================ ==========================================================
// الإجراء: تم تغيير كلمة مرور قاعدة البيانات
// المؤلف: ysai
// التاريخ : 27-01-2003
// الوسائط: afilename,aoldpassword,anewpassword:string
// النتيجة: منطقية
//================================================================================================ ==========================================================
تم تغيير الوظيفة databasepassword(afilename,aoldpassword,anewpassword:string):boolean;
// تعديل كلمة مرور قاعدة بيانات الوصول
فار
اسم ملف الجذعية: سلسلة؛
vje:olevariant;
يبدأ
Stempfilename:=gettemppathfilename;
يحاول
vje:=createoleobject('jro.jetengine');
vje.compactdatabase(format(connectionstring,[afilename,aoldpassword]),
format(sconnectionstring,[stempfilename,anewpassword]));
result:=copyfile(pchar(stempfilename),pchar(afilename),false);
deletefile(stempfilename);
يستثني
النتيجة:=خطأ؛
نهاية؛
نهاية؛
2. الأشياء التي يجب أن تنتبه إليها وبعض النصائح عند استخدام عبارات SQL في Access
اجتازت عبارة SQL التالية الاختبار في استعلام Access XP
إنشاء جدول:
إنشاء علامة تبويب الجدول 1 (
عداد الهوية,
سلسلة الاسم,
عدد صحيح للعمر,
[التاريخ] التاريخ والوقت)؛
مهارة:
يتم الإعلان عن حقول الزيادة التلقائية باستخدام العداد.
يتم وضع الحقول التي تكون أسماء حقولها عبارة عن كلمات أساسية بين قوسين مربعين []، وتكون الأرقام مقبولة أيضًا كأسماء حقول.
إنشاء فهرس:
تقوم العبارة التالية بإنشاء فهرس قابل للتكرار في عمود التاريخ في علامة التبويب 1
إنشاء معرف الفهرس على علامة التبويب 1 ([التاريخ])؛
بعد الانتهاء، يتم عرض سمة فهرس التاريخ للحقل قيد الوصول كـ - نعم (توجد نسخ مكررة).
تقوم العبارة التالية بإنشاء فهرس غير قابل للتكرار في عمود الاسم في علامة التبويب 1
إنشاء اسم فهرس فريد في علامة التبويب 1 (الاسم)؛
بعد الانتهاء، يتم عرض سمة الفهرس لاسم الحقل الموجود في الوصول كـ - نعم (بدون تكرار).
العبارة التالية تحذف الفهرسين اللذين تم إنشاؤهما للتو
قم بإسقاط معرف الفهرس على علامة التبويب 1؛
إسقاط اسم الفهرس على علامة التبويب 1؛
مقارنة بيانات التحديث في Access وsqlserver:
بيان التحديث لتحديث جداول متعددة في sqlserver:
تحديث علامة التبويب 1
تعيين a.name = b.name
من علامة التبويب 1 أ، علامة التبويب 2 ب
حيث a.id = b.id؛
يجب أن تكون عبارة SQL مع نفس الوظيفة في الوصول
تحديث علامة التبويب 1 أ، علامة التبويب 2 ب
تعيين a.name = b.name
حيث a.id = b.id؛
وهذا يعني أن بيان التحديث الموجود في الوصول لا يحتوي على عبارة من، ويتم إدراج كافة الجداول المرجعية بعد الكلمة الأساسية للتحديث.
في المثال أعلاه، إذا كان tab2 ليس جدولاً، بل استعلام، على سبيل المثال:
تحديث علامة التبويب 1 أ، (حدد المعرف، الاسم من علامة التبويب 2) ب
تعيين a.name = b.name
حيث a.id = b.id؛
الوصول إلى قواعد بيانات وصول مختلفة متعددة - استخدم جملة in في SQL:
حدد a.*,b.* من tab1 a,tab2 b في 'db2.mdb' حيث a.id=b.id;
تستعلم عبارة SQL أعلاه عن كافة السجلات المرتبطة بـ tab2 في tab1 وdb2.mdb (في المجلد الحالي) في قاعدة البيانات الحالية.
العيوب - لا يمكن أن تحتوي قواعد البيانات الخارجية على كلمات مرور.
الملحق: رأيت رد ugvanxk في إحدى المشاركات ويمكنني استخدامه
حدد * من [c:/aa/a.mdb;pwd=1111].table1;
تم اجتياز اختبار الوصول إلى XP
الوصول إلى مصادر بيانات odbc الأخرى في الوصول
المثال التالي يستعلم عن البيانات في sqlserver في الوصول
حدد * من علامة التبويب 1 في [odbc]
[odbc;driver=sql server;uid=sa;pwd=;server=127.0.0.1;database=demo;]
المعلمات الكاملة لخاصية اتصال مصدر البيانات الخارجية هي:
[odbc;driver=driver;server=server;database=database;uid=user;pwd=password;]
يمكن العثور على برنامج التشغيل = برنامج التشغيل في التسجيل
hkey_local_machine/software/odbc/odbcinst.ini/
وجدت في
لاستيراد البيانات بين قواعد البيانات غير المتجانسة، يرجى الرجوع إلى Blue Blood Sword
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
الوصول يدعم الاستعلامات الفرعية
يدعم الوصول الصلات الخارجية، لكنه لا يتضمن الصلات الخارجية الكاملة، إذا كان مدعومًا
الانضمام الأيسر أو الانضمام الأيمن
ولكن غير معتمد
الانضمام الخارجي الكامل أو الانضمام الكامل
الاستعلام عن التاريخ في الوصول
ملاحظة: فاصل التاريخ والوقت في الوصول هو # بدلاً من علامات الاقتباس
حدد * من علامة التبويب 1 حيث [التاريخ]>#2002-1-1#؛
في دلفي أستخدم هذا
إضافة (تنسيق (
'اختر * من علامة التبويب 1 حيث [التاريخ]>#%s#;',
[datetostr(التاريخ)]));
يمكن فصل السلاسل الموجودة في الوصول بعلامات اقتباس مزدوجة، لكن SQLServer لا يتعرف عليها، لذلك لتسهيل الترحيل والتوافق،
يوصى باستخدام علامات الاقتباس المفردة كمحددات للسلسلة.