لغة الدالفي delphi كل ما يتعلق بالدالفي و الباسكال

إضافة رد
قديم 01-01-2009, 03:17 PM
  #1
monarque
VIP_MEMBRE
مشرف سابق
 الصورة الرمزية monarque
 
تاريخ التسجيل: 01-12-2008
الدولة: بلد الله الواسع
المشاركات: 1,238
monarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداع
Flash ربط الـ MS SQL Server مع delphi باستخدام الـ BDE




توجد عدة طرق للتعامل مع الـ MS SQL مثل الـ ADO، الـ DBExpress و غيرها... و لكني شخصياً ما زلت احبذ الـ BDE لما بها من امكانيات و توافقية مع عدد كبير من قواعد البيانات. فعندما اقوم بتطوير منظومة عادةً ما آخذ بعين الاعتبار توافقية المنظومة مع عدد من قواعد البيانات و غالباً ما تكون الـ Oracle، الـ Interbase و الـ MSSQL... فمعظم الشركات لا تخرج من هذا الاطار لقواعد البيانات. فالـ BDE تعتبر خير اداة يمكن استخدامها بالمنظومة لتقوم بعملية الربط...

الـ BDE و الـ Alias.

ان اجمل ما يميز الـ BDE هي فكرة الـ Alias. فالـ Alias يعتبر الوسيط او الرابط ما بين البرنامج و قاعدة البيانات... بالطبع مروراً بالـ BDE.

فعندما نقوم بتطوير برنامج نتعامل عادةً مع الـ Alias بدون ان نهتم كثيراً بنوع قاعدة البيانات، فهنا نترك مهمة التخاطب مع قاعدة البيانات الى الـ BDE فهي تتمتع بالقدرة الكافية لهذه المهمة.

فالـ Alias هو ملف يحتوي على تعريفات خاصة بقاعدة البيانات المرغوب باستخدامها من قبل البرنامج، و بالطبع لكل نوع من قواعد البيانات يوجد تعريفات خاصة لها... فبهذا الملف يتمكن الـ BDE من معرفة نوع قاعدة البيانات المرغوب باستخدامها.

و الـ Alias نوعان، نوع دائم و هو ما يحفظ و ينشاء باستخدام الـ BDEManager او برمجياً و نوع مؤقت و هو غير مرئي من الـ BDEManager و هو ما يعرف باستخدام الـ TDatabase و هو يكون مؤقت و موجود بوجود البرنامج و ينتهي باقفل البرنامج.

كيف نبدأ

اولاً دعوني اوضح ان تطوير برنامج يتعامل مع قواعد بيانات MSSQL هي تقريباً تماماً كالتعامل مع قواعد بيانات بارادوكس او غيرها مع وجود فروق بسيطة، و الجيد ان اغلب هذه الفروق متوافقة مع كل انواع قواعد بيانات الـ RDBM مثل الـ Oracle، و الـ Interbase و غيرها.

لنبدأ تطوير البرنامج علينا اتباع الخطوات التالية:

1. إدراج DataModule الى المشروع.
2. إدراج TDatabase الى الـ DataModule.
3.

تعريف خصائص الـ TDatabase.

{عند تعريف الـ TDatabase تاتي خاصية استخدام الـ Alias بشكل مؤقت و هذه الطريقة افضلها بحيث تمكني من تغير الـ Alias اثناء عمل البرنامج، كما تمنع المستخدم من اللعب بخصائص الـ Alias حيث انه لا يستطيع ان يراها....}


تعريف خصائص الـ TDatabase

باستخدام محرر الخصائص (Object Inspector) قم بتعريف الخصائص التالية:


1.DatabaseName: Test (او اي اسم تختارونه)
2.DriverName: MSSQL
3.Name: MyProjectDB (او اي اسم تختارونه)



و من ثم يأتي دور تعريف الـ Params او بيانات الـ Alias و اسهل طريقة لذلك انقر نقرتان على كائن الـ TDatabase... ستظهر لك شاشة حوار (الرسم 1) تمكنك من إضافة تعريفاتك






الرسم 1

قم بالنقر على زر Defaults عندها ستلاحظ ان دلفي قامت بإضافت كل الخصائص المخصصة للـ MSSQL تلقائياً. فما عليك الى القيام ببعض التعديلات فقط و هي كالتالي:

1. Database Name: و هو اسم قاعدة البيانات
2. Server Name: اسم الخادم الذي يعمل من خلاله الـ MSSQL
3. User Name: اسم المستخدم بقاعدة البيانات و عادة تكون اسم المستخدم الخاصة بالمشرف
4. Password: كلمة المرور لقاعدة البيانات.

