السلام عليكم...
إذا سمحتم لي ببعض التعليق...
كل ما ورد بخصوص استعمال الأكواد بدل المكونات يتعلق بمعالجة قواعد البيانات، لكن عبارة"
استعمال الأكواد بدل المكونات" عبارة مضللة! فالإخوة - سائلين و مجيبين - يقصدون استعمال كائنات مكتبة DAO (اختصاراً من Data Access Objects) بدل المكون Data Control العادي، أو استعمال كائنات مكتبة ADO (اختصاراً من ActiveX Data Objects) بدل المكون ADODC Control.
لكن لا ننسى أن كلاً من المكونين Data Control و Adodc Control هما تغليف (encapsulation) لمجموعة من الكائنات و الوظائف و الخصائص الموجودة في تلكما المكتبتين.
فالمكون Data Control يمثل كائن Recordset من مكتبة DAO و لهذا عندما نتعامل مع كائنات قاعدة البيانات (جداول أو استعلامات) باستعمال هذا المكون فإننا نكتب مثلاً: Data1.Recordset. و هذه الـ Recordset التابعة للمكون Data Control هي نفسها الـ Recordset التي نحصل عليها بالتصريح: Dim RS As DAO.Recordset.
كذلك الأمر بالنسبة إلى المكون Adodc الذي يمثل كائن Recordset من مكتبة ADODB بالإضافة إلى مجموعة من الخصائص المتعلقة بكائنات أخرى من نفس المكتبة، فمثلاً الخصائص: ConnectionString و ConnectionTimeOut و Password و UserName هي من خصائص الكائن ADODB.Connection، و الخصائص: CommandType و CommandTimeOut هي من خصائص الكائن ADODB.Command ... إلخ.
الفكرة من وجود مكون يغلف تلك الكائنات و الوظائف و الخصائص هو توفير أداة مرئية يمكن للمبرمج من خلالها ضبط الخصائص أثناء التصميم دون الحاجة إلى كتابة الكود. طبعاً استعمال الكائنات (DAO أو ADO) يوفر مرونة و تحكماً أكبر لأن المكونين Data Control و Adodc Control مصممان بالأساس لغرض عرض و تصفح البيانات عن طريق ربطهما بمكونات أخرى تعرض تلك البيانات مثل الـ Data Grid أو TextBoxes أو غيرها. إن استعمال الكائنات من المكتبات يعني المزيد من الكود! لنتصور لو أن لدينا 15 مربع نص (TextBox) و نريد ربطها بكائن ADODB.Recordset اسمه RS. سنحتاج إلى 15 سطراً من الكود (هذا باعتبار أننا سنضبط الخاصية DataField أثناء التصميم)!!!
كود :
Set Text1.DataSource = RS
Set Text2.DataSource = RS
Set Text3.DataSource = RS
...
...
Set Text15.DataSource = RS
بينما لو كان لدي مكون Adodc Control فإنه يمكنني أثناء التصميم تحديد جميع مربعات النص تلك و ضبط الخاصية DataSource لها جميعاً بنقرة واحدة!
* ما أقصده هو أن الوضع قد يحدد ماذا أختار. فإذا كانت لدي مثلاً نافذة تستخدم فقط لعرض السجلات (ربما مع بعض الوظائف مثل التصفية و البحث و الترتيب أو الفرز) و لكن لا أحتاج فيها لعمليات إضافة و تعديل و حذف فإن استعمال المكون Adodc Control بدل كائنات ADO هو الاختيار الحكيم، لأن النافذة ستؤدي وظيفتها بالكامل دون الحاجة إلى كتابة المزيد من الكود.
الملخص:
للعرض فقط: استعمل المكون Adodc Control.
لمعالجة البيانات من أجل الحصول على قيم معينة أو إجراء بعض الحسابات أو ما شابه: استعمل الكائن ADODB.Recordset.
لإضافة أو تعديل أو حذف سجلات: استعمل الكائن ADODB.Command أو بشكل مباشر الكائن ADODB.Connection.
آسف على الإطالة...
نرجو الاستفادة و السلام.