الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحزيم برنامج دلفي قواعد بيانات مربوط مع اكسس Access

بدأه khalilsoft في 27 يوليو 2009 · 2 رد · 2,718 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السادة الافاضل

السلام عليكــم ورحمـة الله وبركاتــه ،،

مشكلتي في عملية تحزيم البرنامج وتتلخص في التالي

طبعا كما هو متعارف عليه انه يتم ادراج اي عناصر أريدها تلحق بالمشروع يتم ادراجها تحت مسار المشروع في اي مجلد حتي تدخل ضمن المشروع وقت التحزيم . . . والحمد لله تم موضوع التحزيم بنجاح لكن المشكلة ان عملية التحزيم لا تأخذ في حسبانها ملف قاعده البيانات المرفقة تحت مسار المشروع وملف القاعدة Access وعند عمل install للبرنامج علي أي جهاز أخر تظهر لي رساله عن عدم العثور عن قاعدة البيانات كما في الصورة الموضحة

316773824.jpg

المطلوب مساعدتي في كيفية ادارج ملف قاعده البيانات مع البرنامج بحيث لو تم عمل install للبرنامج علي اي جهاز ترفق من ضمن الملفات المدرجة في programme file ويتم التعامل مع البرنامج علي اي جهاز يتم تنصيب البرنامج علية

شكراً

#2

سأرشدك إلى ثلاث طرق أيهما احببت أختر :

الأولى :

في الكونيكشن سترنق لا تضع إلا اسم القاعدة فقط لا تضع المسار كامل . ( بافتراض أن القاعدة في نفس مجلد البرنامج )

الثانية : باستخدام ملف UDL وربطه في الكود عند انشاء الاتصال .

ملفات UDL هي ملفات نصية تحفظ الكونكشن سترنق وينمكن إنشائها والتعديل عليها في أي وقت وبكل سهولة فقط كون ملف تكست وغير اسمه من new.txt إلى new.udl بعد ذلك سيصبح بإمكانك التحكم بهذا الملف فقط بالضغط عليه مرتين واختيار طريقة الربط المناسبة ومكانها .

بعد الانتهاء من هذه الخطوة يبقى ربط البرنامج بهذا الملف وتكون بالشكل التالي :

عند طلب الاتصال سواء عند انشاء الفورم او في اي مكان تريد استخدم الكود التالي :

 

procedure TData.DataModuleCreate(Sender: TObject);{ عند إنشاء فورم }
var


f:string;

begin


	  try
 Conn.Connected:=false;{conn اسم الادو كونكشن عندي }
 Conn.Close;
 f:='FILE NAME='+ExtractFilePath(Application.ExeName) + 'cnn.udl';{ اسم الملف udl ومكانه في نفس مجلد البرنامج }
	Conn.ConnectionString:=f;{تكوين عبارة الاتصال كاملة }
		 Conn.Connected:=true;
 Conn.Open;

		except
	on exception do
	begin
	 MessageDlg('لم يستطع البرنامج الاتصال بقاعدة البيانات', mtError, [mbOK], 0);
	 Conn.Connected :=false;
	 Application.Terminate;
	 end ;
	 end;


end;


end.

الطريقة الثالثة وهي مشابهة لهذه الطريقة ولكن بدون استخدام UDL

procedure TmainF.FormCreate(Sender: TObject);

 var
  path:string;

begin




	  path := extractFilepath(application.exename);



conn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+
path +'db.mdb;'+
'Mode=Share Deny None;Extended Properties="";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';
conn.Connected:=true;
#3

alswah

السلام عليكم اخي الفاضل

اشكرك من كل قلبي

جازاك الله خيرا الطريقة نجحت 100 بالمائة

شكرا جزيلا لك وادعوا الله ان يجعله في ميزان حسناتك

مواضيع مشابهة