تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ...
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .



نقاط سريعة لم يتم تطبقها في البرنامج - البحث بأكثر من معامل - .

لو نظرت أخي الكريم إلى شاشة البحث تجد أننا نبحث بمعامل واحد فقط ، وهذا وإن كان جيداً لسوبر ماركت متوسط كما أسلفنا ، إلا أننا وفي حالة التعامل مع قاعدة بيانات ضخمة لمؤسسة أو منفذ بيع كبير فإننا نحتاج للبحث بأكثر من خاصية ، فمثلاً البضائع التي كميتها < 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


وهكذا يتم عرض جميع نتائج البحث المطلوبة كما حددها هو .




تستطيع لاحقاً عرض المعاملات التي بحث عنها في قائمة لمزيد من الاحترافية ، والموضوع به الكثير من النقاط التي قد تكون علامات ايجابية في برنامجك .



كتابة تعليمات البرنامج .



إننا دائماً بحاجة إلى كتابة تعليمات برامجنا لمنح الفرصة لكافة الأشخاص لاستخدام برامجنا بكفاءة كاملة وفاعلية .

نحتاج إلى أن نشرح في التعليمات كافة النقاط المتعلقة بالبرنامج ، فنشرح له مثلاً قوائم البرنامج والمهام الأساسية فيه .

وسنشرح له أيضاً سير البرنامج ، هذا كله بعد موجز تفصيلي نشرح فيه فائدة البرنامج .







إن قيامك بكتابة التعليمات أيضاً يعني اعطاء بعض التلميحات ، فعلى سبيل المثال في برنامجنا سيكون من الجيد تعليمه كيفية استخدام البحث لعرض البضائع التي لم تتبق منها كمية كافية .



أيضاً اشرح له بعض المشاكل التي قد تحدث وكيف يتعامل معها ، وأخيراً اضف إليه معلومات عن كيفية الاتصال بك وعرض مشاكله أو اسداء الاقتراحات .




لا تنس في حال برمجتك لبرامج معينة أن تعرض امكانيات النظام التي يمكنك التعامل معها ، ومكونات الجهاز كالحد الأدنى من سرعة المعالج وذاكرة الرام .




وملف الوورد مرفق وهو عبارة عن تعليمات الملف الخاص بنا ، وتجده مثلاً في المرفقات .



ولا يشترط أسلوب كتابة التعليمات على الوورد ، بل قد نستطيع استخدام برامج خاصة بكتابة ملفات المساعدة يمكنها أن تساعدنا كثيراً . ويمكن العثور عليها بمجرد البحث .




يتبع ...


الملفات المرفقة
.zip   Help.zip (الحجم : 6.2 ك ب / التحميلات : 163)
}}}}
تم الشكر بواسطة:
#2
طباعة الفواتير .



لطباعة الفواتير أكثر من طريقة ، منها ما يلي :



* اضافة العمليات المطلوب اظهارها في الفاتورة واحدة تلو الأخرى ، وتخزين ارقامها في متغيرات .

* عرض بكافة العمليات خلال مدة واختيار بعض منها ليظهر في التقارير .






الطريقة الأولى :



في الحالة الأولى بإمكاننا الاعتماد على شاشة اضافة عملية بيع ، حيث نضيف عملية البيع الأولى ونخزن رقمها في متغير 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 ) بدلالة رقم العملية حيث نقوم باضافة القطع والكميات المضافة إلى هذه العملية .



لاحقاً في عملية الطباعة قم بطباعة كافة السجلات المعروضة بالنسبة لعملية بيع محددة .



ليست هذه هي الطرق فحسب ، بل هناك العديد من الطرق الأكثر دقة واحترافية ، ويبقى عليك اختيار الطريقة المناسبة لمشروعك .

يتبع ...
}}}}
تم الشكر بواسطة:
#3
التحكم في ألوان البرنامج .

إن ذوقك في اختيار الألوان والتصميم ليس بالضرورة أن يكون هو نفس ذوق مستخدم البرنامج ، بل قد يرى أحد المستخدمين برنامجك خال من أي لمحات فنيه لمجرد أنه لم يناسب ذوقه ، مع أنه لدى الكثيرين تحفة في التصميم .
ولسوء الحظ ، قد يكون هذا الشخص هو مدير الشركة مثلاً ، وعليه يتوقف تحديد تطبيق برنامجك أم لا .

في السابق كان المبرمج ينزل إلى الشركة لتحليل البرنامج ، وكان أيضاً يحرص على سؤال المستخدمين عن أذواقهم اللونية والتصميمية في البرنامج ، أما الآن فأصبح من الأفضل دائماً اتاحة الفرصة لمستخدم البرنامج للتحكم بتصميمك كما يشاء .
فتجد برنامج مثل Word مثلاً يتيح لك اختيار أشرطة الأدوات المطلوبة ، واللون ، وفي برنامجنا هذا نستطيع اضافة شاشة بالتصميم نطلب منه فيها المعلومات التالية على سبيل المثال :

