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

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

قام بنشر

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

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

وهذا مرفق 

جدول المحاضرات.rar

قام بنشر

اخ عبدالله

طلبك يحتاج لتفرغ للاجابة !! فهو بمثابة طلب برنامج ! كما انه يوجد به بعض الامور المتقدمة !!

 

هذا للعلم والامل في الاخوة الاعزاء !

 

تحياتي 

قام بنشر

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

Dim rst As Recordset
Set rst = Me.RecordsetClone

rst.MoveFirst
Do Until rst.EOF
If rst![كود اليوم] = Me![كود اليوم] And rst![الفترة] = Me![الفترة] And rst![القاعة] = Me![القاعة] And rst![الدكتور] = Me![الدكتور] Then

MsgBox " يوجد تعارض بالجدول ", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, " تنبيه"

Me.Undo
DoCmd.CancelEvent
[كود اليوم].SetFocus
Exit Do
End If
rst.MoveNext
Loop
rst.Close
قام بنشر (معدل)

اوك اخي عبدالله

لم اعرف انك تحتاج المساعدة فقط في جدول "تنظيم الجدول" عذرا" ونعوضك في شرح الكود !

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

ثانيا الشرح :

''تعريف كائن مجموعة السجلات
Dim rst As Recordset
''اسناد قيمة للكائن وهي مجموعة سجلات النموذج الحالية
Set rst = Me.RecordsetClone
''اذهب لاول سجل لانه يريد المرور على جميع السجلات
rst.MoveFirst
'' احد الجمل التي تساعد على الدوران - حلقة - وبالعربي لف حتى النهاية
Do Until rst.EOF
 ''والتي هي تمثل بيانات الموجودة  وبين البيانات التي بالنوذج الجديدة rst'هنا مربط الفرس فبدأ يقارن ماهو موجود بمجموعة السجلات
'' فعند تطابق جميع الشروط ادناه تظهر رسالة ويعمل تراجع والخروج من الدوران والذهاب لامر الانتقال للسجل الثاني
If rst![كود اليوم] = Me![كود اليوم] And rst![الفترة] = Me![الفترة] And rst![القاعة] = Me![القاعة] And rst![الدكتور] = Me![الدكتور] Then
''الرسالة
MsgBox " يوجد تعارض بالجدول ", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, " تنبيه"
''التراجع والغاء الحدث
Me.Undo
DoCmd.CancelEvent
''نقل التركيز لكود اليوم لتعديل البيانات
[كود اليوم].SetFocus
''الخروج من الدوران حيث وجد التكرار
Exit Do
End If
'' الانتقال الى سجل جديد لفحصه
rst.MoveNext
Loop
''اغلاق الكائن
rst.Close

ولو حبيت ترفق النموذج ونضع لك حل رمهاني مختزل ومختصر واسهل !!

 

بالتوفيق

تم تعديل بواسطه رمهان
قام بنشر

اخي عبدالله

الصق كودك السابق في حدث قبل التحديث للنموذج !! سيفي بالغرض !

 

بالتوفيق

قام بنشر

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

ibhHrX.png

قام بنشر

المشكلة ان هناك الامر movefirst كأمر بالانتقال وليس هناك سجلات

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

On error resume next

بالتوفيق

قام بنشر (معدل)

على فكرة !! الكود جميل .. ولكن فيه فخ بسيط !

جرب ان تعدل الشعبه ! او المادة! حيث ليسا ضمن الشرط ..

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

تحياتي

تم تعديل بواسطه رمهان
قام بنشر (معدل)

السؤال الان : هل الشعبة ورمز المادة داخلة في شرط عدم التكرار ؟ ام فقط المقارنة تتم مع كود اليوم والدكتور والفترة والقاعة ؟؟

تم تعديل بواسطه رمهان
قام بنشر

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

لكن انا عدلت بالكود وسويت اكثر من شرط عشان مايصير فيه تعارض لا بالقاعات ولا الدكاتره 

وهذا الكود اشتغل معي تمام بنزله للفايده للجميع واذا فيه تعديل عدلو لكن اانا اشتغل معي تمام  :geek:

Dim rst As Recordset
Set rst = Me.RecordsetClone
On Error Resume Next
rst.MoveFirst
Do Until rst.EOF
If rst![كود اليوم] = Me![كود اليوم] And rst![الفترة] = Me![الفترة] And rst![القاعة] = Me![القاعة] And rst![الدكتور] = Me![الدكتور] Then

MsgBox " يوجد تعارض بالجدول ", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, " تنبيه"

Me.Undo
DoCmd.CancelEvent
[كود اليوم].SetFocus

Exit Do
End If
If rst![كود اليوم] = Me![كود اليوم] And rst![الفترة] = Me![الفترة] And rst![القاعة] = Me![القاعة] Then

MsgBox " يوجد تعارض بالقاعات ", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, " تنبيه"

Me.Undo
DoCmd.CancelEvent
[كود اليوم].SetFocus

Exit Do
End If
If rst![كود اليوم] = Me![كود اليوم] And rst![الفترة] = Me![الفترة] And rst![الدكتور] = Me![الدكتور] Then

MsgBox " يوجد تعارض بالدكتور ", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, " تنبيه"

Me.Undo
DoCmd.CancelEvent
[كود اليوم].SetFocus

Exit Do
End If
rst.MoveNext
Loop
rst.Close
End Sub

قام بنشر

معليش اخوي عبدالله : انت واضع الكود عند اي حدث ؟؟ هل هو على مستوى النموذج وعند حدث قبل التحيث ؟؟ ام اين ؟؟

قام بنشر (معدل)

معناته انت واقع في الفخ !!!!

 

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

تم تعديل بواسطه رمهان
قام بنشر

اخيراً ... معناته الآن الكود مش شغال وما ينفعشي في الحدث قبل التحديث للنموذج ! لكي يعمل الكود معك تمام ضعه عند حدث بعد التحديث لكل مربع من مربعات المقارنة اي عند الفترة وكود اليوم والقاعة والدكتور ..

 

او نعطيك حل رمهاني .. سهل ومجاني ..

 

نصلي الفجر .. ونعود ..

 

تحياتي

قام بنشر

اخي عبدالله

تفضل سطر واحد من الكود !!

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

ثم اذهب للنموذج ضع هذا السطر في حدث قبل التحديث للنموذج !

If Nz(DLookup("id", "[تنظيم الجدول]", "[كود اليوم]&[الفترة]&[القاعة]&[الدكتور]='" & كود_اليوم & الفترة & القاعة & الدكتور & "'"), 0) <> id Then Cancel = MsgBox("مكرر")

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

 

بالتوفيق

قام بنشر

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

قام بنشر

اخي عبدالله 

ادخل معي دردشة في اعلى صفحة الموقع

عرفت الحين فائدتها !

  • 8 months later...
قام بنشر
في 14‏/5‏/2015 at 02:39, رمهان said:

اخي عبدالله

تفضل سطر واحد من الكود !!

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

ثم اذهب للنموذج ضع هذا السطر في حدث قبل التحديث للنموذج !


If Nz(DLookup("id", "[تنظيم الجدول]", "[كود اليوم]&[الفترة]&[القاعة]&[الدكتور]='" & كود_اليوم & الفترة & القاعة & الدكتور & "'"), 0) <> id Then Cancel = MsgBox("مكرر")

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

 

بالتوفيق

إذا ممكن تتفضل علينا بإعادة كتابة الكود

لكن باستبدال العربية بالانكليزية

حتى نستوعب بناء الجملة

 

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.

×
×
  • اضف...

Important Information