السلام عليكم
ستكون حلقة اليوم عن نموذج التعامل مع أقسام المخزون
تقوم المنشأة بتقسيم السلع التي تتاجر فيها إلي ثلاث أقسام، وبالطبع قد تتوسع الشركة وتحتاج إلي تقسيم منتجاتها إلي أقسام أخري من هنا تأتي أهمية هذا النموذج فهو يتبح للمنشأة تقسيم منتجاتها إلي أي عدد من الأقسام
وفي هذه الحلقة سنقوم بتصميم هذا النموذج، وكالعادة يجب أن نقوم بإنشاء جدول أقسام المخزون وهو الجدول ProductType ويتكون من ثلاث حقول موضحة في الملف الموجود في المرفقات، وقد تم إنشاء هذا الجدول وتغذيته ببعض البيانات التجريبية
من القائمة Project أختر Major Properties ثم من Startup Object اختر frmProductTypeثم أضغط زر OK لتعود إلي المشروع، ثم أضغط F5 لتشغيل المشروع لنلقي نظرة علي النموذج.
يتكون النموذج مثل نموذج الموردين من قسمين، القسم السفلي يحتوي علي فهرس الأقسام والقسم العلوي علي بعض صناديق النصوص لإضافة قسم جديد أو تحديث بيانات الأقسام الموجودة بالفعل ، مع الثلاث أزرار جديد وحفظ وإغلاق
والحركة علي النموذج تشبهه الحركة علي نموذج الموردين بالضبط
لإضافة سجل جديد أنقر علي زر جديد فيظهر رقم السجل في أعلي النموذج وينتقل التركيز إلي صندوق اسم القسم، أكتب اسم القسم ثم أضغط مفتاح Enter وسينقل التركيز إلي صندوق المكونات، أكتب المكونات التي تريدها، ثم أضغط علي زر حفظ، فيتم تسجيل القسم ويظهر في الفهرس أسفل النموذج ، نفس خطوات التعامل مع نموذج الموردين بالضبط
والكود المستخدم مع النموذج يشبه إلي حد كبير الكود المستخدم مع نموذج الموردين مع إجراء تعديلات في عبارات SQL للتعامل مع جدول ProductType بدلا من التعامل مع جدول Supplier
في قسم الإعلانات العام للنموذج ستجد السطرين التاليين
Dim dbcon As adodb.Connection Dim RecordArry (0 To 2) As Variant
في السطر الأول الإعلان التقليدي عن كائن الاتصال
في السطر الثاني الإعلان عن المصفوفة RecordArry بحيث يكون عدد عناصرها مساويا لعدد حقول جدول الموردين ProductType و كما هو واضح من قاعدة البيانات يتكون الجدول من 3 حقول
وقد تم ربط عناصر هذه المصفوفة بصناديق النصوص الخاصة بإدخال البيانات عن طريق الحدث Change لكل أداة، بالضبط كما حدث في نموذج الموردين
وقد تم تعديل عبارات Sql للتعامل مع الجدول ProductType كا يلي
في الإجراء View_index تم استبدل عبارة Sql من
MySql = " Select SupplierID,SupplierName FROM Supplier" MySql = MySql & " WHERE INSTR(1,SupplierName,'" & txtfind & "') > 0;"
وأستخدمت بدلا منها العبارة
MySql = " Select ClassID,TypeName FROM ProductType" MySql = MySql & " WHERE INSTR(1,TypeName,'" & txtfind & "') > 0;"
في الإجراء CmdAddnew_Click تم استبدال السطر
RecordArry(0) = GEtNewNumber("SupplierID", "Supplier", dbcon)
بالسطر
RecordArry(0) = GEtNewNumber("ClassID", "ProductType", dbcon)
في الحدث cmdSave_Click تم استبدال السطر
RecSet.Open "Supplier", dbcon, adOpenDynamic, adLockOptimistic
إلي السطر
RecSet.Open "ProductType", dbcon, adOpenDynamic, adLockOptimistic
في الحدث index1_Click تم استبدال السطر
RecSet.Open "Supplier", dbcon, adOpenForwardOnly, adLockOptimistic
بالسطر
RecSet.Open "ProductType", dbcon, adOpenForwardOnly, adLockOptimistic
تلاحظ في هذه التعديلات أنها كلها تحول المسار من التعامل مع جدول Supplier إلي الجدول ProductType
أما باقي الوظائف والإجراءات فهي واحدة في النموذجين وفي حوالي 80% من نماذج المشروع، فلن نحتاج سوي هذه الإجراءات والوظائف الستة
أما باقي التعاملات في النموذج مثل التعاملات التي تمت مع النموذج frmSupplier
وإلي اللقاء في الحلقة القادمة مع نموذج بيانات المخزون
Major