و من مجموعة الـ Options ابطل تفعيل خاصية الـ Login Prompt. فاذا كانت مفعلة سيظهر لك مربع الحوار الخاص باسم المستخدم و كلمة المرور من الدلفي... فهنا نكتفي بادراج اسم المستخدم و كلمة المرور برمجياً.

بعد ذلك سنستخدم قيمة الـ DataBaseName الخاصة بكائن الـ TDatabase في جميع كائنات الربط بقاعدة البيانات مثل الـ TTable، TQuery، TStoredProcedure... فبهذا عند تغير قيم تعريفات الـ Alias الخاصة بالـ TDatabase... ستتعرف هذه الكائنات الى التعريفات الجديدة تلقائياً.

و بهذا نكون انهينا الجزء الخاص بربط البرنامج بقاعدة بيانات الـ MSSQL و بقي علينا معرفة بعض النقاط عن كيفية التعامل مع قاعدة البيانات.

تعريف الـ Alias اثناء عمل البرنامج.

بما ان كل مستخدم لديه خادم بتعريفات خاصة... فلا يمكن ان نثبت مثلاً اسم الخادم الى Server1.... بل علينا تعريف هذه القيم اثناء عمل البرنامج. فعادة نقوم عند بدء البرنامج بتحميل ملف يحتوي على بيانات الـ Alias و من ثم نحاول فتح قاعدة البيانات، و اذا حصل خطء في التشغيل، فهذا يدل على وجود خطء بتعريفات الـ Alias و غالباً ما تكون اسم قاعدة البيانات، اسم الخادم، كلمة المرور او اسم المستخدم او قد يكون جهاز الخادم غير متوفر مثلاً ان يكون مقفل او يوجد عطل بالشبكة... فعندها نُظهر مربع حوار مخصص لتعريفات الـ Alias للمستخدم... كما يفضل إظهار رسالة للمستخدم بالمشاكل المتوقعة...

بالطبع عند التشغيل الاول للبرنامج لن يكون هناك ملف يحتوي على التعريفات... فهنا يكون علينا بناء البرنامج بحيث يفحص وجود الملف... و اذا لم يجده يقوم بفتح مربع حوار تعريف الـ Alias...

وفي كلى الحالتين السابقتين اذا ما اختار المستخدم زر الغاء من مربع حوار تعريف الـ Alias... علينا اقفال البرنامج... بحيث لا توجد فائدة من فتحه بدون التعريفات الصحيحة حيث لن نتمكن من الربط بقاعدة البيانات... هذا باستثناء ان البرنامج يستطيع العمل بدون استخدام قاعدة البيانات... مثلاً ان يكون يتعامل مع ملفات قواعد بيانات محلية كالبارادوكس او غيرها.


بعض التعريفات المهمة.

الكائن TTable
و يفضل عدم استخدامه بما ان الـ TQuery تقدم لنا ميزات افضل.

1. AutoRefresh=True
2. DatabaseName = Test

و باقي الخصائص حسب المعتاد

لن نتكلم عن استخدام هذا الكائن بما ان استخدامه مطابق تماماً للاستخدام العادي في حالات قواعد البيانات الاخرى.


الكائن TQuery

و يفضل عدم استخدامه بما ان الـ TQuery تقدم لنا ميزات افضل.

1. AutoRefresh=True
2. DatabaseName = Test

و باقي الخصائص حسب المعتاد...

عند استخدام الـ TQueryعلينا فهم الـ Updatable Query و الـ ReadOnly Query... فلا توجد خاصية لتحديد الطريقة... بل ذلك يعتمد على جملة الـ SQL Statement.... فأي جملة تحتوي حقول حسابية او تحتوي على حقول من اكثر من جدول فتعتبر ReadOnlyQuery...

فالـ UpdateableQuery تكون للجمل التي تحتوي حقول مباشر من جدول واحد فقط... هذا لا يعني اننا لا نستطيع استخدام جمل SQL تحتوي على حقول حسابية او حقول من عدة جداول... و لكنها تحتاج الى نوع خاص من التعامل سنتطرق اليه في هذه المقالة باذن الله.

فالـ UpdatableQuery هي التي تسمح لنا باضافة، تعديل او حذف اي سجل بالشكل المباشر و العادي مثل (Query1.Insert)... و هي غالباً نستخدمها في معظم النظام... و لكننا في بعض الاحيان نحتاج ان ننشئ جمل SQL مبنية على عدة جداول او حسابات و نحتاج خاصية التعديل، الحذف او الإضافة لها فهنا يأتي استخدام الكائن المسمى TUpdateSQL... حيث انه يربط بالـ TQuery و هو يقوم بعملية الحفظ و غيرها من العمليات عوضاً عن الـ TQuery...

