العودة   منتديات عشاق السودان > منتديات الكمبيوتر والإنترنت > منتدى البرمجة
التسجيل مستضيف الصور التعليمـــات قائمة الأعضاء التقويم اجعل كافة المشاركات مقروءة

مشاهدة نتائج الإستفتاء: هل الموضوع ذو فائدة
ذو فائدة كبيرة 1 100.00%
ذو فائدة ولكن يحتاج الى مزيد من التنسيق والاعداد 0 0%
اختار موضوع افضل 0 0%
لا يشكل اى فائدة 0 0%
استفتاء متعدد الإختيارات. المصوتون: 1. أنت لم تصوت في هذا الإستفتاء

رد
 
LinkBack أدوات الموضوع طرق مشاهدة الموضوع
قديم 29-06-2005, 18:31   رقم المشاركة : 1 (permalink)
معلومات العضو
demon
عضو مميز
 
الصورة الرمزية demon
 

 

 
إحصائية العضو








demon غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 20
demon is on a distinguished road

 

 

دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

لان قواعد البيانات Database اساس التخزين والبرمجة عموماً تعتمد على التخزين وقواعد البيانات ومن اجل ايصال الافكار الحايوبية يجر اولا شرح كيفية عمل قواعد البيانات وانشاء الله سيكون هناك دروس متتالية تشرح بالتفصيل كيفية انشاء وعمل قواعد البيانات
بالتزامن مع شرح لكيفية ربط قواعد البيانات مع لغات البرمجة المختلفة ، وقد اخترت لغة دلفى لتكون حقل التجارب لدينا استعملة دلفى الاصدارة الـ6 او الـ7 وبرنامج Sql Server
وبالطبع نبداً بشرح بسيط وخطوات سابته ،، يجب ان يتخللها اسئلتكم لتعم الفائدة للجميع،، مع العلم ان بعض اجزاء الدرس منقولة للاستفادة العمة ،،،


التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ 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 و غيرها.

لنبدأ تطوير البرنامج علينا اتباع الخطوات التالية:
إدراج DataModule الى المشروع.
إدراج TDatabase الى الـ DataModule.
تعريف خصائص الـ TDatabase.

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


تعريف خصائص الـ TDatabase
باستخدام محرر الخصائص (Object Inspector) قم بتعريف الخصائص التالية:
DatabaseName: Test (او اي اسم تختارونه)

DriverName: MSSQL

Name: MyProjectDB (او اي اسم تختارونه)

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

قم بالنقر على زر Defaults عندها ستلاحظ ان دلفي قامت بإضافت كل الخصائص المخصصة للـ MSSQL تلقائياً. فما عليك الى القيام ببعض التعديلات فقط و هي كالتالي:
Database Name: و هو اسم قاعدة البيانات
Server Name: اسم الخادم الذي يعمل من خلاله الـ MSSQL
User Name: اسم المستخدم بقاعدة البيانات و عادة تكون اسم المستخدم الخاصة بالمشرف
Password: كلمة المرور لقاعدة البيانات.
و من مجموعة الـ Options ابطل تفعيل خاصية الـ Login Prompt. فاذا كانت مفعلة سيظهر لك مربع الحوار الخاص باسم المستخدم و كلمة المرور من الدلفي... فهنا نكتفي بادراج اسم المستخدم و كلمة المرور برمجياً.

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

و بهذا نكون انهينا الجزء الخاص بربط البرنامج بقاعدة بيانات الـ MSSQL و بقي علينا معرفة بعض النقاط عن كيفية التعامل مع قاعدة البيانات.
demon غير متواجد حالياً   رد مع اقتباس
قديم 30-06-2005, 13:25   رقم المشاركة : 2 (permalink)
معلومات العضو
demon
عضو مميز
 
الصورة الرمزية demon
 

 

 
إحصائية العضو








demon غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 20
demon is on a distinguished road

 

 

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

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

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

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

الكائن TTable
و يفضل عدم استخدامه بما ان الـ TQuery تقدم لنا ميزات افضل.
AutoRefresh=True
DatabaseName = Test
و باقي الخصائص حسب المعتاد

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



الكائن TQuery
و يفضل عدم استخدامه بما ان الـ TQuery تقدم لنا ميزات افضل.
AutoRefresh=True
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...
قم بإضافة كائن TUpdateSQL الى المشروع
من خصائص الـ TQuery عرف خاصية UpdateObject (اخر خاصية) الى اسم الكائن TUpdateSQL... في الاصل ستظهر لك قائمة منسدلة، فقط قم باختيار الـ TUpdateSQL...
بعد ذلك انقر مقرتان على الكائن TUpdateSQL... سيظهر لك مربع حوار لتعريف جمل الـ SQL المرغوب باستخدامها... (الرسم 2)

