الجزء 2 سوف يناقش العلاقة بين جداول قاعدة البيانات والنماذج. على وجه الخصوص ، كيفية تحديد العلاقة بين جدولين واستخدام "الجداول المرجعية" كمصدر بيانات للقوائم المنسدلة.
إصدارات OpenOffice و LibreOffice التي تتعلق بها هذه الرسالة من 3.0 إلى 6.2 (الإصدار الحالي من LibreOffice). بدءًا من الإصدار 3.0 ، يتمتع OpenOffice Base بالقدرة على حفظ البرامج النصية في ملف قاعدة بيانات (بملحق .odb) ، مما يجعل من المناسب توزيع رمز ماكرو OO Basic
كان هناك بعض الالتباس مع النماذج الموجودة في OpenOffice Base. والحقيقة هي أنه في عملية تطوير البرمجيات من مجموعة المكتب إلى بيئة قاعدة البيانات ، اتضح أن النماذج والنماذج والنماذج والنماذج ليست هي نفس الشيء. والاستمارة ليست فقط النموذج. سأشرح بمزيد من التفصيل.
عندما تفتح قاعدة بيانات OpenOffice Base في وضع التحرير ، ترى أربع إشارات مرجعية على الجانب الأيسر من الشاشة. في النسخة الروسية ، سوف يبدو مثل
في هذا المعنى ، النموذج هو تطبيق منفصل يعمل في نافذة منفصلة. وألاحظ أيضًا أنه في الحقيقة هذه هي النافذة التي يتم فيها تشغيل مثيل OpenOffice Writer.
المذكرة. نظرًا لأن النموذج هو بالفعل مثيل لـ OpenOffice Writer - يمكنك إنشاء تطبيق دون تحميل مكون OpenOffice Base - مباشرة في OpenOffice Writer.يحتوي كل نموذج على مجموعة من نماذج الكائنات. في البداية ، هذه المجموعة فارغة. على الرغم من ذلك ، يمكنك فتح وإغلاق النموذج. وحتى عرض المعلومات النصية فيه. وفقط عندما تضيف عنصر تحكم جديد (على سبيل المثال ، زر) ، سيقوم النظام بإنشاء كائن نموذج بالاسم الافتراضي نموذج ، إذا لم تقم بإنشاء مثل هذا الكائن بنفسك بحلول ذلك الوقت.
من الأنسب إنشاء نماذج جديدة من Form Navigator (يتم عرضها على اللوحة كوصلة بوصلة) ، والتي يمكن استدعاؤها أيضًا من القائمة View | Toolbar | Form Navigation. يتم إنشاء كائنات النموذج إما في المستوى العلوي في مجموعة النماذج أو تابعة لكائن نموذج آخر. هذا لا يؤثر على مظهر النموذج ، لكنه قد يكون مفيدًا عند تحديد العلاقات بين الجداول.
هنا يجب أن نلاحظ شذوذ واحد من كائن النموذج. هذا الكائن هو في المقام الأول كائن مرتبط بجدول قاعدة بيانات أو باستعلام SQL. يمكنك التفكير في النموذج ككائن ResultSet (كما هو حقًا). النموذج ، من ناحية أخرى ، عبارة عن حاوية لعناصر التحكم ، مثل النموذج في مستند HTML (وهذا صحيح أيضًا).
افتح النموذج المنشأ حديثًا في وضع التحرير (زر الماوس الأيمن | تحرير). قم بإنشاء كائن نموذج جديد فيه باسم النموذج ، أو اسم آخر تريده. في عنصر النموذج هذا ، قم بإنشاء عنصر نموذج فرعي.
يجب أن يرتبط كل نموذج بجدول قاعدة بيانات أو استعلام أو استعلام SQL موجود. في نموذج الرقيق ، يمكنك ضبط القواعد بحيث يتم عرض البيانات التي تمت تصفيتها حسب قيمة الحقول ذات الصلة في النموذج الرئيسي على شكل سيد / عبد. للقيام بذلك ، في محرر خاصية النموذج الفرعي ، قم بملء حقول الرابط الرئيسية وخصائص حقول الرقيق.
الآن سنضيف عنصر تحكم جدول إلى كل نموذج من النماذج عن طريق تحديد النموذج المناسب في "نموذج المستكشف">. عنصر التحكم في الجدول ليس في لوحة العناصر المتاحة. لعرض قائمة موسعة من العناصر ، تحتاج إلى تنشيط الزر "مزيد من عناصر التحكم" في لوحة العناصر. بعد إضافة عنصر التحكم في الجدول ، من الضروري إدخال وضع التحرير لهذا العنصر وإضافة الأعمدة المطلوبة لعرض الجدول (زر الفأرة الأيمن -> إدراج / استبدال / حذف العمود)
النوع الثاني هو النوع الذي يتم مواجهته بشكل متكرر في الممارسة العملية للعلاقة بين الجداول (بعد Master / Slave) ، والتي سنأخذها في الاعتبار - علاقة من النوع Directory. نقوم بتخزين مفتاح كائن GUID ، autoincrement ، في جدول البيانات ، وفي الجدول المعروض ، نعرض اسمه الكامل ، مأخوذ من الجدول المرجعي المرتبط. هناك آلية مريحة لهذا الغرض. في "مصمم الجدول المرئي" ، أضف عمودًا من النوع "مربع قائمة". إذا كان قد تم بالفعل إنشاء عمود من النوع الرقمي / النص ، حيث يتم عرض المفتاح (وليس الاسم) ، فمن الممكن تغيير نوعه إلى مربع قائمة (انقر بزر الماوس الأيمن | استبدال بـ | مربع القائمة). بعد ذلك ، قم بتحرير قائمة خصائص العمود. في علامة التبويب "البيانات" ، قم بتعيين خاصية "نوع قائمة المحتوى" إلى SQL. يجب أن يحتوي الاستعلام في خاصية Content List على القيمة المعروضة في العمود الأول ، وستكون خاصية Bound Field هي فهرس العمود بحقل المفتاح (على افتراض أن العمود الأول به فهرس 0). وهذا هو ، في الغالبية العظمى من الاستعلامات سيكون هذا 1 للاستعلامات من النوع
SELECT USERNAME, USERID FROM USERS ORDER BY USERNAME
حتى الآن ، تم وصف العمل في وضع مكون دون برمجة. إضافة وظيفة مع وحدات الماكرو OO الأساسية.
قم بإنشاء عامل تصفية لجدول قاعدة البيانات حسب القيمة التي تم إدخالها في مربع النص. للقيام بذلك ، نكتب بلغة OO Basic إجراءً يعالج حدثًا من لوحة المفاتيح.
Sub TextBox_onKeyUp(oEvent) oDocument = ThisComponent oDocument.LockControllers sText = oEvent.Source.text if Len(sText) > 3 Then oForm = ThisComponent.Drawpage.Forms.getByName("MyForm") oForm.Filter = "USERNAME LIKE '" + sText + "%'" oForm.reload() End If oDocument.UnlockControllers End Sub
نحن نربط هذا الإجراء بالحدث الذي تم إصداره من المفتاح لحقل النص (في علامة تبويب الأحداث في قائمة خصائص العنصر). لاحظ أن حقل النص هذا يجب أن يكون موجودًا في نموذج آخر (وليس في النموذج الذي يتم تثبيت المرشح عليه) ، حتى لا يؤدي إعادة تحميل oForm.reload () إلى "إلغاء" قيمته الحالية التي تم إدخالها من لوحة المفاتيح.
أن تستمر.