تصميم نموذج صرف بالأكسس
سيتم شرح كيفية عمل نموذج صرف مع ارفاق العمل على شكل اكسس Microsoft Access هو برنامج قاعدة بيانات يسهل إنشاء تطبيقات إدارة المعلومات والبيانات. عند تصميم نموذج صرف في Access، يمكنك إنشاء واجهة مستخدم تفاعلية لإدارة عملية الصرف.
- إنشاء قواعد البيانات:
- تصميم الجداول:
بعد إنشاء قاعدة البيانات سوف نقوم بتصميم الجداول وتحديد الحقول اللازمة لكل جدول. وسنتأكد من العلاقات بين الجداول وتحديد المفاتيح الأساسية.
- إنشاء واجهة المستخدم:
سنقوم بإنشاء نماذج وتقارير مخصصة لتسهيل التفاعل مع البرنامج. سنصمم نماذج الإدخال والتحرير وأيضًا تقارير الخروج.
- تطوير الوظائف والإجراءات:
بعد إنشاء قاعدة البيانات والواجهة، سنقوم بتطوير الوظائف والإجراءات اللازمة لتنفيذ العمليات المحاسبية مثل إدخال المعاملات، إجراء الحسابات، إنشاء التقارير، إلخ.
- اختبار وتصحيح الأخطاء:
سنقوم بتشغيل البرنامج واختباره بعناية للتأكد من سلامة العمليات والتصحيح أي أخطاء قد تظهر.
- التوثيق والتدريب:
سنقوم بإعداد وثائق تفصيلية للبرنامج وتدريب المستخدمين على استخدامه.
من خلال الأكسس تستطيع القيام بعمل برنامج بحسب طلبك، ونحن سنقوم ببناء برنامج محاسبي وسنبدأ فيه من الصفر حتى النهاية، خطوة بخطوة
يوفر لنا الاكسس ACCESS صناديق النص، وأزرار الأوامر، والقوائم المنسدلة، ومربعات الاختيار، وعناصر التحكم في التاريخ والوقت، والعناصر النصية الغنية وغيرها الكثير، مع قدرتنا على تغيير الألوان والخطوط والأشكال والحجم، وأيضاً تطبيق قواعد الصحة والتحقق على الحقول وذلك لأجل ضمان إدخال البيانات بشكل صحيح وفقًا للقواعد المحددة.
وسنقوم بالتالي في هذا الدرس.
- كيفية ادخال البيانات عبر النموذج
- كيفية حفظ البيانات داخل النموذج
- كيفية حذف صرف او بيانات الصرف
- كيفية التعديل في نموذج الصرف
- كيفية استعراض سند صرف
- كيفية طباعة سند الصرف
أولاً: نقوم بإضافة جدول جديد
- نقوم بإضافة الحقول المطلوبة وذلك بحسب طبيعة عملك لنموذج الصرف.
- نحن سنقوم بعمل الجدول وذلك لعمل نموذج صرف محاسبي .
- سنقوم بتسمية الجدول كالتالي: Accounts
- وبتكون أسماء الحقول كالتالي:
ID
Date_qab
ID_Gn_HH
no_bankH
AccId_qb
Details
Check_No
إلى آخر الحقول كما هو موضح في الصورة التالية:
![]() |
أسماء حقول الجدول |
خطوات بناء النموذج باستخدام جدول Accounts كمصدر للسجلات:
- إنشاء النموذج:
في Access انتقل إلى علامة تبويب "إنشاء" ثم انقر على زر "النماذج" واختر "نموذج جديد" لإنشاء نموذج جديد.
يمكنك الاطلاع على: إنشاء النماذج CREATE FORMS في الأكسس
- تحديد مصدر بيانات السجلات:
في نافذة إنشاء النموذج الجديدة، انقر على "اختيار الجداول/الاستعلامات" واختر جدول "Accounts" كمصدر للسجلات.
- تخصيص تخطيط النموذج:
سحب الحقول من جدول "Accounts" إلى تخطيط النموذج لإضافتها. وأيضًا تغيير تنسيق وتخطيط العناصر حسب الحاجة.
- إضافة عناصر إضافية:
إذا كان هناك حقول أخرى تريد إضافتها إلى النموذج والتي ليست موجودة في جدول "Accounts"، يمكنك إضافتها يدويًا عن طريق سحبها من شريط الأدوات.
- حفظ النموذج:
إليك الخطوات:
- في تصميم النموذج انقر بزر الماوس الأيمن في منطقة التخطيط الرئيسية وحدد "إضافة حقول".
- في نافذة "إضافة الحقول"، ستجد قائمة بجميع الحقول المتاحة في جدول "Accounts".
- قم بتحديد الحقول التي تريد إضافتها إلى النموذج.
- بمجرد تحديد الحقول انقر على "إضافة" لإدراجها في تخطيط النموذج.
- يمكنك الآن سحب وإفلات هذه الحقول في الأماكن المناسبة في تخطيط النموذج حسب تفضيلاتك.
اقرأ أيضاُ: ماهي طرق فتح برنامج إدارة قواعد البيانات Microsoft Access ؟
ء
![]() |
إضافة الحقول الى النموذج |
بعظ أن قمت بإضافة جميع الحقول المطلوبة إلى النموذج، الان نقوم بتسمية كل حقل، تسمية وصفية وتسمية برمجية، والتسمية البرمجية هي المهمة بالنسبة لنا لأننا بنستخدمها في صناعة الأكواد، وتكون باللغة الإنجليزية حتى لا نواجه أي خطأ.
وسيتم إرفاق الملف للتطبيق عليه.
ونواصل الآن في عملية بناء هذا النموذج من خلال إضافة الأكواد البرمجية إليه لذلك احرص على التركيز وذلك لتجنب أي خطأ عند بناء الكود البرمجي.
حقل رقم الصندوق/ البنك.
- مصدر السجلات:
رقم الصندوق / البنك يحتاج إلى تحديد مصدر سجلاته، وبالطبع سيكون مصدر السجلات له هو جدول tblcash جدول النقدية، ونقوم بذلك من الجهة اليسار للأكسس بحيث نختار نافذة بيانات ـ ثم مصدر السجلات كما هو موضح في الصورة التالية:
![]() |
مصدر السجلات |
- عمل الأكواد لحقل رقم الصندوق/ البنك:
الاسم البرمجي لحقل الصندوق هو: txtCASHsar
الخطوة التالية هي إضافة التعليمات البرمجية الفعلية. ويجب على الجميع التركيز حتى لا يقع في أي خطأ، وعند قيامك بالتطبيق قم بتحديد الحقل "txtCASHsar" في تخطيط النموذج.
- انتقل إلى علامة تبويب "خصائص" للحقل المحدد.
- في قسم "الأحداث"، حدد "قبل التحديث" من القائمة المنسدلة.
وسنقوم بعمل الأكواد لحقل رقم الصندوق للوصول إلى النتائج التالية:
لضبط عملية الترقيم بحيث يكون الترقيم تسلسلي بحسب رقم الصندوق أو البنك
إنشاء نظام لتتبع ترقيم السندات المالية بناءً على رقم الصندوق أو البنك المحدد في نموذج الصرف.
الهدف هو أن يكون الترقيم التسلسلي للسندات مرتبطًا بكل صندوق/بنك على حدة.
على سبيل المثال:
- إذا كان رقم الصندوق/البنك هو 1، فسيبدأ الترقيم من 1 وينتقل تلقائيًا إلى 2، 3، 4 وهكذا.
- إذا كان رقم الصندوق/البنك هو 2، فسيبدأ الترقيم من 1 وينتقل تلقائيًا إلى 2، 3، 4 وهكذا.
- عند اختيار رقم الصندوق/البنك في نموذج الصرف، يقوم بجلب العدد التسلسلي بحسب رقم الصندوق ثم يأخذ أكبر قيمة.
- استخدم هذا الرقم التسلسلي كرقم السند للصرف الحالي.
- يقوم بزيادة الرقم التسلسلي لذلك الصندوق/البنك بواحد في قاعدة البيانات.
في حال أن المستخدم قام بمحاولة إدخال بيانات بدون الضغط على زر الإضافة.
في حالة عدم الضغط على زر الإضافة لإضافة سجل جديد، يجب أن يظهر للمستخدم رسالة تنبيه توضح أنه يجب عليه الضغط على زر الإضافة أولاً حتى يتمكن من إدخال بيانات جديدة.
هذا الحل سيضمن منع المستخدم من إدخال بيانات جديدة دون الضغط على زر الإضافة أولاً.
في حال أن الحساب موقف:
إذا تم توقيف أحد الحسابات المستخدمة في عملية الصرف. فعند محاولة الصرف من هذا الحساب الموقف، سيظهر للمستخدم رسالة تفيد بأن هذا الحساب تم توقيفه وبالتالي لا يمكن الصرف منه.
هذه الميزة تساعد في منع المستخدم من إجراء أي عمليات صرف من حسابات موقفة أو محظورة.
في حالة أن الشهر مقفل:
في حال كان الشهر الذي يتم إجراء الصرف فيه مقفلاً، سيقوم النموذج بعرض رسالة تفيد المستخدم بأن هذا الشهر مقفل
وبالتالي لا يمكن إجراء أي عمليات صرف فيه.
هذه الميزة تساعد في منع إجراء عمليات صرف في شهر مقفلة، مما يحافظ على سلامة البيانات المالية.
في حال التعديل وكان السند مرحل:
إذا كان السند الذي يتم التعديل عليه قد تم ترحيله بالفعل، سيعرض النموذج رسالة توضح أن هذا السند قد تم ترحيله وبالتالي لا يمكن إجراء أي تعديلات عليه.
بيانات المستخدم غير مكتملة:
إذا حاول المستخدم حفظ بيانات في النموذج دون إكمالها بالكامل (مثل بيانات الصرف)، سيظهر للمستخدم رسالة تفيد بأن العملية غير متزنة وبالتالي لا يمكن الحفظ. هنا نضمن عدم حفظ بيانات غير مكتملة، مما يحافظ على دقة وسلامة البيانات المالية.
في حال التحقق من أن السند تحت الانتظار:
إذا قام المستخدم بحفظ عملية صرف مع تحديد أنها "تحت الانتظار"، فلن يتم ترحيلها تلقائيًا عند ترحيل النموذج.
هذه العملية ستبقى "تحت الانتظار" حتى يقوم المستخدم بتفعيلها يدويًا. عند إعادة فتح النموذج والتعديل على هذه العملية، سيتم الحفظ التلقائي مباشرة.
نبدأ بتطبيق الأكواد:
انتقل إلى علامة تبويب "خصائص" للحقل المحدد. في قسم "الأحداث"، حدد "قبل التحديث" من القائمة المنسدلة.
سوف نقوم بإضافة حدث قبل التحديث وذلك للأمور التالية:
1. لضبط عملية الترقيم بحيث يكون الترقيم تسلسلي بحسب رقم الصندوق أو البنك.
مثلاً قمنا باختيار رقم الصندوق 1 بالطبع سيدأ الترقيم بدايةً من رقم: (1)، لكن إذا قمنا بإضافة سجل جديد آخر وتم اختيار صندوق رقم: (2) ، السؤال هل سيكون رقم الصرف: (1) أو بيكون الرقم: (2) بناء على الترتيب السابق للرقم: (1) للصندوق1
نحن نريد أن يكون الترقيم مستقل لكل صندوق على حدة وسنقوم بالشغل على هذا الأساس
فاذا قمنا بإضافة صرف اخر وتم اختيار رقم الصندوق2 فإنه يقوم بالترقيم بحسب رقم الصندوق2 وبيكون رقم السند: (1) وليس : (2)
لتنفيذ هذا يمكن استخدام الكود التالي:
typcashsarf = [txt_Ndafsarf] & [txt_Ndafsarf] & [txtCASHsar
AccId_sarf = DLookup("[accid_cash]", "tblcash", "[notyp_cash] = " & [typcashsarf]) MsgBox
End If
شرح الكـــــود:
typcashsarf :
نستخدم متغير typcashsarf لتتبع نوع الدفع (نقداً، شيك) وأيضا نوع السند(صرف، قبض).
لذلك عندما نقوم بالضغط على زر الإضافة يقوم النموذج بتحديث حقلين وهما حقل نوع الدفع (نقد، شيك) وحقل نوع السند( صرف، قبض)
1. txt_Ndafsarf: نوع الدفع (نقد، شيك)
2. txt_Ndafsarf: نوع السند( صرف، قبض)
3. txtCASHsar : رقم الصندوق أو البنك نحن نقوم بإدخال
typcashsarf= يساوي
typcashsarf = [txt_Ndafsarf] & [txt_Ndafsarf] & [txtCASHsar]
مثلا:
نوع السند = صرف قيمته 1
نوع الدفع= نقدا قيمته 1
رقم الصندوق= 1
إذا الحقل يساوي =111
مثال اخر
نوع السند = قبض قيمته 2
نوع الدفع= شيك قيمته 2
رقم الصندوق المدخل= 1
إذا الحقل يساوي =221
AccId_sarf = DLookup("[accid_cash]", "tblcash", "[notyp_cash] = " & [typcashsarf])
AccId_sarf: هو حقل رقم حساب الصندوق أو البنك.
نقوم بجلبه من جدول الصناديق في قاعدة البيانات
AccId_sarf = DLookup("[accid_cash]", "tblcash", "[notyp_cash] = " & [typcashsarf])
AccId_sarf:
tblcash:
notyp_cash:
typcashsarf:
مربع نص في النموذج تم شرحه مسبقاً.
ومعنى الكود هو:
قم بجلب رقم الحساب المسجل في جدول الصناديق بشرط إذا كان رقم نوع الحساب في جدول الصناديق يساوي مربع نص النموذج: typcashsarf
2. في حال أن المستخدم قام بمحاولة إدخال بيانات بدون الضغط على زر الإضافة.
إذا قام المستخدم بالضغط على حقل رقم الصندوق، ولم يقم بالضغط على زر "إضافة سجل جديد"، على الإطلاق فيجب أن يظهر للمستخدم تنبيه يوضح أنه يجب عليه الضغط على زر "إضافة سجل جديد" أولاً قبل إدخال أي بيانات جديدة.
هذه المعالجة تتعامل مع المستخدم أنه لا يستطيع أن يقوم بإدخال بيانات جديدة قبل إنشاء سجل جديد في النظام. وهذا سيساعد في الحفاظ على سلامة البيانات وتجنب أي أخطاء أو تداخلات في البيانات.
لتنفيذ هذا يمكن استخدام الكود التالي
الكود الخاص بالزر
I
f Me.vusar = 0 Then
MsgBox "عفوا اضغط زر الإضافة ", vbCritical, "تنبيه"
DoCmd.CancelEvent
Exit Sub
End Ifub
في هذا الكود:
شرح الكـــــود:
نستخدم متغير vusar لتتبع ما إذا كان المستخدم قد ضغط على زر الإضافة أم لا.
عند الضغط على زر الإضافة، نقوم بتحديث قيمة vusar إلى (1).
عند حفظ البيانات (بالضغط على زر الحفظ)، نتحقق من قيمة vusar ويعيد قيمته إلى (0) أو قيمة خالية
إذا لم يتم الضغط على زر الإضافة فسيتم عرض رسالة التنبيه للمستخدم.
في حالة عدم الضغط على زر نوع الدفع: (نقداً، شيك) لإضافة سجل جديد، يجب أن يظهر للمستخدم رسالة تنبيه تقول له أنه يجب عليه الضغط على زر نقداً أو شيك أولاً لأجل يستطيع إضافة بيانات جديدة في النموذج
لتنفيذ ذلك يتطلب القيام بالكود التالي:
نستخدم متغير nn لتتبع ما إذا كان المستخدم قد ضغط على زر نوع الدفع أم لا. عند الضغط على زر نوع الدفع، نقوم بتحديث قيمة nn إلى 1. وعندما نقوم بحفظ البيانات (بالضغط على زر الحفظ)، يقوم النموذج بتحديث قيمة nn ويعيد قيمته إلى 0 أو قيمة خالية
4. في حال أن المستخدم قام بمحاولة إدخال بيانات والحساب موقف.
1. إذا قام المستخدم بتوقيف حساب معين من خلال شاشة إدارة الحسابات، فسيتم تحديث حالة ذلك الحساب إلى "موقف".
2. عندما يحاول المستخدم إدخال رقم الحساب المُوقَّف في عملية الصرف يجب أن تظهر رسالة تنبيه تُخبره بأن الحساب تم توقيفه وأنه عليه تغيير رقم الحساب قبل أن يتمكن من استكمال العملية.في هذا المثال:
I
f Me.type_hesabsr2 = True Then
MsgBox "عفواً الحساب موقف ", vbCritical, "تنبيه"
DoCmd.CancelEvent
Exit Sub
End If
1. نستخدم متغير `type_hesabsr2` لمعرفة حالة الحساب (نشط أو موقف) وهذا الحقل يقوم بجلب قيمته من جدول أرقام الحسابات.
2. عند محاولة إدخال رقم الحساب، نتحقق من قيمة `type_hesabsr2 .
3. إذا كان الحساب موقف (أي type_hesabsr2 هو "false")، فسيتم عرض رسالة تنبيه للمستخدم.
وهذا يفيد بأن المستخدم لا يستطيع إضافة بيانات أو التعديل عليه وذلك بسبب أن الحساب قد تم توقيفه كما هو واضح بالصورة التالية:
![]() |
حالة الحساب |
5. في حال أن المستخدم قام بمحاولة إدخال بيانات ورقم السند مرحل.
في حال قد تم ترحيل السند الذي سيتم تعديله فإنه ستظهر رسالة تنبيه توضح بأن السند قد تم ترحيله ولا يمكن التعديل عليه:
هذا الكود يضمن عدم إجراء تعديلات على السندات التي تم ترحيلها، مما يحافظ على سلامة البيانات المالية.
If Me.tarhelsarf = -1 Then
MsgBox "السيد:" & Me.username_sar & " " & ("عفوا السند مرحل") & vbCr
DoCmd.CancelEvent
tarhelsarf:
اسم حقل الترحيل ويحمل قيمة (نعم/لا) في مصدر السجلات، ونقوم بالترحيل من شاشة ترحيل السندات، سيتم شرحها لاحقاً.
6. في حال أن المستخدم قام بمحاولة إدخال بيانات والشهر مقفل.
في حال قيام المستخدم بعمل صرف، بالطبع لن يستطيع إضافة أي بيانات في نموذج الصرف، والسبب أن الشهر الذي سيتم فيه صرف المبلغ مقفل أو موقف وسيتم تنبيه المستخدم بذلك وإظهار رسالة تفيده بذلك
If closed = -1 Then
MsgBox "السيد:" & "" & Me.username_sar & " " & ("عفوا الشهر موقف") & vbCr
beforsarf = False
ونقوم بتوقيف الشهر من شاشة الأشهر، سيتم شرحها لاحقاً.
وأخيراً:
7. عند إضافة رقم الصندوق/ البنك سيتم التالي بشكل تلقائي:
عند إضافة رقم الصندوق/ البنك سيتم التالي بشكل تلقائي:
- في حال كان الحساب بالعملة الأجنبية:
إذا كانت العملة عملة أجنبية فإنه سيظهر تلقائيا اسم الصندوق وكذلك اسم العملة وسعر الصرف لأن العملة مرتبطة برقم الحساب وسعر الصرف للعملة. بالإضافة إلى أن النموذج يقوم بإدارة حقل السعر ويظهر السعر بناء على إدخال لسعر العملة في شاشة العملات كما هو موضح في الصورة التالية:
حقل المبلغ:
حقل المبلغ: اسمه البرمجي: textDaensarf
الكود يقوم بالتحقق من العملية قبل الإضافة:
DoCmd.If IsNull(Trim(Me.txtCASHsar)) ThenMsgBox "لا يمكن إضافة المبلغ قبل اختيار رقم الحساب ", vbCritical, "تنبيه"DoCmd.CancelEventExit SubEnd IftextRseedsarf = DLookup("[rs]", "[Qarseda]", "[AccId_sarf]=[AccId] ")MsgBox "رصيد غير كافي - رصيدك الحالي هو " & textRseedsarf & " " & pr_acy & " " & "فقط لاغير"textRseedsarf.Requerynmsarf.Visible = TrueIf Me.textDaensarf > Me.textRseedsarf Or Me.textRseedsarf = "" ThenIf Me.textRseedsarf > 0 ThenEnd IfMsgBox "رصيد غير كافي - الرصيد عليكم هو " & textRseedsarf & " " & pr_acy & " " & "فقط لاغير"If MsgBox("هل تريد الاستمرار بالعملية", vbYesNo, "تأكيد الاستمرار") = vbNo ThenDoCmd.CancelEventMe.Undo'texbb = Forms![FN_SARFSHEEK1]![formSHEEK]![TTOO]If Me.CurrTypes = True ThenMe.pricesar.Visible = FalseMe.price_sar1.Visible = FalseEnd IfIf Me.CurrTypes = False ThenMe.pricesar.Visible = TrueEnd IfMe.price_sar1.Visible = TrueRefresh[userq] = [Nu]Me.RefreshEnd IfElseEnd If
- في حالة المحاولة بإدخال المبلغ قبل عملية الضغط على زر الإضافة.
- في حالة أن الحساب رصيده غير كافي لعملية الصرف فإنه يقوم بتنبيه المستخدم واعطاءه خيارين هل تريد المتابعة
textRseedsarf = DLookup("[rs]", "[Qarseda]", "[AccId_sarf]=[AccId] ")
إذا كان نعم يقوم البرنامج بتمكين المستخدم بتكملة الصرف، وفي حال اختار لا، يقوم البرنامج بعملية التراجع للصرف.
ءاخر
![]() |
الحساب رصيده غير كافي |
عند إدخال المبلغ بالعملة الأجنبية، النموذج يقوم تلقائيًا بحساب المعادل بالعملة المحلية عن طريق ضرب المبلغ بسعر الصرف المدخل.
هذا المبلغ بالعملة المحلية يظهر في حقل مخصص لذلك.
عناصر النموذج:
النموذج يحتوي على ثلاثة عناصر مهمة وهي:
طبعاً كما هو معروف أن السند المحاسبي أو القيد أو الصرف يتكون من قيدين الأول مدين والثاني دائن
والمربع الأعلى هو أحد أطراف هذا القيد أما بالنسبة للجزء الأسفل فهو عبارة عن نموذج عرض للسندات السابقة والتي تم صرفها، حيث يمكنك استعراض السندات بشكل مريح وبسهولة جداً.
العنصر الأول:
الجزء العلوي والذي يحتوي على الحقول التي تم شرحها سابقاً
الجزء الثاني:
هو عبارة عن تفاصيل سند الصرف.
الجزء الثالث:
عبارة عن عرض لسند الصرف بعد القيام بعملية الحفظ.
عناصر النموذج: |
- زر الحفظ:
- زر التعديل:
- زر الحذف:
- زر الجديد:
- يفتح نموذج جديد للإدخال. CmdNsar
- عند الضغط على زر "جديد"، يتم فتح جميع الحقول في النموذج لإتاحة إدخال البيانات الجديدة.
- في حالة الوضع الافتراضي، تكون بعض الحقول مقفلة لمنع التعديل العشوائي.
شرح إضافة أزار تحكم في النموذج
نقوم أولاً بعمل زر جديد ونسميه جديد وأيضاً نقوم بالتسمية البرمجية للزر: CmdNsar
كما هو واضح في الصورة
CmdNsar |
ثم نذهب الى خصائص الزر ونختار حدث عند النقر وتقوم بكتابة الكود والذي هو بمعنى اذا تم الضغط على جديد فانه يذهب او يعمل على سجل جديد ويتيح لنا ادخال بيانات جديدة في نموذج الصرف.
خصائص الزر |
عند الضغط على زر الإضافة يجب أيضاً الضغط على نوع الصرف هل هو نقداً أو شيك، وفي حالة عدم الضغط على زر نوع الصرف ستظهر لك رسالة تنبيه بأنه يجب عليك اختيار نوع الصرف على نقداً أو شيك كما هو موضح في الصورة التالية:
نوع الصرف |
زر الحفظ:
سوف يقوم البرنامج بفحص الحقول الفارغة قبل السماح بعملية الحفظ لضمان اكتمال البيانات، كما يقوم بفحص الصحة والاتساق للعمليات السابقة قبل السماح بالتنفيذ الجديد، وفي حال وجود أخطاء يقوم بإبلاغ المستخدم.
زر التراجع:
يتيح للمستخدم التراجع عن آخر عملية تعديل تمت. وسيتم الشرح بالتفصيل كالتالي:
كود زر الجديد: CmdNsar
زر "جديد" يتم إعادة تسميته إلى "تراجع"
وزر "تعديل" يتم تغييره تلقائيًا إلى زر "حفظ"هذا التغيير في أزرار التحكم يسهل تدفق العمل للمستخدم عند إنشاء إدخالات جديدة أو تحرير إدخالات موجودة.
عندما يضغط المستخدم على "جديد"، سيعمل البرنامج على تجهيز الحقول للإدخال الجديد، وتغيير الأزرار لتتناسب مع هذه العملية، ليصبح زر جديد هو زر التراجع.
الكود التالي يقوم بالتحقق من الصلاحيات سيتم شرح نموذج الصلاحيات لاحقاً
إذا كان المستخدم يملك صلاحيات الإضافة فإنه يقوم الصرف بفتح الحقول وتمكينها وإذا كان المستخدم ليس له صلاحيات الإضافة فإن النموذج يظهر له رسالة بأن ليس له صلاحيات الإدخال.
On Error Resume NeIf DLookup("[a]", "[FrmAbility]", "[Nu]=[sn] And [FRM]='FN_SARFSHEEK1'") = True ThenMe.AllowEdits = True
- FrmAbility:
- SN:
- Nu:
- FN_SARFSHEEK1:
- a:
ومعنى الكود:
حقل الرصيد:
الكود التالي:
- textRseedsarf : اسم حقل الرصيد في النموذج
- Qarsedafn: اسم عمود الرصيد في استعلام الرصيد
- Qarsedafn: اسم استعلام الرصيد
- AccId_sarf: اسم رقم الحساب في استعلام الرصيد
- AccId: اسم رقم الحساب في النموذج
Qarsedafn: اسم استعلام الرصيد
إذا كان زر جديد والذي اسمه البرمجي:CmdNsar اسمه جديد
قم بعملية تمكين عملية الإدخال وقم بعمل سجل جديد:
زر التعديل CmdE_sar:
زر التعديل CmdE_sar : يتيح للمستخدم تعديل البيانات الموجودة.
في حالة قمنا بالتعديل فإن النموذج سيقوم بحفظ حقل رقم المستخدم بأنه قد تم تعديل السند وكذلك حفظ بيانات الجهاز الذي تم تعديل البيانات فيه بالإضافة إلى مرات التعديل الذي قام به المستخدم
كما في الصورة التالية:
تعديل السند |
الكود التالي: يقوم بالتحقق من البيانات، هل هناك بيانات معروضة في النموذج أم لا. في حال لم يكن هناك بيانات سيتم عرض رسالة بأنه لا يوجد بيانات للتعديل
عرض رسالة بأنه لا يوجد بيانات للتعديل |
- FrmAbility:
- Nu:
- FN_SARFSHEEK1:
- e:
ومعنى الكود:
تحقق من العمود:e في جدول الصلاحياتFrmAbility هل هو نعم أم لا بشرط إذا كان:SN يساوي: Nu في النموذج. يساوي:True فإن: Then. تمكين الحقول من الإضافة أو التعديل: Me.AllowEdits = True
الكود التالي يقوم بالمهام التالية:
في حال أن السند قد تم ترحيله:
إذا كان السند الذي يتم محاولة التعديل عليه قد تم ترحيله بالفعل، فإن النموذج المستخدم لإجراء التعديلات سيعرض رسالة للمستخدم توضح أن هذا السند قد تم ترحيله بالفعل، وبالتالي لن يتمكن المستخدم من إجراء أي تعديلات على هذا السند، هذا الحل مهم لحماية سلامة البيانات المالية في النظام.
فبمجرد ترحيل السند لن يتمكن المستخدم بإجراء أي تعديل، وذلك لضمان عدم حدوث أي تغييرات عشوائية أو غير مصرح بها تؤثر على السجلات المالية.
هذا الكود الذي تم ذكره يضمن هذا الأمر بشكل فعال. وعند محاولة المستخدم إدخال بيانات التعديل على سند تم ترحيله، سيتم عرض رسالة تنبيه للمستخدم لإبلاغه بعدم إمكانية إجراء أي تعديلات. وهذا يحافظ على سلامة البيانات المالية في النظام.
في حال أن البيانات غير المكتملة:
إذا حاول المستخدم حفظ بيانات في النموذج دون إكمالها بالكامل (مثل بيانات الصرف)، سيظهر للمستخدم رسالة تفيد بأن العملية غير متزنة وبالتالي لا يمكن الحفظ. هنا نضمن عدم حفظ بيانات غير مكتملة، مما يحافظ على دقة وسلامة البيانات المالية.
في حال عملية تحت الانتظار:
إذا قام المستخدم بحفظ عملية صرف مع تحديد أنها "تحت الانتظار"، فلن يتم ترحيلها تلقائيًا من شاشة الترحيل. هذه العملية ستبقى "تحت الانتظار" حتى يقوم المستخدم بإلغاءها يدويًا. وعند إعادة فتح النموذج والتعديل على هذه العملية، سيتم الحفظ مباشرة.
هذا الكود مرتبط بكود اخر وسيتم الحصول عليه من خلال النموذج المرفق ثم ننتقل إلى الكود التالي الذي يقوم بعمل تمكين الحقول للمستخدم لعملية التعديل
vusar = 2 هنا نقوم بتأمين الحقول بعد أن نقوم بالضغط على زر الحفظ حتى لا يستطيع أحد التلاعب بالبيانات.
في الكود التالي: يقوم بعمل شرط، هذا الشرط يقوم بتحديد ما إذا كانت العملة المستخدمة هي عملة محلية أم عملة أجنبية.
وبناءً على ذلك يتم تنفيذ إجراء معين:
- إذا كانت العملة محلية (type_of_currency = true):
- إذا كانت العملة أجنبية (type_of_currency == false):
لإظهار الحقول المرتبطة بالسعر الأجنبي.
زر الحذف cmdD:
زر الحذف cmdD : يحذف السجل أو البيانات المحددة من النظام.
الكود التالي: يقوم بالتحقق من البيانات، هل هناك بيانات معروضة للقيام بحذفها في النموذج أم لا
في حال لم يكن هناك بيانات سيتم تنبيه المستخدم برسالة بأنه لا يوجد بيانات للحذف
التحقق من وجود بيانات للحذف |
هذا الكود يقوم بالتحقق من صلاحية المستخدم من حذف بيانات من النموذج
- FrmAbility:
ومعنى الكود:
تحقق من العمود:d الموجود في جدول الصلاحياتFrmAbility هل هو نعم أم لا بشرط إذا كان:SN يساوي: Nu في النموذج
يساوي:True فإنه يمكنه عملية الحذف مالم يتم إظهار رسالة تفيد بأنه ليس له صلاحية الحذف
هذا الكود يقوم بالتحقق من صلاحية المستخدم من فتح النموذج والتعديل عليه
يقوم الكود من التحقق من اشياء كثيرة وقد تم ذكرها في زر التعديل منها
في حال أن السند الذي تريد حذفه قد تم ترحيله بالفعل، فإن النموذج المستخدم لإجراء الحذف سيعرض رسالة للمستخدم توضح بأن السند قد تم ترحيله مسبقاًزر البحث:
يتم اختيار رقم الحساب البنكي أو الصندوق من قائمة الخيارات المتاحة.
- يتم إدخال رقم الصرف في الحقل المخصص لذلك.
- الضغط على زر البحث
بعد الضغط على زر البحث، يتم عرض تفاصيل الصرف كاملة وإمكانية تعديلها.
في حالة أن الصرف لم يتم ترحيله، والمستخدم له صلاحية التعديل والشهر غير مقفل فإنه يتم تمكين المستخدم من تعديل الحقول المختلفة بعد الضغط على زر "تعديل".
زر البحث: |
وأخيراً زر الطباعة:
- سند صرف
- سند شيك
- سند خاص بالعميل
زر الطباعة: |
نتشرف بتعليقاتكم ووضع آرائكم