اذهب الي المحتوي
أوفيسنا

درس اعداد برنامج صندوق خيري


ابوخليل

الردود الموصى بها

اكمالا لموضوع اخونا ابو الوليد هناhttp://www.officena.net/ib/index.php?showtopic=54716

  او بالاصح  اعادة تصميم وهيكلة لبرنامج الصندوق

فنبدأ بسم الله  ثم ننشء الجداول مع ملاحظة مايلي :

1- تسميات الجداول والحقول بحروف انجليزية والتسمية التوضيحية باللغة العربية

ليسهل علينا كتابة الاكواد مستقبلا عند الحاجة

2- جدول لبيانات الاشخاص

3- جدول لتفاصيل العمليات

4 - جداول خدمية

أ- جدول للعمليات الرئيسية

ب - جدولين للعمليات الفرعية

ج - جدول للشهور والسنة

يجب ملاحظة ان جدول التفاصيل يشتمل على اكثر من مربع تحرير وضعناها فقط مؤقتا حتى انتهاء التصميم وسيتم لاحقا ارجاع الحقول الرقمية الى مربعات حقول عادية

 

آمل الاطلاع على المرفق  وانتظر الملاحظات والاستفسارات ان وجدت ، قبل الانتقال الى الخطوة الثانية

صندوق1.rar

رابط هذا التعليق
شارك

الاخ ابو خليل..
السلام عليكم ورحمة الله وبركاته،،
لقد اطلعت على الجداول وتصميمها ولدي استفسارات بسيطه تحتاج الى توضيح لو تكرمت وهي كالتالي:
 
1- العلاقة بين (tblAsma وtblTfseel) من نوع رأس بأطراف وتم اختيار التكامل المرجعي وتتالي التحديث والحذف، 
بينما العلاقة بين (tblNoa و tblNoaSub ) هي ايضا من نوع رأس بأطراف ولكن لم يتم الا اخيار حانة التكامل المرجعي فقط، لماذا؟
2- لماذا جعلنا من خصائص حقل السنة في جدول الشهر انه غير مفهرس بعكس حقل الشهر .. ؟
3- ما الفرق ان يكون حجم الحقل ( بايت أو عدد صحيح أو مزدوج أو غيره ...)
4- متى نحتاج ان نستخدم المفتاح الاساسي في اي جدول؟
 
اتمنى تكون استفساراتي واضحة، وان كانت الاجابة عليها ميسرة .. لننطلق الى الخطوة التالية ..على بركة الله
رابط هذا التعليق
شارك

 العلاقة بين (tblAsma وtblTfseel) من نوع رأس بأطراف وتم اختيار التكامل المرجعي وتتالي التحديث والحذف، 

 

هذه لم اعملها حيث قمت بالتعديل على جداولك السابقة ولم انتبه لها

والافضل الاكتفاء بالتكامل المرجعي  ولا بأس بالتحديث ولكن الحذف لا احبذه

 

(tblNoa و tblNoaSub ) هي ايضا من نوع رأس بأطراف ولكن لم يتم الا اخيار حانة التكامل المرجعي فقط، لماذا؟

 

وهذه عكس الاولى ولا باس من تطبيق تتالي التحديث والحذف لاننا قد نحتاج مستقبلا لتغيير مسميات ،

ايضا ليس هناك محاذير بفقد بيانات تاريخية كالأولى

 

لماذا جعلنا من خصائص حقل السنة في جدول الشهر انه غير مفهرس بعكس حقل الشهر .. ؟

 

رقم السنة واحد في جميع الحقول فما جدوى الفهرسة

 

 ما الفرق ان يكون حجم الحقل ( بايت أو عدد صحيح أو مزدوج أو غيره ...)

 

نضع الحجم حسب الحاجة فما دامت الارقام لن تتعدى 255 فالاولى ان يكون حجمها بالبايت