لون الخلفية - لون الأزرار - لون مربع النص - ظهور شريط الأدوات - ظهور شريط الحالة .


ويتم تخزين اعدادت المستخدم في جدول خاص به ، وتطبق فور تشغيل البرنامج وذلك في الاجراء Start .



عمل تعددية المستخدمين .

إن موضوع تعددية المستخدمين له أكثر من طريقة ووجه ، ومنها :


تعدد المستخدمين على قاعدة بيانات واحدة .
في هذه الحالة يتم اضافة جدول باسماء المستخدمين ، وكلمات سر لهم ، ويتاح لهم الدخول في قاعدة البيانات ، حيث أنه في شاشة الدخول يختبر اسم المستخدم ويتأكد من كلمة المرور الخاصة به .

أحد التطبيقات الاحترافية لهذا الموضوع هو تحديد صلاحيات الأعضاء ، حيث نضع مجموعة من الحقول True-False أمام كل عضو مثل ( امكانية تعديل - امكانية اضافة - امكانية حذف ) ويتحكم بها المدير العام للمجموعة .

يمكننا لاحقاً تحديد العمليات التي يقوم بها العضو باضافة رقم العضو أمام كل عملية ، فيمكننا معرفة من قام باضافة البضاعة الأولى ، ومن قام بعملية الشراء الثانية .



تعدد المستخدمين وتعدد قواعد البيانات .
في هذه الطريقة يكون لكل مستخدم قاعدة بيانات خاصة به وربما أكثر ، وقبل الشروع في العمل يختار قاعدة البيانات المطلوبة ، ويعض كلمة السر الخاصة بها .
في هذه الحالة يحب أن تتاح فرصة اضافة قاعدة جديدة في الشاشة الخارجية من البرنامج وقبل تسجيل الدخول إلا في حالة كان المطلوب التحكم في الاضافة من المدير فقط .


وهناك العديد من الطرق الأكثر تعقيداً ، ولكن هذا ما سمح المجال بذكره .





تحديد العمليات السريعة .



لو نظرت في شريط الحالة اسفل الشاشة الرئيسية لوجدت أننا اضفنا اختصارات لبعض العمليات السريعة مثل ( البضائع التي لها الكمية 0 ) وهكذا .

على اعتبار أنها أكثر العمليات شيوعاً .





إلا أن المصمم المحترف للبرنامج يضع للمستخدم حرية تحديد عمليات سريعة خاصة به ، وقد يضع لك قائمة أو يضفها ضمن شريط المهام ، أو في شريط الأدوات على شكل قائمة أيضاً ( مثل خاصية Back للخلف الموجودة في مستكشف ويندوز ) .



لو لاحظت أن هذه العمليات السريعة هي عبارة عن جمل استعلام كتلك التي نستخدمها في البحث ، ولذلك قد نستطيع حفظ بعض عمليات البحث لاضافتها في قاعدة البيانات لاستخدامها سريعاً لاحقاً .

يمكننا اضافة جدول جديد نعرض فيه نصوص جمل الاستعلام Sql التي يرغب المستخدم في استخدامها بسرعة ، وأسماء رمزية لها ، وعند فتحنا للبرنامج نضيف أمراً لاضافة قائمة جديدة تحتوي على هذه العمليات .





ولمعرفة كيفية اضافة القوائم راجع الدرس الخاص بالقوائم على هذا الرابط :




أما عن الكود الذي سنقوم بكتابته ، فإننا سوف نبحث في جدول الاستعلامات السريعة عن الاسم المضغوط ، ونقوم بتخزين جملة الاستعلام الخاصة به وتنفيذها في شاشة البحث .



* ملاحظة : يمكنك بنفس طريقة الدرس السابق استخدام اكثر من شرط للبحث وتخزينه أيضاً بنفس الطريقة .






التحكم في التقارير .



نستطيع أن نعطي المستخدم حرية اظهار ما يريد في التقرير ، فمثلاً قبل أن نظهر له شاشة التقرير نسأله فيما إذا كان يرغب في اظهار الصورة أم لا ، وإذا كان يرغب في ظهور العنوان ، ونتيح له تغييره ، وقد يبدو الأمر أسهل في حالة عمل شاشة خاصة باعدادت طباعة التقارير ويتم تخزين الاعدادت في قاعدة البيانات كما نخزن كلمة السر ومعلومات الملف ، فنخزن True,false لعرض الصورة ام لا ، ونخزن String لعرض العنوان لو كان يريد اظهاره ، وهكذا ...





والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 1,438 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 1,231 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 1,161 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 993 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 838 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 1,560 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport RaggiTech 2 1,713 15-10-12, 08:45 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 1,223 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 1,102 15-10-12, 08:37 AM
آخر رد: RaggiTech
  الدرس الرابع والعشرون - تقارير المصانع والأنواع RaggiTech 0 777 15-10-12, 08:36 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم