الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

منع التكرار لشهر في سنة معينة

بدأه girlsqueen1 في 8 يوليو 2009 · 30 رد · 2,316 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

ارفقت لكم برنامج خاص ببيانات صرف خارج دوام للموظفين اي الاوفرتايم

الهدف من البرنامج ان يساعد اليوزر في منع تكرا صرف اكثر من شيك للموظف الواحد خلال الشهر للسنة الواحدة

مثال للتوضيح :

الموظف - خالد يستحق ان يصرف له شيكين بحيث

يصرف الشيك الاول مثلا في شهر 2 من سنة 1430

اما الشيك الثاني فيصرف في شهر 3 من سنة 1430

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

المطلوب : انه اذا قام اليوزر بادخال مثلا بيانات الصرف للشيك الثاني لخالد بحيث اختار الشهر 2 من سنة 1430 فيجب ان تظهر له مسج تتوضح ان انه لايمكنك تكرار الشهر في نفس السنة لنفس الموظف ولكن يمكن ان يتكرر الشهر في نفس السنة لموظفين اخرين ولكن ليس لخالد

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

______________________________.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 8 يوليو 2009 في 17:22

#2

؟؟؟؟؟؟؟ انا بانتظاركم ارجوكم ساعدوني

#3

الأخت الكريمة girlsqueen

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

عفواً لأننى لم أستطع العمل على مثالك المرفق كما هو لأن أسماء الحقول عربية وغير مقروءة عندى.

ولكن من فهمى لسؤالك وضعت لك جدولا اسمه Tbl_Ckecks ......... ونموذجاً اسمه Frm_Checks

والحقل None_Repeat يقوم بتخزين قيمة تجمع (رقم الموظف مع رقم السنة مع رقم الشهر) ونتيجة هذه المعادلة رقم لا يمكن تكراره أبداً إلا إذا حاول المستخدم الصرف لنفس الموظف بنفس السنة ونفس الشهر أكثر من مرة.

وفى هذه الحالة ستخرج له رسالة تنبيه .. ويتم إلغاء الإدخال الذى قام به وتفريغ الحقول.

يمكنك تعديل المرفق كما تحتاجين .. أو العودة مرة أخرى بعد تعديل مرفقك للانجليزية حتى أستطيع قراءته.

أتمنى أن يكون ذلك ما طلبت.

تحياتى

محمد ندا

None_Repeat_UP.rar

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#4

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

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

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

1 - بعد كتابة الكود اصيح البرنامج عند ادخال الشهر لاي موظف جديد او قديم يشيك على حقل الشهر في جدول الشيكات المصروفة بغض النظر عن اسم الموظف وهذا غلط لانه سوف يسمح لي بادخال رقم او قيمة الشهر وهي من 1 2 3 4 5 6 ....... 11 12 اي من الشهر الاول الى الشهر الثاني عشر سوف يسمح لي بادخالها مرة واحدة فقط ولايمكنني تكرارها لموظف اخر

2- المطوب من البرنامج ان يضع بعين الاعتبار اسم الموظف والسنة

اذا كان اسم الموظف نفسه والسنة نفسها في هذه الحالة فقط لايكرر الشهر

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

______________________________.zip

تم تعديل هذه المشاركة بواسطة girlsqueen1 في 9 يوليو 2009 في 12:11

#5

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

تحياتي

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 9 يوليو 2009 في 12:30

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#6

السلام عليكم اخ همام

انا لدي ثلاث جداول

1- جدول الموظفين يحتوي على اسم الموظف ورقم الموظف pk

2- جدول الجهات (حيث ان للموظف الواحد اكثر من جهة يعمل بها )ويحتوي على اسم الجهة ورقم الجهة pk ورقم الموظف fk

3- جدول الشيكات المصروفة (حيث ان يمكن ان يكون للجهة الواحدة اكثر من شيك )ويحتوي على بيانات الصرف وهي :

- الشهر - السنة - المبلغ - رقم الجهةfk

Dim Db As Database, Rs As Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Select * from tablename
Where Idnum='" & Me.IDNum & "'", dbOpenDynaset)
Do Until Rs.EOF
	If Me.DateFrom >= Rs!DateFrom And Me.DateFrom <= Rs!DateTo Then
	MsgBox "الرجاء التأكد من التواريخ"
	Rs.Close
	Db.Close
	Set Db = Nothing
	Cancel = True
	Exit Sub
	End If