حجم الحقول في الجداول يتناسب طرديا مع حجم قاعدة البيانات ، وهذا لا شك يؤثر على حجم القاعدة من غير ضرورة

للمزيد راجع الرابط التالي http://office.microsoft.com/ar-sa/access-help/HA010231953.aspx#BMnumberfs

 

4- متى نحتاج ان نستخدم المفتاح الاساسي في اي جدول؟

 

المفتاح ولو لم يكن هناك حاجة اليه  فإنه ينصح به بشدة فقد نحتاجة لربط علاقة بجدول آخر  او حينما نريد تطوير القاعدة وتكبيرها وهو مهم جدا لمنع تكرار البيانات في حقل واحد او حقول متعددة .

رابط هذا التعليق
شارك

الخطوة التالية سنقفز من خلالها الى صلب الموضوع  وهي الجزء المهم في برنامجك والذي جعلنا نعيد خطواتنا من البداية

حيث ان البرنامج عبارة عن جزئين :

1- ايرادات شهرية ثابتة شبيهة بالاقساط

وهذه الايرادات تحتاج الى متابعة في الادخال  وفي الاستعلام عن المتأخرات

والقسم الاكبر من هذه الايرادات منضبط بجدول  زمني ومالي معين

ولكن لا يستبعد وجود جزء غير منضبط كالمساعدات المقطوعة  مثلا

2- مصروفات :

وهي عملية عادية جدا ومعلومة ونحتاج فيها الى نموذج فقط لادخال المصروفات

 

اذا سنعمل على ايجاد طريقة مرنة  ومريحة للمستخدم  عند التعامل مع البرنامج

وسأتبع في شرحي طريقة التصور ثم التطبيق :

 

وسنبدأ بالايرادات ونفتح النموذج الخاص بالاشتراكات

1- يظهر ثلاث حقول ( حقل للشهرالحالي وحقل للتاريخ  ) مع امكانية تغيير الشهر

الحقل الثالث فارغ وهو لادخال المعرف

حين ندخل المعرف ثم ننقر ادخل  يظهر لنا بعض البيانات التعريفية المطلوبة

الاسم ، نوع الاشتراك ، المبلغ ، آخر شهر تم تسديده  + ايقونة للحفظ

عند الحفظ يتم التسديد وفي اللحظة نفسها يختفي كل شيء ما عدا حقل الشهر 

لنبدأ البحث عن مشترك جديد

ملحوظات:

- سيتم التنبيه في حال تطابق الشهر المستهدف  مع آخر شهر تم تسديده

- من الضروري ايجاد تسمية لنوع الاشتراك فمثلا اشتراك ذهبي وقيمته 500  واشتراك فضي وقيمته 200 وهكذا

من خلال هذا التصور يتضح لنا سهولة عملية الادخال  وانها تتم بحركتين فقط

واحدة  في ادخال المعرف والثانية بنقر زر الحفظ

 

إقرأ بتمعن ووافني بمرئياتك

رابط هذا التعليق
شارك

ممتااااز جدا جدا ،، طريقه رائعه وسهلة .. 
وستوفر الكثير من الوقت والجهد على المستخدم في عملية ادخال الاشتراكات الشهرية
 
ولكن هناك سؤالين .. 
1- هل يمكن تغيير حقل السنة كما هو الحال بالنسبة للشهر ، حيث ان عمليات الصندوق
قد تستمر الى سنوات قادمه وربما يتم الرجوع لسنوات سابقة ايضا..؟
 
2- بالنسبة للحقل الثالث (حقل المعرف) اذا كان المطلوب من المستخدم ادخال رقم
فسيكون من الصعب معرفة ارقام التعريف لجميع المشتركينالا اذا كان هناك مربع تحرير وسرد
يظهر رقم واسم المشترك في حقلين وبذلك يسهل اختيار الشخص المراد؟ أم ان هناك طريقة اخرى؟
رابط هذا التعليق
شارك

