Ibrahim IQ قام بنشر يناير 18, 2019 قام بنشر يناير 18, 2019 السادة الاعضاء والمشرفين والخبراء / السلام عليكم هل ممكن المساعده لقد وصلت الى المرحله المتقدمة بفضل استاذ ابو محمد ولكن لدي مشكلتين : 1- منع بعض المدرسيين للمدارس المعينة لبعض القاعات معينة مثلا مدرسة ID رقم 1 من القاعة رقم 111 لان في هذا القاعة يوجد الطلاب لهذا المدرسة رقم 1 مثال: في جدول tblschool منع كل المدرسة من الخانات امامة (Nota , Notb,Notc,Notd,Note ) او هل لديكم فكرة افضل مشكوريين 2- منع المدرسيين للمدرسه الواحدة لكي يوزعون في عدة القاعات لسبب توزيع المتساوي بين المدرسيين للمدارس المختلفة مع كل الشكر والتقدير 🙏🙏 Hall2019 - Copy.rar
صالح حمادي قام بنشر يناير 25, 2019 قام بنشر يناير 25, 2019 في ١٨/١/٢٠١٩ at 19:55, Rebaz Bahram said: مثال: في جدول tblschool منع كل المدرسة من الخانات امامة (Nota , Notb,Notc,Notd,Note ) او هل لديكم فكرة افضل مشكوريين السلام عليكم أخي إبراهيم حياك الله. أولا: لم أفهم ماذا تقصد بـــ(Nota , Notb,Notc,Notd,Note ) . المهم. سوف أعطيك طريقة تتبعها من أجل الوصول إلى الحل إن شاء الله السؤال الأول: 1- أضف حقل لجدول القاعات tblhall تكتب فيه رقم المدرسة للطلاب الموجودين داخل هذه القاعة مثلا (id_school). 2- عند إعطاء أمر التوزيع قبل وضع المعلم في القاعدة يختبر هل رقم المدرسة متساوي في حقل SID لجدول المعلم و حقل المدرسة في جدول القاعات (id_school) . إذا كانا مختلفين يسجل المعلم و إذا كانا متساويين يغيره بعلم آخر. السؤال الثاني: عند إضافة معلم جديد لقاعة يختبر الكود هل المعلمين الموجودين في القاعة لنفس مدرسة المعلم الجديد أم لا إذا كان نعم يتخطى هذا المعلم و يبحث عن معلم آخر. و إذا كان لا يضع هذا المعلم في هذه القاعدة. (أنا الآن مشغول قليلا لا أستطيع التعديل على مرفقك عليك بالمحاولة لتطبيق هذا الأمر وحدك و عندما أنتهي من عملي سوف أنجز التعديل على مرفقك إن شاء الله). 1
Ibrahim IQ قام بنشر يناير 25, 2019 الكاتب قام بنشر يناير 25, 2019 5 ساعات مضت, صالح حمادي said: السلام عليكم أخي إبراهيم حياك الله. أولا: لم أفهم ماذا تقصد بـــ(Nota , Notb,Notc,Notd,Note ) . المهم. سوف أعطيك طريقة تتبعها من أجل الوصول إلى الحل إن شاء الله السؤال الأول: 1- أضف حقل لجدول القاعات tblhall تكتب فيه رقم المدرسة للطلاب الموجودين داخل هذه القاعة مثلا (id_school). 2- عند إعطاء أمر التوزيع قبل وضع المعلم في القاعدة يختبر هل رقم المدرسة متساوي في حقل SID لجدول المعلم و حقل المدرسة في جدول القاعات (id_school) . إذا كانا مختلفين يسجل المعلم و إذا كانا متساويين يغيره بعلم آخر. السؤال الثاني: عند إضافة معلم جديد لقاعة يختبر الكود هل المعلمين الموجودين في القاعة لنفس مدرسة المعلم الجديد أم لا إذا كان نعم يتخطى هذا المعلم و يبحث عن معلم آخر. و إذا كان لا يضع هذا المعلم في هذه القاعدة. (أنا الآن مشغول قليلا لا أستطيع التعديل على مرفقك عليك بالمحاولة لتطبيق هذا الأمر وحدك و عندما أنتهي من عملي سوف أنجز التعديل على مرفقك إن شاء الله). شكرا استاذي الله يحفظك وشكرا للخطوات سوف اتابعه ، وانا بانتظار المساعدة اخرى هذا لطف كبير منك ...
jjafferr قام بنشر فبراير 8, 2019 قام بنشر فبراير 8, 2019 السلام عليكم 🙂 اخي ريباز ، صار لي فترة انظر في موضوعك بدون ان اوصل الى شيء 😞 لو تسمح ، تُدخل بيانات كاملة لفئة معينة من المدرسين ، في القاعات المسموحة ، والقاعات الغير مسوح لهم ، ثم من هذه البيانات ، اعمل النتائج على صفحة اكسل ، ارفقها ، حتى نحاول تقليدها برمجيا 🙂 جعفر 1
Ibrahim IQ قام بنشر فبراير 8, 2019 الكاتب قام بنشر فبراير 8, 2019 47 دقائق مضت, jjafferr said: السلام عليكم 🙂 اخي ريباز ، صار لي فترة انظر في موضوعك بدون ان اوصل الى شيء 😞 لو تسمح ، تُدخل بيانات كاملة لفئة معينة من المدرسين ، في القاعات المسموحة ، والقاعات الغير مسوح لهم ، ثم من هذه البيانات ، اعمل النتائج على صفحة اكسل ، ارفقها ، حتى نحاول تقليدها برمجيا 🙂 جعفر وعليكم السلام استاذ جعفر🌺 تفضل مثال : غير مسموح لكل مدرس من المدرسة ID - 1 من القاعة رقم 111 و ربما اكثر من القاعة - مع كل الشكر والتقدير🙏 توزيعات.rar
jjafferr قام بنشر فبراير 9, 2019 قام بنشر فبراير 9, 2019 السلام عليكم 🙂 اشكرك على المثال الذي ارفقته ، فقد ساعدني للوصول الى التالي: البرنامج كان يحتاج الى تعديلات اساسية ، فقمت بعمل بعض الاضافات والتعديلات عليه: 1. عمل جدول خاص للمدرسين ، ولكل واحد رقمه الخاص Teacher_ID (حتى لا تتشابه الاسماء) ، ورقم المدرسة التي هو بها SID : . 2. عملت جدول ، ذكرت فيه رقم المدرسة SID ، والقاعات المسموح ان يقوم المدرسين بمراقبتها : . 3. على هذا الاساس ، عملت استعلام ، حتى نعرف القاعات التي نسمح للمدرسين ان يراقبوها : . والنتيجة: . وسنقوم بعمل القرعة من جديد ، بناء على اعلاه ، فسؤالي: هل نتائج الاستعلام صحيحة؟ انت قلت في مشاركاتك الخاصة بالموضوع: 1- وضع كل ستة مدرسين في كل قاعة 2- يجب اختيار هؤلاء المعلمين الستة في ثلاث مدارس مختلفة ولكن نصفهم من الذكور وآخرون الإناث 3- كل المعلم في قاعات مدينتهم 4- تكرار اسم المعلم غير مسموح في قاعات المختلفه. ممكن تساعدني مرة ثانية وتعمل لي مثال في صفحة اكسل (ولكن رجاء استعمل الاسماء Teacher_ID الموجودة في قاعدة البيانات المرفقة) ، وحسب شروطك اعلاه ، للقاعات 111 و 113 . يعني شغلنا سيكون على الاستعلام فقط ان شاء الله 🙂 شكرا 2020.zip 1 2
Ibrahim IQ قام بنشر فبراير 10, 2019 الكاتب قام بنشر فبراير 10, 2019 اشكرك شكرا جزيلا استاذ @jjafferr بارك اللة في عمرك و علمك المطلوب كل النقاط التي تفضلت نعم نتائج استعلام صحيحة و يعمل بشكل ممتاز وهذا اكثر وضوحا اتمنى هذا ملف اكسل قصدك تفضل شكرا استاذي كبير Book1teachers.rar
jjafferr قام بنشر فبراير 11, 2019 قام بنشر فبراير 11, 2019 السلام عليكم اخي ريباز 🙂 مادام عملت هذه البيانات في قاعدة البيانات ، فرجاء ارفاقها ، بدل ان اُدخل البيانات 🙂 الذي كنت اريده منك في ملف اكسل كالتالي: 1. صحيح انا كتبت : في ٩/٢/٢٠١٩ at 22:35, jjafferr said: انت قلت في مشاركاتك الخاصة بالموضوع: 1- وضع كل ستة مدرسين في كل قاعة 2- يجب اختيار هؤلاء المعلمين الستة في ثلاث مدارس مختلفة ولكن نصفهم من الذكور وآخرون الإناث 3- كل المعلم في قاعات مدينتهم 4- تكرار اسم المعلم غير مسموح في قاعات المختلفه. ولكني في الواقع لا افهمها !! 2. لذلك ، ومن البيانات اللي بترفقها ، رجاء اعمل توزيع للملاحظين يدوي لقاعتين فقط ، حتى اعرف الطريقة الصحيحة ، وهو سيكون مثال احتذي به 🙂 جعفر 1
Ibrahim IQ قام بنشر فبراير 11, 2019 الكاتب قام بنشر فبراير 11, 2019 52 دقائق مضت, jjafferr said: السلام عليكم اخي ريباز 🙂 مادام عملت هذه البيانات في قاعدة البيانات ، فرجاء ارفاقها ، بدل ان اُدخل البيانات 🙂 الذي كنت اريده منك في ملف اكسل كالتالي: 1. صحيح انا كتبت : ولكني في الواقع لا افهمها !! 2. لذلك ، ومن البيانات اللي بترفقها ، رجاء اعمل توزيع للملاحظين يدوي لقاعتين فقط ، حتى اعرف الطريقة الصحيحة ، وهو سيكون مثال احتذي به 🙂 جعفر وعليكم السلام استاذ جعفر كل هذا سوء الفهم يحدث لأن لغتي العربية ليست جيدة بما يكفي لإرسال رسالتي بشكل جيد .... أنا آسف جدا لقد وزعت قاعتين يدويا ١١١ و ١١٣ لقد اضفت حقل (distributed) لجدول (tbl_Teachers) لكي يوضح اكثر للتوزيع يدويا و بعض ملاحضات في فورم كومينت مع الشكر والتقدير لاهتمامك بموضوعي 2021.rar
jjafferr قام بنشر فبراير 11, 2019 قام بنشر فبراير 11, 2019 4 دقائق مضت, Rebaz Bahram said: كل هذا سوء الفهم يحدث لأن لغتي العربية ليست جيدة يا رجال ، ولا يهمك 🙂 واعطني بعض الوقت علشان افهم مرفقك، واذا في اي اسئلة ، ان شاء الله اطرحها عليك 🙂 جعفر 1
jjafferr قام بنشر فبراير 13, 2019 قام بنشر فبراير 13, 2019 السلام عليكم اخي ريباز 🙂 في الواقع ما كنت اعتقد بأن الموضوع يأخذ كل هذا الوقت ، ولكن ما شاء الله فعل ، والحمدلله 🙂 1. الجداول . tbl_Teachers : وهنا نُدخل لكل مدرس/ملاحظ رقمه Teacher_ID ، ورقم المدرسة SID ، ونوع الجنس regaz (ويمكنك حذف الحقل Distributed) ، tbl_Allowed : وهنا نُدخل رقم المدرسة SID ، والقاعات التي يُسمح لمدرسيها ان يراقبوها Allowed_Hall ، tbl_Distributed : وهنا نرى نتائج التوزيع. الاستعلامات: هذه هي الاستعلامات التي تقوم بالعمل ، ورجاء عدم التعديل عليها qry_D_Allowed_Teachers_Halls : من هنا نعرف اي مدرس مسموح له مراقبة اي مدرسة qry_D_Selection : ويقوم الكود بالاعتماد على هذا الاستعلام لإختيار المدرسين ، عشوائيا qry_D_Halls : ومنه نعرف القاعات المطلوب لها ملاحظين (رجاء حذف المعيار الموجود حاليا) qry_D_SID : ومن هنا نختار المدرسة ، عشوائيا . طريقة العمل: افتح النموذج frm_Distribute ، ثم انقر على الزر Distribute (الحقول باللون البرتقالي يمكنك ان تخفيها) ، ويجب ان تحذف بيانات الجدول tbl_Distributed قبل ان تبدأ بإختيار جديد (البرنامج سيسألك) . اذا تم التوزيع بدون اخطاء ، ستحصل على هذه الرسالة . وافتح جدول tbl_Distributed لرؤية الاختيارات العشوائية . اما اذا حصلت على رسالة خطأ مثل هذه . فهذا معناه انه وحسب البيانات اللي في الرسالة (وهي نفسها اللي في النموذج باللون البرتقالي) ، فالاستعلام (شوف اسم الاستعلام) لم يلقى اي سجلات لهذا الاختيار ، وقد تم وقف عمل البرنامج!! وعليه ، يجب ان تعدل في البيانات . يعني مثلا ، لو تحذف بيانات الجدول tbl_Distributed ، ثم تعمل الاختيار عن طريق النموذج ، سترى هذا الخطا (وهذا اللي حصل لي) ، ومن بيانات الرساله عرفت ان المدرسة 5 ، مدرسات إناث ، للقاعة 113 ، لا يوجد احد!! عليه، اذهب الى tbl_Teachers وتأكد من هذا ، ثم اذهب الى الاسم الاخير jjjj ، وغيره من ذكر الى انثى ، ثم ابدأ من الاختيار جديد ، ولن ترى الرسالة 🙂 وهذا هو الكود الذي يقوم بالعمل ، وقد وضعت فيه الملاحظات : Private Sub cmd_Distribute_Click() On Error GoTo err_cmd_Distribute_Click ' If Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال رقم التوزيع" ' Me.Distribution_ID.SetFocus ' Exit Sub ' ElseIf Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال تاريخ التوزيع" ' Me.Distribution_Date.SetFocus ' Exit Sub ' End If If DCount("*", "tbl_Distributed") > 0 Then Dim Msg, Style, Title, Response Msg = "هناك بيانات في الجدول، هل تريد حذفها" & vbCrLf & _ "لا يمكن اضافة بيانات جديدة على بيانات سابقة" Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "الجدول tbl_Distributed به بيانات" Response = MsgBox(Msg, Style, Title) If Response = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL ("Delete * From tbl_Distributed") DoCmd.SetWarnings True Else MsgBox "لم يتم حذف البيانات، ولا عمل اختيارات جديدة" Exit Sub End If End If Dim i As Integer Dim j As Integer Dim How_Many_Instructors As Integer Dim RND_SID As Integer Dim RND_Selection As Integer Dim rs As Integer Dim Which_Regaz As Integer Dim rstD As DAO.Recordset Dim rstH As DAO.Recordset Dim rstSID As DAO.Recordset Dim rstSelection As DAO.Recordset Dim RC_rstH As Integer Dim RC_rstSID As Integer Dim RC_rstSelection As Integer Dim arrSID As Variant Dim arrrstSelection As Variant Dim strSQL As String 'rstD = tbl_Distributed 'rstH = qry_D_Halls 'rstSID = qry_D_SID 'rstSelection = qry_D_Selection rs = 1 strSQL = "Select * From tbl_Distributed" Set rstD = CurrentDb.OpenRecordset(strSQL) rs = 2 strSQL = "Select * From qry_D_Halls" Set rstH = CurrentDb.OpenRecordset(strSQL) 'load the Recordset into memory, and get its number of Records rstH.MoveLast: rstH.MoveFirst: RC_rstH = rstH.RecordCount 'number of schools How_Many_Instructors = 6 / 2 Me.srch_Regaz = 1 'Hall Name For i = 1 To RC_rstH Me.srch_Distribution_Hall = rstH!Allowed_Hall 'Loop through the schools, 3 schools For j = 1 To How_Many_Instructors rs = 3 'info for error 3061 strSQL = "Select * From qry_D_SID Order By SID" 'Recordset SQL Set rstSID = CurrentDb.OpenRecordset(strSQL) 'Get the Remaining SIDs rstSID.MoveLast: rstSID.MoveFirst: RC_rstSID = rstSID.RecordCount 'Load into memory, and Count Records arrSID = rstSID.GetRows(RC_rstSID) 'convert Recordset to array, Min value = arrSID(0, 0) , Max = (arrSID(0, RC_rstSID - 1) Select_SID: 'we give the lowest and highest numbers to get Random Randomize RND_SID = Int((arrSID(0, RC_rstSID - 1) - arrSID(0, 0) + 1) * Rnd + arrSID(0, 0)) 'get a random number between Min & Max Me.srch_SID = RND_SID rstSID.FindFirst "[SID]=" & RND_SID 'but sometimes this number dose not exist, so get another Random If rstSID.NoMatch Then GoTo Select_SID 'SID is good, move on Which_Regaz = 0 Next_Regaz: 'male / female swithing If Me.srch_Regaz = 1 Then Me.srch_Regaz = 2 Else Me.srch_Regaz = 1 End If Which_Regaz = Which_Regaz + 1 'now we have all the data required to pick a teacher rs = 4 strSQL = "Select * From qry_D_Selection Order By Teacher_ID" Set rstSelection = CurrentDb.OpenRecordset(strSQL) rstSelection.MoveLast: rstSelection.MoveFirst: RC_rstSelection = rstSelection.RecordCount arrrstSelection = rstSelection.GetRows(RC_rstSelection) Select_Teacher: Randomize RND_Selection = Int((arrrstSelection(0, RC_rstSelection - 1) - arrrstSelection(0, 0) + 1) * Rnd + arrrstSelection(0, 0)) 'get a random number between Min & Max rstSelection.FindFirst "[Teacher_ID]=" & RND_Selection 'but sometimes this number dose not exist, so get another Random If rstSelection.NoMatch Then GoTo Select_SID 'Teacher_ID is good, make a new Record in tbl_Distributed and save info rstD.AddNew 'rstD!Distribution_ID = Me.Distribution_ID 'rstD!Distribution_Date = Me.Distribution_Date rstD!Teacher_ID = RND_Selection rstD!SID = RND_SID rstD!Distributed_Hall = rstH!Allowed_Hall rstD.Update If Which_Regaz = 1 Then GoTo Next_Regaz Next j rstH.MoveNext Next i MsgBox "Done" Exit_cmd_Distribute_Click: rstD.Close: Set rstD = Nothing rstH.Close: Set rstH = Nothing rstSID.Close: Set rstSID = Nothing rstSelection.Close: Set rstSelection = Nothing Exit Sub err_cmd_Distribute_Click: If Err.Number = 3061 Then 'too few parameters, expected xx 'this error occurs when trying to run a query which needs its parameters from a Form, 'the Form should be open with the parameter, then this code take the values properly Dim qdf As QueryDef Dim prm As Parameter Set qdf = CurrentDb.CreateQueryDef("NewQueryDef", strSQL) For Each prm In qdf.Parameters prm.Value = Eval(prm.Name) Next prm If rs = 1 Then Set rstD = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 2 Then Set rstH = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 3 Then Set rstSID = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 4 Then Set rstSelection = qdf.OpenRecordset(dbOpenDynaset) End If DoCmd.DeleteObject acQuery, "NewQueryDef" Resume Next ElseIf Err.Number = 3021 Then 'No current Record If rs = 1 Then MsgBox "No Records in tbl_Distributed" ElseIf rs = 2 Then MsgBox "No Records in qry_D_Halls" ElseIf rs = 3 Then MsgBox "Hall Number=" & Me.srch_Distribution_Hall & vbCrLf & _ "No Records in qry_D_SID" ElseIf rs = 4 Then MsgBox "Hall Number=" & Me.srch_Distribution_Hall & vbCrLf & _ "SID=" & Me.srch_SID & vbCrLf & _ "Regaz=" & Me.srch_Regaz & vbCrLf & _ "No Records in qry_D_Selection" End If Resume Exit_cmd_Distribute_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 1008.2021.zip 2 1
Ibrahim IQ قام بنشر فبراير 13, 2019 الكاتب قام بنشر فبراير 13, 2019 (معدل) استاذ جعفر في الواقع من البداية توقعت كل هذا العمل الرائع منك وبوقت قصير لانه كنت واثقا من مهاراتك، الله يحفضك استاذي كبير ربما للمدرسة لها جنس واحد للمدرسين هل هذا مقبول ام لا؟ وانا مندهش لكي يرى المرفق هههههه لا يرى اي كلمة لكي تشكرك تم تعديل فبراير 13, 2019 بواسطه jjafferr تم حذف الصورة من المشاركة السابقة
jjafferr قام بنشر فبراير 13, 2019 قام بنشر فبراير 13, 2019 7 ساعات مضت, Rebaz Bahram said: ١- هل ممکن تحدید جنس المدرسین لکل القاعە مثل یختار کل المدرسین للقاعە رقم ١١١ فقط من جنس ذکر ..... و قاعە ١١٣ من اناث فقط وقاعات اخری منقسمین؟ ٢- عندما مدرسە یتکون من جنس واحد للمدرسین یختار مدرسین بدون ای المشکلە ايش رأيك بهذه الطريقة: . نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟ ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !! جعفر 1
Ibrahim IQ قام بنشر فبراير 13, 2019 الكاتب قام بنشر فبراير 13, 2019 39 دقائق مضت, jjafferr said: ايش رأيك بهذه الطريقة: . نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟ ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !! جعفر طریقە رائع رائع جدا استاذ جعفر فقط طلب اخر اذا ممکن ربما اضاف مدرس اخر بدلا من ٦ لکل القاعە تختار ٧ مع کامل شکر و امتنانی لک
jjafferr قام بنشر فبراير 14, 2019 قام بنشر فبراير 14, 2019 اعتقد هذه هي الطريقة الصحيحة 🙂 . بس لازم نعمل طريقة بحيث يكون لكل قاعة 6-7 اشخاص !! رجاء تفكر معاي ، لأني ما قادر اوصل الى طريقة سهلة 😞 جعفر 1
Ibrahim IQ قام بنشر فبراير 14, 2019 الكاتب قام بنشر فبراير 14, 2019 44 دقائق مضت, jjafferr said: اعتقد هذه هي الطريقة الصحيحة 🙂 . بس لازم نعمل طريقة بحيث يكون لكل قاعة 6-7 اشخاص !! رجاء تفكر معاي ، لأني ما قادر اوصل الى طريقة سهلة 😞 جعفر السلام عليكم استاذ جعفر تعبت كثيرا مع هذا الموضوع لا تتعب نفسك اكثر ، انسى موضوع 7 هذا مو المشكلة 6 مدرسين كاف في اى القاعة فقط اختيار جنس المهم مع منع (Duplication) .لازم اسم اي مدرس موجود في قاعة واحدة ليس في نفس الوقت اسم واحد موجود في قاعتين في المرفق السابق يوجد هذا النقس ( مدرس رقم 171 ) موجود في القاعة 114 و 115 مع كامل شكر والتقدير الك
Ibrahim IQ قام بنشر فبراير 22, 2019 الكاتب قام بنشر فبراير 22, 2019 الاخوة والاخوات مشرفين واعضاء هذا المنتدى الرائع السلام عليكم ورحمة الله وبركاته لدي قاعدة البيانات من صناعة استاذنا العزيز جعفر فقط لدي المشكلة وهي اريد اختيار جنس المدرسين لكل القاعة في جدول (tbl_Allowed) و من حقلين (Allow_Male) و (Allow_Female). الان القاعدة يوزع المدرسين لكل القاعة 3 رجال و 3 اناث بالتساوي المطلوب اختيار جنس القاعة يدويا. مثال: اختيار القاعة رقم 133 فقط من رجال و قاعة اخرى من اناث فقط و اخرى من رجال واناث ... وكذا مع الشكر والتقدير 2021 - Copy - Copy.rar
jjafferr قام بنشر فبراير 25, 2019 قام بنشر فبراير 25, 2019 السلام عليكم 🙂 سيدي الفاضل ، عملت شوية تغييرات ، فخلينا نتابع (رجاء مراجعة الشرح في مشاركاتي السابقة) : 1. جدول خاص للمدرسين tbl_Teachers ، ولكل واحد رقمه الخاص Teacher_ID (حتى لا تتشابه الاسماء) ، ورقم المدرسة التي هو بها SID ، 2. جدول tbl_Allowed ، فيه رقم المدرسة SID ، والقاعات المسموح ان تقوم المدارس بمراقبتها ، وعدد الملاحظين الذكور والاناث (ويتم ادخال هذه البيانات عن طريق النموذج) ، 3. جدول توزيع المدرسين عشوائيا tbl_Distributed ، ويتم انتاج بياناته برمجيا ، وهو المطلوب . وفي هذا النموذج نقوم بادخال بيانات الجدول tbl_Allowed ، ولا يسمح هذا النموذج من ادخال عدد مدرسين غير موجودين في جدول tbl_Teachers ، وهنا نحدد عدد المدرسين الذكور او/و الاناث لكل قاعة ، وفي اسفل النموذج نرى مجموع ما تم اختياره من ملاحظين ذكور او/و اناث ، بحيث لا يحتمل الخطأ . وهذا الزر في النموذج يوجد به كود التوزيع (والذي سأضعه في نهاية هذه المشاركة) . البرنامج لا يستعمل الاستعلام الاول (ذكور) والاخير (اناث) ويمكن حذفهما ، ولكن الاستعلام الذي في الوسط qry_D_Halls_All يحتوي على الاستعلامين . وهنا نستطيع ان نرى نتائج دمج الاستعلامين في الاستعلام qry_D_Halls_All والذي وفر علينا الكثير من الخطوات . الاستعلام الذي به جميع الملاحظين الذين يمكنهم مراقبة القاعات ، حسب كل مدرسة ، . واهم استعلام في هذه المجموعة ، حيث لا يُظهر ارقام الملاحظين الذين تم استعمالهم مسبقا (لاحظ الاستعلام الفرعي الذي تحته خط احمر) . اما هذا الاستعلام فلسنا بحاجة اليه ، وانما اهميته في المعيار لعمل التصفية للقاعات لتجربتها في برنامجنا هذا ، ويجب عليك حذف هذ المعيار ، ولكن لا تحذف هذا الاستعلام ، فهو جزء من الابرنامج الان . والنتيجة: . وهذا هو الكود الذي يقوم بالعمل ، والذي يمكن تنضيفه قليلا ، لأن به متخلفات الكود السابق ، ولكنها لا تضر ، فلا تهتم فيها 🙂 : Private Sub cmd_Distribute_Click() On Error GoTo err_cmd_Distribute_Click ' If Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال رقم التوزيع" ' Me.Distribution_ID.SetFocus ' Exit Sub ' ElseIf Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال تاريخ التوزيع" ' Me.Distribution_Date.SetFocus ' Exit Sub ' End If If DCount("*", "tbl_Distributed") > 0 Then Dim Msg, Style, Title, Response Msg = "هناك بيانات في الجدول، هل تريد حذفها" & vbCrLf & _ "لا يمكن اضافة بيانات جديدة على بيانات سابقة" Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "الجدول tbl_Distributed به بيانات" Response = MsgBox(Msg, Style, Title) If Response = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL ("Delete * From tbl_Distributed") DoCmd.SetWarnings True Else MsgBox "لم يتم حذف البيانات، ولا عمل اختيارات جديدة" Exit Sub End If End If Dim i As Integer Dim j As Integer Dim How_Many_Instructors As Integer Dim RND_SID As Integer Dim RND_Selection As Integer Dim rs As Integer Dim Which_Regaz As Integer Dim rstD As DAO.Recordset Dim rstH As DAO.Recordset Dim rstSelection As DAO.Recordset Dim RC_rstH As Integer Dim RC_rstSelection As Integer Dim arrrstSelection As Variant Dim strSQL As String 'rstD = tbl_Distributed 'rstH = qry_D_Halls 'rstSelection = qry_D_Selection rs = 1 strSQL = "Select * From tbl_Distributed" Set rstD = CurrentDb.OpenRecordset(strSQL) rs = 2 strSQL = "Select * From qry_D_Halls" Set rstH = CurrentDb.OpenRecordset(strSQL) 'load the Recordset into memory, and get its number of Records rstH.MoveLast: rstH.MoveFirst: RC_rstH = rstH.RecordCount 'Hall Name For i = 1 To RC_rstH Me.srch_Distribution_Hall = rstH!Allowed_Hall Me.srch_SID = rstH!SID Me.srch_Regaz = rstH!Regaz 'Loop through the Number of teachers of the schools For j = 1 To rstH!How_Many 'now we have all the data required to pick a teacher rs = 4 strSQL = "Select * From qry_D_Selection Order By Teacher_ID" Set rstSelection = CurrentDb.OpenRecordset(strSQL) rstSelection.MoveLast: rstSelection.MoveFirst: RC_rstSelection = rstSelection.RecordCount arrrstSelection = rstSelection.GetRows(RC_rstSelection) Select_Teacher: Randomize RND_Selection = Int((arrrstSelection(0, RC_rstSelection - 1) - arrrstSelection(0, 0) + 1) * Rnd + arrrstSelection(0, 0)) 'get a random number between Min & Max rstSelection.FindFirst "[Teacher_ID]=" & RND_Selection 'but sometimes this number dose not exist, so get another Random If rstSelection.NoMatch Then GoTo Select_Teacher 'Teacher_ID is good, make a new Record in tbl_Distributed and save info rstD.AddNew 'rstD!Distribution_ID = Me.Distribution_ID 'rstD!Distribution_Date = Me.Distribution_Date rstD!Teacher_ID = RND_Selection rstD!SID = rstH!SID rstD!Distributed_Hall = rstH!Allowed_Hall rstD.Update Next j rstH.MoveNext Next i MsgBox "Done" Exit_cmd_Distribute_Click: rstD.Close: Set rstD = Nothing rstH.Close: Set rstH = Nothing rstSelection.Close: Set rstSelection = Nothing Exit Sub err_cmd_Distribute_Click: If Err.Number = 3061 Then 'too few parameters, expected xx 'this error occurs when trying to run a query which needs its parameters from a Form, 'the Form should be open with the parameter, then this code take the values properly Dim qdf As QueryDef Dim prm As Parameter Set qdf = CurrentDb.CreateQueryDef("NewQueryDef", strSQL) For Each prm In qdf.Parameters prm.Value = Eval(prm.Name) Next prm If rs = 1 Then Set rstD = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 2 Then Set rstH = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 4 Then Set rstSelection = qdf.OpenRecordset(dbOpenDynaset) End If DoCmd.DeleteObject acQuery, "NewQueryDef" Resume Next ElseIf Err.Number = 3021 Then 'No current Record If rs = 1 Then MsgBox "No Records in tbl_Distributed" ElseIf rs = 2 Then MsgBox "No Records in qry_D_Halls" ElseIf rs = 4 Then MsgBox "Hall Number=" & Me.srch_Distribution_Hall & vbCrLf & _ "SID=" & Me.srch_SID & vbCrLf & _ "Regaz=" & Me.srch_Regaz & vbCrLf & _ "No Records in qry_D_Selection" End If Resume Exit_cmd_Distribute_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 1008.2.توزيع الملاحظين.mdb.zip 1008.2.توزيع الملاحظين.accdb.zip 1
Ibrahim IQ قام بنشر فبراير 25, 2019 الكاتب قام بنشر فبراير 25, 2019 ماذا أقول عن هذه الشخصيّة الرائعة.. عجزت الكلمات تعبر عن مدى الجميل والأمتنان.. اتمنى من الله عز وجل ان يعطيكم الصحة والعافية ، شكرا لكم على ما قدمتموه لي. أخوك الأصغر : ريباز
Ibrahim IQ قام بنشر فبراير 26, 2019 الكاتب قام بنشر فبراير 26, 2019 22 ساعات مضت, jjafferr said: حياك الله 🙂 رجاء عمل تجاربك وبسرعة ، لأن عندي سفره قريبة كذلك 🙂 مساء الخير استاذ جعفر القاعدة يعمل و بشكل ممتاز مافي اى المشكلة الله يحفضك .... The database works perfectly ... I appreciate your assistance it's a kind of you, God protect you Have a nice trip back good luck
jjafferr قام بنشر فبراير 26, 2019 قام بنشر فبراير 26, 2019 حياك الله 🙂 and you are always welcome 🙂 جعفر 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.