Rs.MoveNext
Loop
Rs.Close
Db.Close
Set Db = Nothing

هل يمكن ان يكون هذا الكود هو الحل وفي هذه الحالة لدي اكثر من pk او مفتاح رئيسي فاي مفتاح يجب انا اتعامل معه

ارجو منك التوضيح اكثر او التعديل على المثال اذا امكن لك ذلك

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 9 يوليو 2009 في 17:43

#8

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

1-جعل المفتاح الرئيس للجدول الشيكات الى الشهر والسنة والجهة

2-كتابة كود لاظهار الرسالة في حال تكرر الرقم (طبعا الاكسس لا يسمح بالتكرار بعد هذا التعديل ولكن الكود يضيف ناحية جمالية وصورة افضل)

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

تحياتي

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#9

السلام عليكــم ورحمـة الله وبركاتــه ،،

اقتباس
سؤال لو سمحتم: كيف يمكن أن نعرف أي شيك تم صرفه لأي موظف؟

فقط مداخلة بسيطة لو تسمحون لي

الاخ / الاخت girlsqueen1

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

وجدول الموظفين متى ماكان بناء القاعددة صحيحا كان سهلا علينا أيجاد مانريد من نتائج والسلام

#10

السلام عليكم اخ همام

هل يمكن ان توضح لي اكثر النقطة الاولى (جعل المفتاح الرئيس للجدول الشيكات الى الشهر والسنة والجهة)

وما رايك بكلام الاخ اكسير كيف يمكنني الربط بين اخر جدول لدي وهو الشيكات واول جدول وهو الموظفين اي كانني في حلقة تدور من جدول الموظفين والجهات والشيكات لانني كنت اظن انه بما ان جدول الموظفين مربوط مع جدول الجهات وجدول الجهات مربوط مع جدول الشيكات فتلقائيا سيعتبر جدول الموظفين مربوط مع جدول الشيكات فارجو توضيح الصورة لي ان امكن وجزاكم الله خيرا

اتمنى ان اصل معكم الى طريقة لمنع تكرار الشهر لموظف واحد في سنة واحدة ولنفرض الموظف محمد في سنة 1430 وهكذا...

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

#11
اقتباس
الاخ / الاخت girlsqueen1

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

وجدول الموظفين متى ماكان بناء القاعددة صحيحا كان سهلا علينا أيجاد مانريد من نتائج والسلام

اشكر تفاعلك مع العلم ان الهدف من البرنامج هو ان يساعد على معرفة زمن الصرف للموظف بغض النظر عن اي شيك تم صرفه ولكن المهم متى تم الصرف حتى يمنع التكرار للصرف في نفس الشهر من نفس السنة للموظف الواحد

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 11 يوليو 2009 في 13:01

#12

ولكن السؤال مازال قائماً: كيف نعرف أن الصرف الفلاني تم للموظف الفلاني؟

#13
اقتباس
ولكن السؤال مازال قائماً: كيف نعرف أن الصرف الفلاني تم للموظف الفلاني؟

هذا ما اود استيضاحه،، لماذا لا يعتمد اسم الموظف مباشرة وليس اسم الجهة، ثم نعود لجدول الجهات وتعرف من الموظف؟؟

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

همام

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#14

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

مثلا الموظف احمد اشتغل اوفرتايم في شهر 7 في جهتين واستحق ان يصرف له شيكين الان في شهر 7 لكن النظام لايسمح الا بصرف شيك واحد في 7 ويتم صرف الثاني في 8 مثلا

اما بالنسبة للسؤال كيف نعرف ان الصرف تم للموظف فاريد ان اوضح ان النسخه الاصلية من البرنامج تحتوي على نموذج لادخال وتحديث بيانات الصرف فاذا اردنا ان نعرف متى تم الصرف لاحمد نقوم بادخال اسم احمد ثم يتم استعراض كافة بيانات الصرف الخاصة به ولكن يجبب اولا ان تتم عملية ادخال بيانات الصرف مثلا اذا كان احمد موظف جديد فسيستخدم البرنامج لادخال اسم الموظف ومن ثم الجهة التي عمل بها اوفرتايم ومن ثم الشهر(اي الشهر الذي تم فيه الصرف )+السنة+المبلغ (وهومبلغ الشيك )

لقد حاولت استخدام الكود التالي

