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

نسخة كاملة : جعل الربط ديناميكي في الإتصال بقاعدة البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم






أواجه مشكلة في جعل الربط ديناميكي في الإتصال بقاعدة بيانات Access مع Delphi

حيث لدي في ConnectionString ما يلي

PHP كود :
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=Base\DB.mdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";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="";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; 


كما تلاحظون

Data Source=Base\DB.mdb

ملف قاعدة البيانات DB.mdb وضعته داخل مجلد يحمل إسم Base و الملف التنفيذي في نفس مسار هذا الأخير ( مجلد يحمل إسم Base ) لكن يأتيني خطأ في الإتصال

و لما أغير Data Source بالتالي

Data Source=D:\Program Files\Test\Base\DB.mdb

و هو مسار القاعدة الثابت يتصل البرنامج بدون مشاكل

لكني أود جعل المسار ديناميكي ، و شكراً للقائمين على هذا المنتدى الرائع
وعليكم السلام و رحمة الله

Data Source=
كود :
ExtractFilePath(Application.ExeName)+\Base\DB.mdb
بالتوفيق
وعليكم السلام
يمكن تشغيل البرنامج مع استرجاع المسار إليه (أضف في الملف dpr)
PHP كود :
{$R *.res}

begin
  SetCurrentDir
(ParamStr(0));//uses SysUtils
  
Application.Initialize;
  
Application.CreateForm(TForm1, Form1); 
وقد يتغير أثناء العمل بالبرنامج (عند استخدام TCommonDialog مثلا)، حينها ينبغي استدعاء SetCurrentDir ثانية...
بالتوفيق.
Lam.Abdeldjalil كتب :وعليكم السلام و رحمة الله

Data Source=
كود :
ExtractFilePath(Application.ExeName)+\Base\DB.mdb
بالتوفيق

شكراً على الرد أخي

لكن الطريقة لم تنجح ! أضفت ExtractFilePath(Application.ExeName) كما كتبتها لكن يأتيني خطأ
kachwahed كتب :وعليكم السلام
يمكن تشغيل البرنامج مع استرجاع المسار إليه (أضف في الملف dpr)
PHP كود :
{$r *.res}

begin
  setcurrentdir
(paramstr(0));//uses sysutils
  
application.initialize;
  
application.createform(tform1, form1); 
وقد يتغير أثناء العمل بالبرنامج (عند استخدام tcommondialog مثلا)، حينها ينبغي استدعاء setcurrentdir ثانية...
بالتوفيق.


لم أفهم جيداً ممكن توضح أكثر جزاك الله خيراً
السلام عليكم
استخدم ال odbc
السلام عليكم

إقتباس : لكن الطريقة لم تنجح ! أضفت ExtractFilePath(Application.ExeName) كما كتبتها لكن يأتيني خطأ
أين أضفتها ؟
كود :
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'\Base\DB.mdb;Persist Security Info=False';
بالتوفيق
وعليكم السلام و رحمة الله

إقتباس : استخدم ال odbc
هو يستخدم الـ Ado مع Access من الأفضل إستخدام OleDb ـ Smile
Lam.Abdeldjalil كتب :السلام عليكم

أين أضفتها ؟


هنا

PHP كود :
http://i.imgur.com/Z2UkI.png 

إذا كان غلط دلني أين أضيفه ؟
السلام عليكم

حين ذكرت ' ديناميكيا ' حسبتها برمجيا Smile

تابع هذا الرابط
http://www.delphi4arab.net/forum/showthr...p?tid=1572

على كل ، برمجيا ما عليك إلا إضافة سطر واحد فقط قبل الإتصال :
كود :
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'\Base\DB.mdb;Persist Security Info=False'; ADOConnection1.Connected:=true;
بالتوفيق
الصفحات : 1 2