تغييير السنة يكون على رأس السنة ونستخدم في ذلك تحديث حقول السنة

وسنضع ضابطا لذلك بحيث يتم التنبيه  حال دخول السنة الجديدة

 

اما حقل المعرف  فسيكون بجانبه منسدلة لاختيار الاسم

 

اجريت بعض التعديلات الضرورية على الجداول  فراجعها لترى التغيير الحادث

انشأنا استعلاما يربط بين جدول الاسماء وجدول انواع الاشتراكات

وستلاححظ انه حينما تتغير قيمة الاشتراك فاننا لسنا مضطرين للتغيير لكل شخص

بل يكفي التغيير على القيمة الموجودة امام كل نوع وهذه التغييرات سنفرد لها لاحقا نموذجا خاصا 

ايضا انشأنا نموذجا فرعيا يقوم بعرض اخر دفعة للشخص المعين

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

 

وفي المثال غنية عن الاستطراد في المقال

وكما اتفقنا الدراسة المتأنية وعرض ما يصعب فهمة

فقد اطرح عليك بعض الاسئلة  :Rules:

صندوق2.rar

رابط هذا التعليق
شارك

السلام عليكم اخ ابو خليل ..

 

بالنسبة للجداول تفحصتها ولاحظت التغييرات التي اجريت عليها .. 

حيث أصبح هناك جدول للعمليات  مرتبط مع كل من جدول عمليات الوارد وجدول عمليات المصروف

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

 

1- لماذا تم الربط بين المفتاح الاساسي في جدول النوع مع حقول غير المفاتيح الاساسية في جدولي الوارد والمصروف؟

أم ان الامر يؤدي نفس الغرض..

 

2- ما الغرض من جعل حقلي الشهر والسنه في جدول التفاصيل مفاتيح أساسية؟

 

أما بالنسبة للنماذج: 

 

طريقة استدعاء بيانات بمجرد اختيار المعرف أو الاسم في النموذج هذه غامضة بالنسبة لي ..

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

 

وبشكل عام طريقتك في تصميم البرنامج واضحة بالنسبة لي وانا متابع تماما لكل ما قمت به من تغييرات..

رابط هذا التعليق
شارك

حيث أصبح هناك جدول للعمليات  مرتبط مع كل من جدول عمليات الوارد وجدول عمليات المصروف

 

تقصد حدث فصل لجدول الفرعيات فاصبحا اثنين

 

1- لماذا تم الربط بين المفتاح الاساسي في جدول النوع مع حقول غير المفاتيح الاساسية في جدولي الوارد والمصروف؟

 

العلاقات وربطها   تكون على ثلاث حالات :

1- علاقة رأس برأس او واحد الى واحد ويجب هنا ان يكون كلا الطرفين مفاتيح او سجلات فريدة غير قابلة للتكرار

2- علاقة رأس باطراف او واحد الى كثير (متعدد)  ويجب هنا ان يكون الرأس مفتاح او سجل فريد غير قابل للتكرار وبالمقابل الطرف الآخر يجب ان يكون قابل للتكرار

3- علاقة اطراف بأطراف او متعدد الى متعدد وهذه حالة خاصة نقوم بتوظيف جدول ثالث كوسيط بين الجدولين

 

2- ما الغرض من جعل حقلي الشهر والسنه في جدول التفاصيل مفاتيح أساسية؟

 

والمعرف ايضا 

حين نجعل حقلا في  الجدول   مفتاحا  فإننا  نمنع حدوث التكرار في هذا الحقل

وحين نضع مفتاحين فإننا نمنع التكرار في الحقلين مجتمعين فقط مع امكانية التكرار في الحقل منفردا

وكذلك ثلاث مفاتيح

فمثلا محمد  معرفه = 101 والشهر = رمضان  والسنة = 1435  

وهذه لا يمكن ان تتكرر ابدا

ولكن يمكن ان يتكرر الرقم 101  ورمضان ولكن ليس في سنة 1435 ..... وهكذا

