بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته .
نقاط سريعة لم يتم تطبقها في البرنامج - البحث بأكثر من معامل - .
لو نظرت أخي الكريم إلى شاشة البحث تجد أننا نبحث بمعامل واحد فقط ، وهذا وإن كان جيداً لسوبر ماركت متوسط كما أسلفنا ، إلا أننا وفي حالة التعامل مع قاعدة بيانات ضخمة لمؤسسة أو منفذ بيع كبير فإننا نحتاج للبحث بأكثر من خاصية ، فمثلاً البضائع التي كميتها < 10 ومن مؤسسة معينة عند وصول المورد الخاص بها على سبيل المثال .
لعمل ذلك هناك أكثر من طريقة ، منها ما يلي :
نضع بالجزء العلوي من شاشة البحث والخاص بالتحكم في البحث أزرار ( اضافة - انهاء ) . في هذه الشاشة توجد مربعات التحرير والسرد الموجود في الشاشة العادية . إلا أنه عند النقر على زر اضافة فإنني اضع هذه الشروط في ثلاثة متغيرات على شكل مصفوفة a(x),b(x),c(x) وقيمة X تبدأ بـ 0 ، ونحدثها مع كل عملية بحث بحيث تساوي x + 1 ونعرفها في قسم التصريحات Genral في الفورم :
كود :
Dim a(),b(),c
()
Dim X
وفي Form_Load :
كود :
X=0
فمثلاً يكون كود زر الاضافة :
كود :
a(x) = Combo1.Text
If a(x) = "اسم البضاعة" Then a(x) = "product.name"
'
'
'وهكذا لتحويل النص المعروض إلى اسم الحقل في قاعدة البيانات .
b(x) = Combo2.Text
c(x) = Text1.Text
X=X+1
وهكذا حتى ينتهي المستخدم من اضافة معلوماته ، وعند الضغط على زر انهاء نضيف جملة Sql من المعلومات التي وضعها المستخدم ، وقد تكون بالشكل التالي :
كود :
SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number
"
For i = 0 To X-1
sql = sql & " and " & a(x) & b(x) & c(x
)
Next i
وهكذا يتم عرض جميع نتائج البحث المطلوبة كما حددها هو .
تستطيع لاحقاً عرض المعاملات التي بحث عنها في قائمة لمزيد من الاحترافية ، والموضوع به الكثير من النقاط التي قد تكون علامات ايجابية في برنامجك .
كتابة تعليمات البرنامج .
إننا دائماً بحاجة إلى كتابة تعليمات برامجنا لمنح الفرصة لكافة الأشخاص لاستخدام برامجنا بكفاءة كاملة وفاعلية .
نحتاج إلى أن نشرح في التعليمات كافة النقاط المتعلقة بالبرنامج ، فنشرح له مثلاً قوائم البرنامج والمهام الأساسية فيه .
وسنشرح له أيضاً سير البرنامج ، هذا كله بعد موجز تفصيلي نشرح فيه فائدة البرنامج .
إن قيامك بكتابة التعليمات أيضاً يعني اعطاء بعض التلميحات ، فعلى سبيل المثال في برنامجنا سيكون من الجيد تعليمه كيفية استخدام البحث لعرض البضائع التي لم تتبق منها كمية كافية .
أيضاً اشرح له بعض المشاكل التي قد تحدث وكيف يتعامل معها ، وأخيراً اضف إليه معلومات عن كيفية الاتصال بك وعرض مشاكله أو اسداء الاقتراحات .
لا تنس في حال برمجتك لبرامج معينة أن تعرض امكانيات النظام التي يمكنك التعامل معها ، ومكونات الجهاز كالحد الأدنى من سرعة المعالج وذاكرة الرام .
وملف الوورد مرفق وهو عبارة عن تعليمات الملف الخاص بنا ، وتجده مثلاً في المرفقات .
ولا يشترط أسلوب كتابة التعليمات على الوورد ، بل قد نستطيع استخدام برامج خاصة بكتابة ملفات المساعدة يمكنها أن تساعدنا كثيراً . ويمكن العثور عليها بمجرد البحث .
* اضافة العمليات المطلوب اظهارها في الفاتورة واحدة تلو الأخرى ، وتخزين ارقامها في متغيرات .
* عرض بكافة العمليات خلال مدة واختيار بعض منها ليظهر في التقارير .
الطريقة الأولى :
في الحالة الأولى بإمكاننا الاعتماد على شاشة اضافة عملية بيع ، حيث نضيف عملية البيع الأولى ونخزن رقمها في متغير a ثم الثانية ونضيفها في a وهكذا ، بالشكل التالي مثلاً - عند الضغط على زر ( اضافة ) .
كود :
if a="" then
a = Number
else
a = a & "," & Number
end if
وذلك على اعتبار Number هو رقم العملية المضافة .
وبعد الضغط على زر ( طباعة فاتورة ) أقوم بتقسيم المتغير a بواسطة الدالة Split :
كود :
b = split(a
,",")
ومن ثم الدوران على عناصر المصفوفة الجديدة الناتجة من التقسيم واضافتها للتقرير :
كود :
for i = 0 to UPBount(b
)
'
'
'
في النهاية سيكون بحثك على الأرقام الموجودة في المصفوفة ، ومن ثم تقوم بعرضها في تقرير عادي جداً .
الطريقة الثانية :
في هذه الطريقة سوف نعرض له شاشة فيها عمليات مببيعات اليوم أو بين تاريخين يحددهما المستخدم ، ويستطيع من خلال النقر على الجدول اضافة العمليات المطلوبة ، فمثلاً نقوم بوضع List نعرض فيها أرقام العمليات .
بالشكل التالي ، نضع الكود في حالة النقر على الجدول ضغطتين - أو أي عملية أخرى نختارها لاضافة العملية إلى التقرير - .
كود :
MsFlexrid1.Cols=1
'على اعتبار أنه صف رقم العملية
List1.AddItem MSFlexGrid1.Text
تستطيع لجعل التصميم أكثر احترافية ، اضافة اسم العملية ، وأن تتيح للمستخدم حذف العناصر أو البضائع والتحكم في الليست في الترتيب وغيره .
لاحقاً قم بالاستعلام عن الأرقام المخزنة في القائمة ، وقم بوضعها في التقرير .
هناك طريقة ثالثة أفضل وأكثر استخداماً ، لن يكون لدينا جدول لعمليات البيع والشراء حيث أن كل قطعة تمثل عملية بيع ، بل سيكون لدينا في الأول جدول لعمليات البيع أو الشراء بحيث يتم تسجيل سجل واحد في كل عملية بيع كاملة ، ثم نقوم بعمل جدول فرعي بعلاقة ( واحد إلى مجموعة - Many To One ) بدلالة رقم العملية حيث نقوم باضافة القطع والكميات المضافة إلى هذه العملية .
لاحقاً في عملية الطباعة قم بطباعة كافة السجلات المعروضة بالنسبة لعملية بيع محددة .
ليست هذه هي الطرق فحسب ، بل هناك العديد من الطرق الأكثر دقة واحترافية ، ويبقى عليك اختيار الطريقة المناسبة لمشروعك .
إن ذوقك في اختيار الألوان والتصميم ليس بالضرورة أن يكون هو نفس ذوق مستخدم البرنامج ، بل قد يرى أحد المستخدمين برنامجك خال من أي لمحات فنيه لمجرد أنه لم يناسب ذوقه ، مع أنه لدى الكثيرين تحفة في التصميم . ولسوء الحظ ، قد يكون هذا الشخص هو مدير الشركة مثلاً ، وعليه يتوقف تحديد تطبيق برنامجك أم لا .
في السابق كان المبرمج ينزل إلى الشركة لتحليل البرنامج ، وكان أيضاً يحرص على سؤال المستخدمين عن أذواقهم اللونية والتصميمية في البرنامج ، أما الآن فأصبح من الأفضل دائماً اتاحة الفرصة لمستخدم البرنامج للتحكم بتصميمك كما يشاء . فتجد برنامج مثل Word مثلاً يتيح لك اختيار أشرطة الأدوات المطلوبة ، واللون ، وفي برنامجنا هذا نستطيع اضافة شاشة بالتصميم نطلب منه فيها المعلومات التالية على سبيل المثال :
لون الخلفية - لون الأزرار - لون مربع النص - ظهور شريط الأدوات - ظهور شريط الحالة .
ويتم تخزين اعدادت المستخدم في جدول خاص به ، وتطبق فور تشغيل البرنامج وذلك في الاجراء Start .
عمل تعددية المستخدمين .
إن موضوع تعددية المستخدمين له أكثر من طريقة ووجه ، ومنها :
تعدد المستخدمين على قاعدة بيانات واحدة . في هذه الحالة يتم اضافة جدول باسماء المستخدمين ، وكلمات سر لهم ، ويتاح لهم الدخول في قاعدة البيانات ، حيث أنه في شاشة الدخول يختبر اسم المستخدم ويتأكد من كلمة المرور الخاصة به .
أحد التطبيقات الاحترافية لهذا الموضوع هو تحديد صلاحيات الأعضاء ، حيث نضع مجموعة من الحقول True-False أمام كل عضو مثل ( امكانية تعديل - امكانية اضافة - امكانية حذف ) ويتحكم بها المدير العام للمجموعة .
يمكننا لاحقاً تحديد العمليات التي يقوم بها العضو باضافة رقم العضو أمام كل عملية ، فيمكننا معرفة من قام باضافة البضاعة الأولى ، ومن قام بعملية الشراء الثانية .
تعدد المستخدمين وتعدد قواعد البيانات . في هذه الطريقة يكون لكل مستخدم قاعدة بيانات خاصة به وربما أكثر ، وقبل الشروع في العمل يختار قاعدة البيانات المطلوبة ، ويعض كلمة السر الخاصة بها . في هذه الحالة يحب أن تتاح فرصة اضافة قاعدة جديدة في الشاشة الخارجية من البرنامج وقبل تسجيل الدخول إلا في حالة كان المطلوب التحكم في الاضافة من المدير فقط .
وهناك العديد من الطرق الأكثر تعقيداً ، ولكن هذا ما سمح المجال بذكره .
تحديد العمليات السريعة .
لو نظرت في شريط الحالة اسفل الشاشة الرئيسية لوجدت أننا اضفنا اختصارات لبعض العمليات السريعة مثل ( البضائع التي لها الكمية 0 ) وهكذا .
على اعتبار أنها أكثر العمليات شيوعاً .
إلا أن المصمم المحترف للبرنامج يضع للمستخدم حرية تحديد عمليات سريعة خاصة به ، وقد يضع لك قائمة أو يضفها ضمن شريط المهام ، أو في شريط الأدوات على شكل قائمة أيضاً ( مثل خاصية Back للخلف الموجودة في مستكشف ويندوز ) .
لو لاحظت أن هذه العمليات السريعة هي عبارة عن جمل استعلام كتلك التي نستخدمها في البحث ، ولذلك قد نستطيع حفظ بعض عمليات البحث لاضافتها في قاعدة البيانات لاستخدامها سريعاً لاحقاً .
يمكننا اضافة جدول جديد نعرض فيه نصوص جمل الاستعلام Sql التي يرغب المستخدم في استخدامها بسرعة ، وأسماء رمزية لها ، وعند فتحنا للبرنامج نضيف أمراً لاضافة قائمة جديدة تحتوي على هذه العمليات .
ولمعرفة كيفية اضافة القوائم راجع الدرس الخاص بالقوائم على هذا الرابط :
أما عن الكود الذي سنقوم بكتابته ، فإننا سوف نبحث في جدول الاستعلامات السريعة عن الاسم المضغوط ، ونقوم بتخزين جملة الاستعلام الخاصة به وتنفيذها في شاشة البحث .
* ملاحظة : يمكنك بنفس طريقة الدرس السابق استخدام اكثر من شرط للبحث وتخزينه أيضاً بنفس الطريقة .
التحكم في التقارير .
نستطيع أن نعطي المستخدم حرية اظهار ما يريد في التقرير ، فمثلاً قبل أن نظهر له شاشة التقرير نسأله فيما إذا كان يرغب في اظهار الصورة أم لا ، وإذا كان يرغب في ظهور العنوان ، ونتيح له تغييره ، وقد يبدو الأمر أسهل في حالة عمل شاشة خاصة باعدادت طباعة التقارير ويتم تخزين الاعدادت في قاعدة البيانات كما نخزن كلمة السر ومعلومات الملف ، فنخزن True,false لعرض الصورة ام لا ، ونخزن String لعرض العنوان لو كان يريد اظهاره ، وهكذا ...
والله الموفق ... والسلام عليكم ورحمة الله وبركاته .