الرسم 2



انقر على زر 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 قبل انهاء البرنامج....

وده اول خطوه وحا نتواصل باذن الله تعالى.
demon غير متواجد حالياً   رد مع اقتباس
قديم 30-06-2005, 14:09   رقم المشاركة : 3 (permalink)
معلومات العضو
demon
عضو مميز
 
الصورة الرمزية demon
 

 

 
إحصائية العضو








demon غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 20
demon is on a distinguished road

 

 

مثال على الدرس الاول

حمل الان مثال على الدرس الاول
الملفات المرفقة
نوع الملف: zip Delphi and MSSQL.zip‏ (20.4 كيلوبايت, المشاهدات 22)
demon غير متواجد حالياً   رد مع اقتباس
قديم 30-06-2005, 16:16   رقم المشاركة : 4 (permalink)
معلومات العضو
طارق
المشرف العام
 
الصورة الرمزية طارق
 

 

 
إحصائية العضو









طارق غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 297
طارق is a jewel in the roughطارق is a jewel in the roughطارق is a jewel in the rough

 

 

عزيزي ديمون اشكرك على رائعتك في الدرس الاول من دروس .. بيئة البيانات والتعامل
معها ... وايضا من خلال تنمية وتطوير فكرة قواعد البيانات لكل المبرمجين ...
ننتظر منك التقديم اكثر واكثر ....

التوقيع


سبحان الله وبحمده .. سبحان الله العظيم ..

ربنا آتنا في الدنيا حسنه وفي الآخرة حسنه وقنا عذاب النار
....
اللهم لك الحمد والشكر كما ينبغي لجلال وجهك وعظيم سلطانك
طارق غير متواجد حالياً   رد مع اقتباس
قديم 29-08-2007, 20:47   رقم المشاركة : 5 (permalink)
معلومات العضو
DAWE2006
عضو جديد
 
إحصائية العضو








DAWE2006 غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
DAWE2006 is on a distinguished road

 

 

مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

شكرا شكرا
شكرا
شكرا
DAWE2006 غير متواجد حالياً   رد مع اقتباس
قديم 16-09-2007, 09:51   رقم المشاركة : 6 (permalink)
معلومات العضو
aboelmozn
عضو متواصل
 
إحصائية العضو








aboelmozn غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
aboelmozn is on a distinguished road

 

 

مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

موضوع جميل وشرح اجمل، وبالتوفيق في بقية الدروس

التوقيع


mazin2831@yahoo.com

aboelmozn غير متواجد حالياً   رد مع اقتباس
قديم 17-09-2007, 15:59   رقم المشاركة : 7 (permalink)
معلومات العضو
مهدي آسيهي
عضو جديد
 
إحصائية العضو








مهدي آسيهي غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 120
مهدي آسيهي will become famous soon enoughمهدي آسيهي will become famous soon enough

 

 

مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

موضوع جميل جدا جدا استفدنا منه

التوقيع

مهدي آسيهي غير متواجد حالياً   رد مع اقتباس
قديم 02-04-2008, 02:06   رقم المشاركة : 8 (permalink)
معلومات العضو
 
إحصائية العضو








أمكروس أمبارش غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
أمكروس أمبارش is on a distinguished road

 

 

مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

merc bazaf bazafi
أمكروس أمبارش غير متواجد حالياً   رد مع اقتباس
قديم 15-05-2008, 16:18   رقم المشاركة : 9 (permalink)
معلومات العضو
زهرة البنفسج
عضو جديد
 
إحصائية العضو








زهرة البنفسج غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
زهرة البنفسج is on a distinguished road

 

 

مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

مسااء الخير علي كل من يقدر التعب والاجتهااد ..

سلمت اخي ع تلك الدروس ..

واتمنا ان تواصل لاني احب ان اتعلم مثل هذا اشيااء..

فهي تفيد الفرد في تعامل مع الاشيااء ..





زهرة البنفسج
زهرة البنفسج غير متواجد حالياً   رد مع اقتباس
قديم 19-05-2008, 12:49   رقم المشاركة : 10 (permalink)
معلومات العضو
antour
عضو جديد
 
إحصائية العضو








antour غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
antour is on a distinguished road

 

 

Thumbs up مشاركة: دروس التعامل مع قواعد بيانات الـ MS SQL Server من خلال دلفي باستخدام الـ BDE.

مشكورييييييييييييييين جداً على الشرح الوافي يا demon
ومزيد من المشاركات الفعالة
وجزاك الله الف خير
antour غير متواجد حالياً