delphi4arab منتديات دلفي للعرب

نسخة كاملة : قاعدة بيانات اكسس دينامكية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته,
احبابي الكرام
اسال عن كيفية انشاء قاعدة بيانات  اكسس   محمية [b]بكلمة سر متصلة بدلفي دينامكيا حتى لا تقع مشاكل عند تغير المسار لقد وجدت هذا الكود ولكنني لم استطع الاتصال[/b]
كود :
procedure TForm1.FormCreate(Sender: TObject); var passwd:string; begin  passwd:='123456';  adoconnection1.ConnectionString:=     'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+     'Data Source='+extractfilepath(application.ExeName)+'\Test.mdb'+     ';Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+     'Jet OLEDB:Database Password='+passwd+     ';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+     'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='+passwd+     ';Jet OLEDB:Create System Database=False;'+     'Jet OLEDB:Encrypt Database=False;'+     'Jet OLEDB:Don''t Copy Locale on Compact=False;'+     'Jet OLEDB:Compact Without Replica Repair=False;'+     'Jet OLEDB:SFP=False;';  adoconnection1.Connected:=true;  AdoTable1.TableName:='Table1';  Adotable1.Active:=true; end;

مع الشرح الوافي جزاكم الله خيرا.
[quote pid='37255' dateline='1455852009']
السلام عليكم ورحمة الله وبركاته,
احبابي الكرام
اسال عن كيفية انشاء قاعدة بيانات  اكسس   محمية [b]بكلمة سر متصلة بدلفي دينامكيا حتى لا تقع مشاكل عند تغير المسار لقد وجدت هذا الكود ولكنني لم استطع الاتصال

[/b]
لك الحل بشرط وضع قاعدة البيانات جنب الملف التنفيذي للمشروع سوى كان في جهازك او اي جهاز اخر

إذا كنت تستخدم وحدة (MataModule) فعليك اضافة هذه المكتبه الى الوحده 
uses
 Vcl.Dialogs,
//من اجل ظهور رسالة فشل الاتصال 

// ملاحظة الاتصال هنا عن طريق friedac
ثم لك الخيار في اختيار اين تكتب اجراء الاتصال والمستحسن في حدث الانشاء كما هو موضح

procedure TDM.DataModuleCreate(Sender: TObject);
var
i:Byte;// من اجل الحلقة التكرارية
begin
 try
 with con1 do
  begin   Close;// هنا غلق الاتصال في حالة كان متصل
   with Params do
    begin
     Clear;
     Add('DriverID=MSAcc');// دريفر ادي
     Add('Database='+ExtractFilePath(ParamStr(0))+'\test.accdb');
     // ExtractFilePath(ParamStr(0)) من اجل جلب مسار الملف التنفيذي دون اسم الملف التنفيذي
  // '\test.accdb' هذه اسم قاعدة البيانات وامتدادها لا يهم سوى كانت بتنسيق 2003 او 2007 

     Add('Password=4444444');// اكتب كلمة السر للقاعدة ان وجدت او احذفه كاملا 
    end;
   Open;
  end;
  except  // حتى لا يتوقف البرنامج في حالة الفشل في الاتصال
   showmessage('لا يمكن الاتصال بقاعدة البينات ...؟؟؟');
   Exit;  //الخروج وعدم اكمال اوامر باقي الاجراء
 end;
 // هنا المشكله
  for I := 0 to ComponentCount - 1 do // من اجل استخدتم عدد المكونات على الفورم
   if (Components[i] is TFDTable) then // التحقق من نوع المكون اذا كان من نوع جدول ينفذ
   ( Components[i] as TFDTable).Open;// هنا يجلب اسم الجدول ثم يقوم بفتحه

 end;

// اتمنى اني اكون افدتك ويكون شرحي وافي 
ولله الحمد من قبل ومن بعد
السلام عليكم ورحمة الله وبركاته

[/quote]

[attachment=3182]
احسن الله عليك اخي السوفي
انا استعمل مكونات ADO هذا ما احسنه الى الان
رجائي النظر في الكود الذي كتبته و ان امكن مثال صغير من اجل تطبيقه على الوجه الاحسن.
شكرا جزيلا
في المرفقات مثال عن اتصال بقاعدة بيانات اسس برمجيا ولن يظر خطا عند التنفيد كما في الصورة
[صورة: ?f2ee924e6d2efb0ae3944b7e99acc8cbo.jpg]
المساعدة يا اساتذة من فضلكم
جرب هذا أخي.
أشكرك كثيرا أخي

PLANSHARP أحسن الله اليك.

هذا ما كنت اريد . هناك سؤال وحيد استاذ اذا خرجنا من البرنامج هل نغلق الاتصال بقاعدة البيانات ام نترك الكود اعلاه على حاله؟.
اشكرك مرة اخرى.
عند إغلاق البرنامج سيتم قطع الإتصال بقاعدة البيانات تلقائيا.
جزاك الله خيرا.