![]() |
|
الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة بناء برنامج لإدارة السوبر ماركت من الألف إلى الياء (http://vb4arb.com/vb/forumdisplay.php?fid=128) +---- الموضوع : الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... (/showthread.php?tid=5719) |
الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . نقاط سريعة لم يتم تطبقها في البرنامج - البحث بأكثر من معامل - . لو نظرت أخي الكريم إلى شاشة البحث تجد أننا نبحث بمعامل واحد فقط ، وهذا وإن كان جيداً لسوبر ماركت متوسط كما أسلفنا ، إلا أننا وفي حالة التعامل مع قاعدة بيانات ضخمة لمؤسسة أو منفذ بيع كبير فإننا نحتاج للبحث بأكثر من خاصية ، فمثلاً البضائع التي كميتها < 10 ومن مؤسسة معينة عند وصول المورد الخاص بها على سبيل المثال . لعمل ذلك هناك أكثر من طريقة ، منها ما يلي : نضع بالجزء العلوي من شاشة البحث والخاص بالتحكم في البحث أزرار ( اضافة - انهاء ) . في هذه الشاشة توجد مربعات التحرير والسرد الموجود في الشاشة العادية . إلا أنه عند النقر على زر اضافة فإنني اضع هذه الشروط في ثلاثة متغيرات على شكل مصفوفة a(x),b(x),c(x) وقيمة X تبدأ بـ 0 ، ونحدثها مع كل عملية بحث بحيث تساوي x + 1 ونعرفها في قسم التصريحات Genral في الفورم : كود : Dim a(),b(),cوفي Form_Load :
كود : X=0فمثلاً يكون كود زر الاضافة :
كود : a(x) = Combo1.Textوهكذا حتى ينتهي المستخدم من اضافة معلوماته ، وعند الضغط على زر انهاء نضيف جملة 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وهكذا يتم عرض جميع نتائج البحث المطلوبة كما حددها هو .
تستطيع لاحقاً عرض المعاملات التي بحث عنها في قائمة لمزيد من الاحترافية ، والموضوع به الكثير من النقاط التي قد تكون علامات ايجابية في برنامجك . كتابة تعليمات البرنامج . إننا دائماً بحاجة إلى كتابة تعليمات برامجنا لمنح الفرصة لكافة الأشخاص لاستخدام برامجنا بكفاءة كاملة وفاعلية . نحتاج إلى أن نشرح في التعليمات كافة النقاط المتعلقة بالبرنامج ، فنشرح له مثلاً قوائم البرنامج والمهام الأساسية فيه . وسنشرح له أيضاً سير البرنامج ، هذا كله بعد موجز تفصيلي نشرح فيه فائدة البرنامج .
إن قيامك بكتابة التعليمات أيضاً يعني اعطاء بعض التلميحات ، فعلى سبيل المثال في برنامجنا سيكون من الجيد تعليمه كيفية استخدام البحث لعرض البضائع التي لم تتبق منها كمية كافية .
أيضاً اشرح له بعض المشاكل التي قد تحدث وكيف يتعامل معها ، وأخيراً اضف إليه معلومات عن كيفية الاتصال بك وعرض مشاكله أو اسداء الاقتراحات . لا تنس في حال برمجتك لبرامج معينة أن تعرض امكانيات النظام التي يمكنك التعامل معها ، ومكونات الجهاز كالحد الأدنى من سرعة المعالج وذاكرة الرام . وملف الوورد مرفق وهو عبارة عن تعليمات الملف الخاص بنا ، وتجده مثلاً في المرفقات . ولا يشترط أسلوب كتابة التعليمات على الوورد ، بل قد نستطيع استخدام برامج خاصة بكتابة ملفات المساعدة يمكنها أن تساعدنا كثيراً . ويمكن العثور عليها بمجرد البحث . يتبع ... الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... - RaggiTech - 15-10-12 طباعة الفواتير .
لطباعة الفواتير أكثر من طريقة ، منها ما يلي :
* اضافة العمليات المطلوب اظهارها في الفاتورة واحدة تلو الأخرى ، وتخزين ارقامها في متغيرات .
* عرض بكافة العمليات خلال مدة واختيار بعض منها ليظهر في التقارير .
الطريقة الأولى :
في الحالة الأولى بإمكاننا الاعتماد على شاشة اضافة عملية بيع ، حيث نضيف عملية البيع الأولى ونخزن رقمها في متغير a ثم الثانية ونضيفها في a وهكذا ، بالشكل التالي مثلاً - عند الضغط على زر ( اضافة ) .
كود : if a="" thenوذلك على اعتبار Number هو رقم العملية المضافة .
وبعد الضغط على زر ( طباعة فاتورة ) أقوم بتقسيم المتغير a بواسطة الدالة Split :
كود : b = split(aومن ثم الدوران على عناصر المصفوفة الجديدة الناتجة من التقسيم واضافتها للتقرير : كود : for i = 0 to UPBount(bفي النهاية سيكون بحثك على الأرقام الموجودة في المصفوفة ، ومن ثم تقوم بعرضها في تقرير عادي جداً .
الطريقة الثانية :
في هذه الطريقة سوف نعرض له شاشة فيها عمليات مببيعات اليوم أو بين تاريخين يحددهما المستخدم ، ويستطيع من خلال النقر على الجدول اضافة العمليات المطلوبة ، فمثلاً نقوم بوضع List نعرض فيها أرقام العمليات .
بالشكل التالي ، نضع الكود في حالة النقر على الجدول ضغطتين - أو أي عملية أخرى نختارها لاضافة العملية إلى التقرير - .
كود : MsFlexrid1.Cols=1تستطيع لجعل التصميم أكثر احترافية ، اضافة اسم العملية ، وأن تتيح للمستخدم حذف العناصر أو البضائع والتحكم في الليست في الترتيب وغيره .
لاحقاً قم بالاستعلام عن الأرقام المخزنة في القائمة ، وقم بوضعها في التقرير .
هناك طريقة ثالثة أفضل وأكثر استخداماً ، لن يكون لدينا جدول لعمليات البيع والشراء حيث أن كل قطعة تمثل عملية بيع ، بل سيكون لدينا في الأول جدول لعمليات البيع أو الشراء بحيث يتم تسجيل سجل واحد في كل عملية بيع كاملة ، ثم نقوم بعمل جدول فرعي بعلاقة ( واحد إلى مجموعة - Many To One ) بدلالة رقم العملية حيث نقوم باضافة القطع والكميات المضافة إلى هذه العملية .
لاحقاً في عملية الطباعة قم بطباعة كافة السجلات المعروضة بالنسبة لعملية بيع محددة .
ليست هذه هي الطرق فحسب ، بل هناك العديد من الطرق الأكثر دقة واحترافية ، ويبقى عليك اختيار الطريقة المناسبة لمشروعك .
يتبع ... الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... - RaggiTech - 15-10-12 التحكم في ألوان البرنامج .
إن ذوقك في اختيار الألوان والتصميم ليس بالضرورة أن يكون هو نفس ذوق مستخدم البرنامج ، بل قد يرى أحد المستخدمين برنامجك خال من أي لمحات فنيه لمجرد أنه لم يناسب ذوقه ، مع أنه لدى الكثيرين تحفة في التصميم . ولسوء الحظ ، قد يكون هذا الشخص هو مدير الشركة مثلاً ، وعليه يتوقف تحديد تطبيق برنامجك أم لا . في السابق كان المبرمج ينزل إلى الشركة لتحليل البرنامج ، وكان أيضاً يحرص على سؤال المستخدمين عن أذواقهم اللونية والتصميمية في البرنامج ، أما الآن فأصبح من الأفضل دائماً اتاحة الفرصة لمستخدم البرنامج للتحكم بتصميمك كما يشاء . فتجد برنامج مثل Word مثلاً يتيح لك اختيار أشرطة الأدوات المطلوبة ، واللون ، وفي برنامجنا هذا نستطيع اضافة شاشة بالتصميم نطلب منه فيها المعلومات التالية على سبيل المثال : لون الخلفية - لون الأزرار - لون مربع النص - ظهور شريط الأدوات - ظهور شريط الحالة . ويتم تخزين اعدادت المستخدم في جدول خاص به ، وتطبق فور تشغيل البرنامج وذلك في الاجراء Start . عمل تعددية المستخدمين . إن موضوع تعددية المستخدمين له أكثر من طريقة ووجه ، ومنها : تعدد المستخدمين على قاعدة بيانات واحدة . في هذه الحالة يتم اضافة جدول باسماء المستخدمين ، وكلمات سر لهم ، ويتاح لهم الدخول في قاعدة البيانات ، حيث أنه في شاشة الدخول يختبر اسم المستخدم ويتأكد من كلمة المرور الخاصة به . أحد التطبيقات الاحترافية لهذا الموضوع هو تحديد صلاحيات الأعضاء ، حيث نضع مجموعة من الحقول True-False أمام كل عضو مثل ( امكانية تعديل - امكانية اضافة - امكانية حذف ) ويتحكم بها المدير العام للمجموعة . يمكننا لاحقاً تحديد العمليات التي يقوم بها العضو باضافة رقم العضو أمام كل عملية ، فيمكننا معرفة من قام باضافة البضاعة الأولى ، ومن قام بعملية الشراء الثانية . تعدد المستخدمين وتعدد قواعد البيانات . في هذه الطريقة يكون لكل مستخدم قاعدة بيانات خاصة به وربما أكثر ، وقبل الشروع في العمل يختار قاعدة البيانات المطلوبة ، ويعض كلمة السر الخاصة بها . في هذه الحالة يحب أن تتاح فرصة اضافة قاعدة جديدة في الشاشة الخارجية من البرنامج وقبل تسجيل الدخول إلا في حالة كان المطلوب التحكم في الاضافة من المدير فقط . وهناك العديد من الطرق الأكثر تعقيداً ، ولكن هذا ما سمح المجال بذكره . تحديد العمليات السريعة . لو نظرت في شريط الحالة اسفل الشاشة الرئيسية لوجدت أننا اضفنا اختصارات لبعض العمليات السريعة مثل ( البضائع التي لها الكمية 0 ) وهكذا . على اعتبار أنها أكثر العمليات شيوعاً . إلا أن المصمم المحترف للبرنامج يضع للمستخدم حرية تحديد عمليات سريعة خاصة به ، وقد يضع لك قائمة أو يضفها ضمن شريط المهام ، أو في شريط الأدوات على شكل قائمة أيضاً ( مثل خاصية Back للخلف الموجودة في مستكشف ويندوز ) . لو لاحظت أن هذه العمليات السريعة هي عبارة عن جمل استعلام كتلك التي نستخدمها في البحث ، ولذلك قد نستطيع حفظ بعض عمليات البحث لاضافتها في قاعدة البيانات لاستخدامها سريعاً لاحقاً . يمكننا اضافة جدول جديد نعرض فيه نصوص جمل الاستعلام Sql التي يرغب المستخدم في استخدامها بسرعة ، وأسماء رمزية لها ، وعند فتحنا للبرنامج نضيف أمراً لاضافة قائمة جديدة تحتوي على هذه العمليات . ولمعرفة كيفية اضافة القوائم راجع الدرس الخاص بالقوائم على هذا الرابط : أما عن الكود الذي سنقوم بكتابته ، فإننا سوف نبحث في جدول الاستعلامات السريعة عن الاسم المضغوط ، ونقوم بتخزين جملة الاستعلام الخاصة به وتنفيذها في شاشة البحث . * ملاحظة : يمكنك بنفس طريقة الدرس السابق استخدام اكثر من شرط للبحث وتخزينه أيضاً بنفس الطريقة . التحكم في التقارير . نستطيع أن نعطي المستخدم حرية اظهار ما يريد في التقرير ، فمثلاً قبل أن نظهر له شاشة التقرير نسأله فيما إذا كان يرغب في اظهار الصورة أم لا ، وإذا كان يرغب في ظهور العنوان ، ونتيح له تغييره ، وقد يبدو الأمر أسهل في حالة عمل شاشة خاصة باعدادت طباعة التقارير ويتم تخزين الاعدادت في قاعدة البيانات كما نخزن كلمة السر ومعلومات الملف ، فنخزن True,false لعرض الصورة ام لا ، ونخزن String لعرض العنوان لو كان يريد اظهاره ، وهكذا ... والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |