الفصل الخامس: ما وراء بيانات مجموعة البيانات...
حالة القسم الأول من البيانات
عند تطوير تطبيقات قواعد البيانات باستخدام دلفي وADO، يتم إنفاق معظم العمل على دراسة وثائق المساعدة الخاصة بمكون DataSet. . من أجل إنشاء برنامج يعتمد على ADO، توفر دلفي العديد من مكونات مجموعة البيانات: TAdoTable، TAdoQuery ومكونات أخرى. يتم استخدامها للحصول على البيانات وتقديمها وتعديلها من جداول أو استعلامات قاعدة البيانات.
في الفصل الخامس من هذا البرنامج التعليمي، سنلقي نظرة عملية على كيفية عرض البيانات وتصفحها وقراءتها من خلال تقديم بعض الخصائص والأحداث والأساليب الخاصة بمعظم مكونات مجموعة البيانات محل الاهتمام.
اختر، اضبط، اتصل واحصل على
الآن وبعد أن وصلت إلى الفصل الخامس، يجب أن تكون على دراية بالخطوات المطلوبة لإنشاء نموذج قاعدة بيانات. في الفصل الرابع قمنا بإنشاء نموذج بسيط لتصفح البيانات يدويًا. وسيستخدمه هذا الفصل لمواصلة المناقشة.
حتى الآن، استخدمنا مكونًا واحدًا فقط لمجموعة بيانات (ADO): TAdoTable. من المهم أن نفهم أن TADOQuery وTADODataSet (كمكونات مجموعة بيانات) يستخدمان نفس الإعدادات لنفس الأساليب والأحداث.
افتح يا سمسم؛ أغلق يا سمسم (افتح يا سمسم، أغلق يا سمسم)
إحدى الميزات المهمة جدًا لتطوير قاعدة بيانات دلفي هي أن دلفي تسمح لنا بمعالجة البيانات أثناء تصميم البرنامج. ربما تتذكر - في الفصل السابق، استخدمنا الخاصية النشطة لفتح اتصال نشط بالبيانات في وقت التصميم.
ليس من الصعب أن نفهم أنه قبل البدء في معالجة بيانات الجدول، يجب على البرنامج أولاً فتح مجموعة البيانات. لدى دلفي طريقتان لتحقيق هذه الوظيفة. الأول هو أنه كما رأينا، يمكن تعيين الخاصية النشطة على True في التصميم أو وقت التشغيل؛ والثاني هو أنه يمكننا استدعاء الأسلوب Open في وقت التشغيل. على سبيل المثال، قم بإضافة التعليمة البرمجية التالية إلى معالج الأحداث OnCreate للنموذج للحصول على بيانات مكون ADOTable.
ADOTable1.Open;
ملاحظة: يمكن لكل مجموعة بيانات ADO الوصول إلى بيانات قاعدة البيانات من خلال خاصية ConnectionString الخاصة بها أو مكون ADOConnection (وسلسلة الاتصال الخاصة بها). إذا كان مكون ADOTable1 متصلاً بمكون ADOConnection1 (يوصى بهذه الطريقة)، فسيؤدي فتح ADOTable إلى تنشيط مكون ADOConnection المقابل. يوفر ADOConnection حدثين سيتم تنفيذهما: OnWillConnect وOnConnectComplete.
يقوم الأسلوب Open بتعيين الخاصية Active إلى True ويقوم بتنشيط الاتصال. عندما ننتهي من الاتصال، يمكننا تعيين الخاصية النشطة على False أو استدعاء الأسلوب Close لقطع الاتصال. عادةً ما نقوم باستدعاء الأسلوب Close في معالج الأحداث OnClose الخاص بالنموذج:
ADOTable1.Close;
قبل المتابعة، من المهم معرفة أن العمل باستخدام أساليب وخصائص مجموعة البيانات يعتمد على معرفة الحالة الحالية للبيانات. ببساطة، تحدد خاصية الحالة لمجموعة البيانات الإجراءات التي يمكن أو لا يمكن أن تحدث على مجموعة البيانات في أي وقت.
كيف حالك؟
إذا كانت مجموعة البيانات مغلقة، فسوف تظهر حالة البيانات اتصالاً غير نشط. عند إغلاق الاتصال، لا يمكن تنفيذ أي عمليات أو سلوكيات أو أساليب على البيانات. عندما نفتح اتصالاً بمجموعة البيانات لأول مرة، تكون مجموعة البيانات في حالة التصفح الافتراضية. يجب أن تعرف دائمًا حالة بياناتك. على سبيل المثال، عندما نقوم بتوصيل مجموعة بيانات بـ DBGrid، يمكن للمستخدم رؤية مجموعة البيانات الأساسية (أو مجموعة السجلات)، ولكن إذا أراد تغيير بعض البيانات، فيجب عليه تعيين الحالة على تحرير.
عندما يقوم برنامج ما بمعالجة البيانات، من المهم أن نفهم أن حالة مجموعة البيانات تتغير باستمرار. على سبيل المثال، عند تصفح البيانات في DBGrid (حالة التصفح)، يبدأ المستخدم في تحرير السجلات، وستتغير الحالة تلقائيًا إلى تحرير. بالطبع، هذا هو سلوكهم الافتراضي عند تعيين خاصية AutoEdit لعناصر التحكم في تصور البيانات (DBGrid، DBEdit) على True.
ولكن كيف نحصل على الوضع؟ لا يحتوي ADOTable (ولا أي مكون DataSet آخر) على مشغلات للتعامل مع تغييرات الحالة.
حسنًا، دعنا نلقي نظرة: بالنسبة لكل مكون من مكونات DataSet، نستخدم عادةً مكون DataSource لتقديم اتصال بواحد أو أكثر من عناصر تحكم تصور البيانات. هذا كل شيء.
يحتوي كل مكون مصدر بيانات على حدث OnStateChange، والذي يتم تشغيله عندما تتغير حالة مجموعة البيانات الأساسية. ضع التعليمة البرمجية التالية في معالج الأحداث OnStateChange لعرض الحالة الحالية لمكون مجموعة بيانات ADOTable1 باستخدام عنوان النموذج:
PROcedure TForm1.DataSource1StateChange(Sender: TObject);
فار دي إس: سلسلة ؛
يبدأ
حالة ADOTable1.State
dsInactive: ds:='مغلق';
dsBrowse: ds:='Browsing';
dsEdit: ds:='التحرير';
dsInsert: ds:='إدراج سجل جديد';
آخر
ds:='الولايات الأخرى'
نهاية ؛
التسمية التوضيحية: = 'حالة ADOTable1: ' + ds؛
نهاية ؛