كيفية استخدام الـ TQuery.


UpdatableQuery. يستخدم هذا الكائن في هذه الحالة كالمعتاد مثلاً في حالة إضافة سجل جديد

Query1.Insert
Query1Fld1.Value = Value;
Query1.Post

و في حال استخدامنا للـ DataAwareControls مثل الـ TDBEdit و هو ما يفضل استخدامه في شاشة الادخال و التعديل يكفي الامر Query1.Post

ReadOnlyQuery

في هذه الطريقة سنقوم باستخدام كائن إضافي و هو TUpdateSQL و هو الكائن الذي سيكون مسؤلاً عن عمليات الـ TQuery...

1. قم بإضافة كائن TUpdateSQL الى المشروع
2. من خصائص الـ TQuery عرف خاصية UpdateObject (اخر خاصية) الى اسم الكائن TUpdateSQL... في الاصل ستظهر لك قائمة منسدلة، فقط قم باختيار الـ TUpdateSQL...
3. بعد ذلك انقر مقرتان على الكائن TUpdateSQL... سيظهر لك مربع حوار لتعريف جمل الـ SQL المرغوب باستخدامها... (الرسم 2)






الرسم 2

4. انقر على زر Get Table Fields و من ثم على زر Select Primary Keys... في حال لم يتم تحديد حقل الـ Primary تلقائياً او في حال كنت ترغب باستخدام حقول اخرى لشرط الـ SQL فقط قم باختيارهم من قائمة الـ Key Fields... بعدها انقر على زر الـ Generate SQL... فسيقوم هذا الكائن بانشاء جمل الـ SQL لك تلقائياً (الرسم 3)





الرسم 3

اختيار حقول الـ Primary Key هي لاستخدام شرط جملة الـ SQL و تستخدم عند عمليتي الحذف و التعديل و ذلك لتطبيق العملية على الحقول/الحقل الذي يتوافق مع الشروط... عادةً لن تحتاج الى اكثر من الـ Primary Key.... فهو حقل فهرسي قيمته غير متكررة.

و بهذا نكون قد انجزنا معظم العملية و لكن بقي علينا امر مهم جداً لجعل هذه الطريقة تنجح... فاستخدام امر Query1.Post لن يعمل هنا بشكل منفرد...

حيث ان الـ TQuery تعرفة على جملة الـ SQL بانها ReadOnlyQuery فتظهر خطأ عند استخدامك لامر Query1.Post... فعلينا تجنب هذه المشكلة بجعل خاصية CachedUpdates الى True.... و لكن ان لم تكن تحتاج هذه الخاصية... فلا تعرفها من شاشة الخصائص... بل سنستخدم كود خاص لذلك... و لكن في حال كنت ترغب بالابقاء على هذه الخاصية الى True... فما عليك الى استخدام اوامر الـ TQuery كالمعتاد... و لا تنسى امر ApplyUpdates و CommitUpdates لتطبيق الامر على السجل في جدول قاعدة البيانات... فاوامر الـ TQuery بهذه الحالة تكون مؤقتة و محفوظة بالذاكرة... و افضل مكان لاستخدام امر ApplyUpdates و CommitUpdates هي في حدثي الـ AfterDelete و AfterPost... فهذين الحدثين لا يعملى الى بعد عملية الحفظ/الحذف الناجحة....

اما الاكواد الخاصة و اماكن كتابتها في حال كانت خاصية الـ CachedUpdates تساوي الى False هي كلاتالي:

لعملية الحذف:



Query1.CachedUpdates := True;
Query1.Delete;
Query1.ApplyUpdates;
Query1.CommitUpdates;
Query1.CachedUpdates := False;


و يكتب هذا الكود في حدث OnClick الخاص بزر الحذف

لعملية الحفظ (إضافة/تعديل)


عند حدث OnNewRecord و BeforeEdit اضف الكود التالي:



Query1.CachedUpdates := True;


عند حدث AfterPost اضف الكود التالي:



Query1.ApplyUpdates;
Query1.CommitUpdates;
Query1.CachedUpdates := False;


عند حدث OnPostError اضف الكود التالي:



Query1.CachedUpdates := False;


فبهذا الحدث اذا ما حصل خطأ اثناء عملية الحفظ سنقوم بارجاع قيمة الـ CachedUpdates الى الـ False....