وهذا ينطبق عل حقول المفاتيح الباقية  

 للشرح بقية ...

رابط هذا التعليق
شارك

نحن الآن عملنا الجداول
1- جدول بالاسماء 
2- جدول نوع الاشتراك والمبلغ
3- جدول التفاصيل او العمليات
ونريد ان نبني على جدول العمليات نموذجا  ندخل من خلاله اسم الشخص والبيانات اللازمة
ويكفي ان نرصد فيه الشهر + السنة + تاريخ الادخال +نوع الاشتراك + المبلغ + معرف الشخص
حيث نستطيع اظهار الاسم في التقارير بناء على هذا المعرف
وحيث ان المعرف في جدول والمبلغ في جدول آخر  فعلى هذا يلزمنا عمل استعلام يجمعهما 
 
الخطوة الأولى :
نعمل نموذجا بواسطة المعالج او يدويا ويكون مصدر بياناته جدول العمليات 
وحيث اننا لن نقوم بادخال البيانات في الحقول مباشرة يدويا 
وانما سنعمل على ادخالها بواسطة امر برمجي فإننا سنعمل على اخفاء الحقول بحيث لا يراها المستخدم
 
اذا ما هو الشيء الظاهر على النموذج ؟
 
الخطوة الثانية :
سنقوم بانشاء حقول غير منضمة ونسميها مثلا  txt1 , txt2 , txt3 .... وهكذا
وسنقوم بجلب البيانات اليها من الاستعلام المذكور باستخدام الدالة DlookUp
Me.TXT1 = DLookup("esm", "QryEshtrak", "UserU='" & Me.UID & "'")
Me.TXT2 = DLookup("NoaNm", "QryEshtrak", "UserU='" & Me.UID & "'")
Me.TXT3 = DLookup("sid", "QryEshtrak", "UserU='" & Me.UID & "'")
Me.TXT4 = DLookup("Scrb", "QryEshtrak", "UserU='" & Me.UID & "'")
لا حظ اننا وضعنا شرطا وهو   "UserU='" & Me.UID
اي ان المعرف في الاستعلام  useru يساوي المعرف الذي كتبناه في الحقل UID
وقد وضعنا هذه الاسطر في حدث بعد التحديث لحقل UID
 
ايضا وضعنا ضابطا قبل هذه الاسطر للتأكد من وجود الرقم داخل الاستعلام واستخدمنا ايضا الدالة DlookUp ايضا
مثل السابقات لتصبح الجملة هكذا
Dim myID As Boolean  ' اعلان عن متغير نعم/لا
myID = DLookup("UserU", "QryEshtrak", "UserU='" & Me.UID & "'") 
If myID = False Then ' اذاكان غير موجود
MsgBox "لا يوجد اسماء ! تأكد من الرقم"
UID = ""
UID.SetFocus
Exit Sub
End If
الخطوة الثالثة :
انشأنا مربعي تحرير
الاول يظهر الشهر من جدول الشهر ويحتوي على حقل السنة ولكنه غير ظاهر للعيان
الثاني يظهر الاسماء من جدول الاسماء ومعه المعرف وهو القيمة الفعلية لمربع التحرير ولكننا اخفيناه ايضا عن الانظار
فعند اختيار الاسم من مربع التحرير (حدث بعد التحديث ) يقوم بطبع الرقم المعرف داخل الحقل UID ثم يقوم بتحديث الحقل UID لتفعيل وتشغيل الحدث
واستخدمنا لذلك السطرين التاليين
UID = co1
Call UID_AfterUpdate
حيث co1 هو اسم مربع تحرير الاسماء
 
للشرح بقية
رابط هذا التعليق
شارك