Dim Db As Database, Rs As Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Select * from empolyees  Where empid='" & Me.empid & "'", dbOpenDynaset)
	If Me.month.Value = Rs!month And Me.year.value= Rs!year  Then
	MsgBox " الشهر مكرر "
	Rs.Close
	Db.Close
	Set Db = Nothing
	Cancel = True
	Exit Sub
	End If
Rs.MoveNext
Loop
Rs.Close
Db.Close
Set Db = Nothing

ولكن يظهر لي مسج تقول ( معلمات قليلة جدا.توقع1 ) ولم افهم معناها ولكن اظن ان المشكلة في سطر select )

جزاكم الله خير على المساعده وجعلها في موازيين حسناتكم

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 14 يوليو 2009 في 10:43

#16

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

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

اللهم لاسهل الا ماجعلته سهلا وانت تجعل الحزن اذا شئت سهلا

_________________.zip

#17

السلام عليكــم ورحمـة الله وبركاتــه ،،

بارك الله فيكم اخواني جميعاً

ارجو ان تسمحوا لي بالمشاركة معكم

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

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

ملاحظة : نموذج الادخال هو frmChequesMovement

مع الشكر والتقدير للجميع

______________________________.rar

تم تعديل هذه المشاركة بواسطة يوسف احمد في 12 يوليو 2009 في 11:34

#18

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

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

ملحوظة: الكود المعروض في المشاركة قبل الأخيرة لا يوافق الكود الموجود في الملف المرفق في المشاركة الأخيرة... Loop تحتاج إلى بداية، مثل While على سبيل المثال...

الشكر لخبيرنا يوسف أحمد، والمعذرة من الأخت السائلة...

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 12 يوليو 2009 في 12:21

#19

السلام عليكم

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

ولكن انا الان اصبحت في حيرة من امري ارجوكم ارشدوني مع العلم ان اخر محاولة للاخ الكريم يوسف تفي بالمطلوب ولكن مع التغيير في ربط الجداول وفي الحقول نفسها وقد قرات من بعض الردود انه ربما هناك غلط في انشاء الجداول التي انشأتها مع العلم ان سبب انشائها بهذه الطريقة هو كالتالي :

الموظف الواحد ممكن ان يعمل في اكثر من جهة

والجهة الواحدة يمكن ان يكون لها اكثر من شيك

بالتالي كونت ثلاث جداول وهي الموظفين ربطته مع الجهات وربطت الجهات مع الشيكات

سؤالي ؟

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

ارجوووووووووووووووكم انجدوني وجزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة girlsqueen1 في 14 يوليو 2009 في 09:48

#20

هل من مجيب ؟؟؟؟؟؟؟؟؟؟

لا اريد الاستسلام ارجوكم ساعدوني

#21

هل المشكلة لدي في الربط بين الجداول اذا كانت كذلك ارجوكم بليز كيف اصحح الخطأ ايش اعمل في الجداول لاني بصراحة استخدمت كود يمنع التكرار وماشي بشكل جيد ولكن مشكلته انه لايربط او لايحدد ان هذي الشيكات هي للموظف الفلاني فكيف ال هذه المشكلة ارجوكم والكود باستخدام دالة DLOOKUP

#22

السلام عليكــم ورحمـة الله وبركاتــه ،،

الاخت girlsqueen1

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

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

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

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

بالتوفيق ان شاء الله

#23

السلام عليكم اخي العزيز يوسف انا سعيدة جدا بردك لانها بدأت تتضح لي الصورة

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

وعلى اساس ذلك قمت بربط جدول الموظفين مع جدول الجهات وجدول الجهات مع جدول الشيكات ولم يخطر ببالي انذاك انني ساحتاج الى ربط الموظفين مع الشيكات

الان كيف يمكنني ان اربط الموظفين مع الشيكات مع الحفاظ على عدم تكرار الجهة... ارجو ان تكون الصورة واضحة

#24

السلام عليكــم ورحمـة الله وبركاتــه ،،

بارك الله فيك اختنا الفاضلة girlsqueen1

تم عمل بعض التعديلات حيث تم عمل العلاقة المطلوبة بحيث يتم ادخال اسم الموظف ثم بنموذج فرعي مرتبط برقم الموظف يتم اختيار الشهر والسنة وادخال المبلغ ثم اختيار الجهة ( بنموذج اضافة موظف )

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

بالتوفيق

______________________________.rar

#25

السلام عليكم اخ يوسف

لقد اطلعت على التعديلات التي قمت بها ولكن لدي سؤال ؟

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

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

مواضيع مشابهة