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

الحاق مجموعة من السجلات لكل حالة دفعة واحدة بشرط

بدأه faife في 12 ديسمبر 2008 · 4 رد · 654 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الموضوع

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

الاول: first_d بيانات اساسية مرتبط به جدول المهارات g_mharat

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

كيف استطيع الحاق جميع المهارات دفعة واحدة حسب المستوى ( لا حظ جدول mhara_g) لكل طالب بدل من اختيارها من قائمة مهارة مهارة

جزاكم الله خير

mhara.rar

#2

بســم الله الـرحمــن الرحيــم

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

لعل في هذا المثال ما يلبي طلبك .. أنقر على زر إضافة المهارات وسيضيفها كلها بشكل ذاتي

koao_mhara.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#3

بارك الله فيك أخي الكريم koao على هذا الحل الرائع والجميل فعلا هو المطلوب ولي استفسار بارك الله فيك

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

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

koao_mhara.rar

#4

بســم الله الـرحمــن الرحيــم

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

أنت تأمر أخي faife .. أضفت إلى النموذج الفرعي مربع تحرير وسرد وأسميته MestawaCB وجعلت مصدر الصف لبياناته جملة SQL التالية

SELECT DISTINCT mhara_g.mstwa FROM mhara_g;

وهذه الجملة تقرأ السجلات الموجودة في الحقل mstwa من دون تكرار بحكم إستخدامنا لـ DISTINCT .. فلو كان هناك أكثر من سجل بقيمة "الأول" فلن تظهر سوى مرة واحدة

ووضعت في حدث بعد التحديث لها الكود التالي

Me.mhaCB.RowSource = "SELECT mha FROM mhara_g where mstwa='" & Me!MestawaCB & "';"

والمغزى منه هو تغيير الـ RowSource ( وهو مصدر الصف للبيانات ) لمربع التحرير والسرد المسمى mhaCB إلى فقط الذي يوافق الشرط الموضح وهو أن يكون قيمة الحقل mstwa تساوي ما حددناه في مربع التحرير والسرد المسمى MestawaCB كالأول أو الثاني أو هكذا

وسوف تلاحظ بعد تغييرك لقيمة مربع التحرير والسرد MestawaCB إلى الثاني مثلا فلن يظهر في مربع التحرير والسرد mhaCB سوى 3 خيارات وهي التي توافق الشرط

عموما بعد تحديدك للمستوى قم بالنقر على زر "إضافة المهارات" لإضافة المهارات ذاتيا .. ووضعت به الكود التالي

With Me.mhaCB
Dim c, MaharatCount As Integer
MaharatCount = .ListCount - 1
For c = 0 To MaharatCount
DoCmd.GoToRecord , , acNewRec
.SetFocus
.ListIndex = c
Next c
End With

إسخدمت With للتخفيف على مترجم الكود الخاص بالآله وفائدته على فهمي القاصر بدل ما كل مرة أقول له Me.mhaCB.ListCount ومرة Me.mhaCB.SetFocus والذي سيجعل المترجم للكود يبحث أولا عن Me ويدخل داخل محتوياتها ثم يبحث عن mhaCB ويدخل داخل محتوياتها ثم يبحث عن ListCount ويعطيها قيمة

فبإستخدامي لـ With إذا وضعت أي شئ بعد نقطة فإنه يعرف أين يذهب وهو الشئ الذي حددناه بعد With وهو Me.mhaCB فيتوجه إليه مباشرة

ثم عرفنا متغير رقمي ليكون متغير الحلقة For وسميناه c

وعرفنا متغير رقمي ليكون متغير يحمل قيمة عدد عناصر مربع التحرير والسرد المسمى mhaCB بإستخدام الخاصية ListCount وطرحنا منها 1 وسنشرح لماذا لاحقا .. وأسمينا المتغير MaharatCount

ثم كتبنا كود For وتبدأ من 0 إلى قيمة المتغير MaharatCount

ثم أمرناه بأن ينشئ سجل جديد لنضع في القيمة الجديدة

ثم أمرناه أن يجعل التركيز على مربع التحرير والسرد mhaCB ومن دون ذلك سيعطينا خطأ

ثم أمرناه أن يجعل العنصر المختار من عناصر مربع التحرير والسرد mhaCB هو قيمة متغير الحلقة وهو c ويتم ذلك بتغيير قيمة الخاصية ListIndex فأول مره سيأخذ القيمة صفر ثم واحد وهكذا حتى يصل إلى متغير نهاية الحلقة MaharatCount وعندها سيخرج من الحلقة

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

أتمنى أنني وفقت بالشرح .. والحمدلله رب العالمين

koao_mhara1.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#5

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

مع خالص تحياتي وتقديري ...

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…