الخطوة الرابعة :
ذهبنا الى خصائص النموذج /لسان التبويب : بيانات ثم غيرنا القيمة ادخال بيانات الى : نعم
والفرق بين ان نجعلها نعم او لا  كالتالي :
- النموذج في حال ادخال البيانات =لا
1- البيانات تظهر للمستخدم
2- يمكن استخدام ازرار التنقل بين السجلات
3- امكانية البحث والعرض
- النموذج في حال ادخال البيانات = نعم
1- كل الخصائص السابقة غير ممكنة
2- عند فتح النموذج يكون جاهزا لادخال بيانات جديدة
 
الخطوة الخامسة :
انشاء زر عند النقر عليه يقوم بنسخ البيانات الظاهرة والتي جلبناها من الاستعلام الى حقول النموذج التي اخفيناها
ومن ضمنها حقل الشهر  وحقل السنة المضمن داخله على النحو التالي :
Me.UserId = UID  ' المعرف
Me.Noa = 101 ' الرقم يعني العملية وهي الايرادات وهذا الرقم ثابت
Me.tfNoa = TXT3 '  نوع العملية او الاشتراك
Me.Amount = TXT4 ' المبلغ
 Me.shahr = txt0  ' الشهر
Me.sanah = Me.txt0.Column(2) ' السنة وهي مضمنة في العمود الثاني في مربع التحرير
Me.Sdate = Date ' تاريخ اليوم
 
الخطوة السادسة :
انشاء نموذج فرعي مصدره جدول العمليات ونوظف داخله استعلام يستخرج آخر تاريخ لكل شخص وطبعا آخر تاريخ هو آخر دفعه تم سدادها
ونجعل الرابط بين النموذج الرئيسي والنموذج الفرعي هو المعرف
 
هذا ما تهيأ لي ايضاحه
 
اخوتي الكرام : مجال الاستفسار والمناقشة مفتوح للجميع حتى نستفيد ونفيد فهذا درس بدأه اخوكم ابو الوليد  جزاه الله خيرا
 
رابط هذا التعليق
شارك

ولك بالمثل اخي

انت شريك في هذا العمل وأرى ان نسند اليك بعض المهام

وهي عملية الديكوروالاخراج  في النماذج  والتقارير 

فنحب ان نرى لمساتك الفنية من خلالها

رابط هذا التعليق
شارك

اشكرك على هذا الثناء .. اخي ابو خليل

ولو انني اطمح لان اتعلم اكبر من الديكورات واللمسات الفنيه من خلال توجيهاتكم ومن خلال خبراتكم التي نغبطكم عليها..حفظكم الله وجزاكم عنا كل خير..

رابط هذا التعليق
شارك

 خبراتكم التي نغبطكم عليها

 

هذا من الحسد المباح  

ومن بين ثنايا اجابتك الذكية .. يتضح التهرب  :mad:

 

الخطوة التالية :

ادخال التبرعات المقطوعة

 

الآن قم بادخال  البيانات  لعدد وافي من السجلات لكلا النوعين

1- بيانات اشخاص سددوا شهرين مثلا

2- اشخاص سددوا شهر

3- اشخاص لم يسددوا ابدا

4- اشخاص تبرعوا بمبالغ مقطوعة

5- اشخاص مشتركين وتبرعوا بمبالغ مقطوعة

حتى يتم التطبيق الصحيح عند البحث والاستعلام

صندوق3.rar

رابط هذا التعليق
شارك

أبو خليل .. كل عام وانتم بخير .. عيدكم مبارك أعاده الله علينا وعليكم بالصحة والعافية

 

بالنسبة لنموذج المصاريف ممتاز جدا ،، 

إلا انني اقترح ان يكون هناك حقل خاص باسم الشخص المعني بعملية الصرف .. بمعنى

أنه اذا كان مثلا فلان من المشتركين حصل على دعم زواج من الصندوق فيتم اختيار اسمه والمبلغ والتاريخ في نفس النموذج

وهكذا بالنسبة لبقية المصروفات سواء عزاء، او نثريات او غيره ..

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

 

وتقبل تحياتي..

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information