اما ما تبقى من برمجة فالتعامل معه تماماً كاي برنامج قواعد بيانات عادي...

اخيراً ليس اخراً... لا تنسى تحديد خاصية Connected الخاصة بالـ TDatabase الى False قبل انهاء البرنامج....

و هذا كل شيئ متمنياً من الله العزيز القدير ان ينال اعجابكم.

لتقييم الموضوع


__________________
L'accès est mieux que la paresse

ليس المهم أن تشارك بألف موضوع ... بل المهم أن تنشأ موضوع يشارك فيه ألف عضو
monarque غير متواجد حالياً  
رد مع اقتباس
قديم 01-01-2009, 08:32 PM
  #2
lala_ing
VIP_MEMBRE
 الصورة الرمزية lala_ing
 
La spécialité: Autres
اخرى ( جامعة عربية او اجنبية )
تاريخ التسجيل: 13-07-2008
الدولة: الجزائر
المشاركات: 133
lala_ing عضو يستحق التميز
افتراضي

__________________
lala_ing غير متواجد حالياً  
رد مع اقتباس
قديم 01-01-2009, 08:40 PM
  #3
monarque
VIP_MEMBRE
مشرف سابق
 الصورة الرمزية monarque
 
تاريخ التسجيل: 01-12-2008
الدولة: بلد الله الواسع
المشاركات: 1,238
monarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداعmonarque عضو محترف الابداع
افتراضي

Merci lala bon photo
merci
__________________
L'accès est mieux que la paresse

ليس المهم أن تشارك بألف موضوع ... بل المهم أن تنشأ موضوع يشارك فيه ألف عضو
monarque غير متواجد حالياً  
رد مع اقتباس
قديم 26-04-2010, 08:08 PM
  #4
rachidgh
 
La spécialité: Autres
المدرسة الوطنية العليا للإعلام الآلي
تاريخ التسجيل: 22-09-2008
الدولة: Alg
المشاركات: 2
rachidgh عضو يستحق التميز
افتراضي رد: ربط الـ MS SQL Server مع delphi باستخدام الـ BDE

Merci Monarque .rani habe coure ta3 My Dac et My SQL plz
et merci
rachidgh غير متواجد حالياً  
رد مع اقتباس
قديم 30-04-2010, 04:45 PM
  #5
townuser
 
La spécialité: sciences d'information & communication
مؤسسة تعليم ثانوي ( ثانوية)
تاريخ التسجيل: 19-04-2010
المشاركات: 1
townuser عضو يستحق التميز
افتراضي رد: ربط الـ MS SQL Server مع delphi باستخدام الـ BDE

thanks man it was very helpful
townuser غير متواجد حالياً  
رد مع اقتباس
قديم 06-05-2010, 04:56 PM
  #6
مامي
 الصورة الرمزية مامي
 
تاريخ التسجيل: 01-12-2007
المشاركات: 1,140
مامي عضو مبدعمامي عضو مبدعمامي عضو مبدعمامي عضو مبدعمامي عضو مبدع
افتراضي رد: ربط الـ MS SQL Server مع delphi باستخدام الـ BDE

__________________
إذاعة الصحبة الصالحة :

لا تبخل نفسك بالدخول :
مامي غير متواجد حالياً  
رد مع اقتباس
قديم 12-05-2010, 09:08 AM
  #7
mead.forum
 
La spécialité: Autres
اخرى ( جامعة عربية او اجنبية )
تاريخ التسجيل: 08-05-2010
المشاركات: 4
mead.forum عضو يستحق التميز
افتراضي رد: ربط الـ MS SQL Server مع delphi باستخدام الـ BDE

Salam alikome mon frere c'ete vraiment formidabl ton tutorial et si vous avez un exemple concret (un petit projet
de monstration a telcharger ) ça sera parfait
may allah bless u brother
mead.forum غير متواجد حالياً  
رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
delphi, باستخدام, server

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
Castalia2011_1.7 for delphi 5 to delphi xe annabil23 لغة الدالفي delphi 7 18-12-2012 04:53 AM
Delphi 2010 or delphi 2011 info_megue لغة الدالفي delphi 1 29-11-2010 03:45 PM
Mini projet par sql server et delphi مامي منتــدى البرمجــة العـــام 5 07-11-2010 04:17 PM
إنشاء قاعدة بيانات باستخدام MS SQL Server Management Studio monarque برمجة المواقع وقواعد البيانات 14 30-04-2010 04:59 PM
ابحث في المنتدى باستخدام جوجل المهندس تطوير المواقع و المنتديات 1 02-11-2008 04:44 PM


الساعة الآن 07:56 PM.