اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

توزيع الملاحظين


Ibrahim IQ

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

السادة الاعضاء والمشرفين والخبراء / السلام عليكم

هل ممكن المساعده‌

لقد وصلت الى المرحله‌ المتقدمة بفضل استاذ ابو محمد

ولكن لدي مشكلتين :

1-    منع بعض المدرسيين للمدارس المعينة لبعض القاعات معينة مثلا مدرسة ID رقم 1  من القاعة رقم 111 لان في هذا القاعة يوجد الطلاب لهذا المدرسة رقم 1

مثال: في جدول tblschool منع كل المدرسة من الخانات امامة (Nota , Notb,Notc,Notd,Note ) او هل لديكم فكرة افضل مشكوريين

 

2-    منع المدرسيين للمدرسه‌ الواحدة  لكي يوزعون في عدة القاعات لسبب توزيع المتساوي بين المدرسيين للمدارس المختلفة

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

 🙏🙏

Hall2019 - Copy.rar

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

في ١٨‏/١‏/٢٠١٩ 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) .

إذا كانا مختلفين يسجل المعلم و إذا كانا متساويين يغيره بعلم آخر.

السؤال الثاني:

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

إذا كان نعم يتخطى هذا المعلم و يبحث عن معلم آخر.

و إذا كان لا يضع هذا المعلم في هذه القاعدة.

(أنا الآن مشغول قليلا لا أستطيع التعديل على مرفقك عليك بالمحاولة لتطبيق هذا الأمر وحدك و عندما أنتهي من عملي سوف أنجز التعديل على مرفقك إن شاء الله).

 

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

5 ساعات مضت, صالح حمادي said:

السلام عليكم

أخي إبراهيم حياك الله.

أولا: لم أفهم ماذا تقصد بـــ(Nota , Notb,Notc,Notd,Note ) . المهم.

سوف أعطيك طريقة تتبعها من أجل الوصول إلى الحل إن شاء الله

السؤال الأول:

1- أضف حقل لجدول القاعات tblhall تكتب فيه رقم المدرسة للطلاب الموجودين داخل هذه القاعة مثلا (id_school).

2- عند إعطاء أمر التوزيع قبل وضع المعلم في القاعدة يختبر هل رقم المدرسة متساوي في حقل SID لجدول المعلم و حقل المدرسة في جدول القاعات (id_school) .

إذا كانا مختلفين يسجل المعلم و إذا كانا متساويين يغيره بعلم آخر.

السؤال الثاني:

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

إذا كان نعم يتخطى هذا المعلم و يبحث عن معلم آخر.

و إذا كان لا يضع هذا المعلم في هذه القاعدة.

(أنا الآن مشغول قليلا لا أستطيع التعديل على مرفقك عليك بالمحاولة لتطبيق هذا الأمر وحدك و عندما أنتهي من عملي سوف أنجز التعديل على مرفقك إن شاء الله).

 

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

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

  • 2 weeks later...

السلام عليكم 🙂

 

اخي ريباز ، صار لي فترة انظر في موضوعك بدون ان اوصل الى شيء 😞

 

لو تسمح ، تُدخل بيانات كاملة لفئة معينة من المدرسين ، في القاعات المسموحة ، والقاعات الغير مسوح لهم ،

ثم من هذه البيانات ، اعمل النتائج على صفحة اكسل ، ارفقها ، حتى نحاول تقليدها برمجيا 🙂

 

جعفر

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

47 دقائق مضت, jjafferr said:

السلام عليكم 🙂

 

اخي ريباز ، صار لي فترة انظر في موضوعك بدون ان اوصل الى شيء 😞

 

لو تسمح ، تُدخل بيانات كاملة لفئة معينة من المدرسين ، في القاعات المسموحة ، والقاعات الغير مسوح لهم ،

ثم من هذه البيانات ، اعمل النتائج على صفحة اكسل ، ارفقها ، حتى نحاول تقليدها برمجيا 🙂

 

جعفر

وعليكم السلام استاذ جعفر🌺
تفضل
مثال : غير مسموح لكل مدرس من المدرسة ID - 1 من القاعة رقم 111 و ربما اكثر من القاعة - 
مع كل الشكر والتقدير🙏

توزيعات.rar

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

السلام عليكم 🙂

 

اشكرك على المثال الذي ارفقته ، فقد ساعدني للوصول الى التالي:

 

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

1. عمل جدول خاص للمدرسين ، ولكل واحد رقمه الخاص Teacher_ID (حتى لا تتشابه الاسماء) ، ورقم المدرسة التي هو بها SID :

1008.Clipboard02.jpg.e908da1e5fb4862c0edcc0a96248c0f0.jpg

.

2. عملت جدول ، ذكرت فيه رقم المدرسة SID ، والقاعات المسموح ان يقوم المدرسين بمراقبتها :

1008.Clipboard01.jpg.25ea03c338d573fb56f579dd4dc99aff.jpg

.

3. على هذا الاساس ، عملت استعلام ، حتى نعرف القاعات التي نسمح للمدرسين ان يراقبوها :

1008.Clipboard03.jpg.072672d012a17b6ec37d2308929c71b9.jpg

.

والنتيجة:

1008.Clipboard04.jpg.e6069aa0621e2856af020b4e386dba53.jpg

.

 

وسنقوم بعمل القرعة من جديد ، بناء على اعلاه ، فسؤالي:

هل نتائج الاستعلام صحيحة؟

 

انت قلت في مشاركاتك الخاصة بالموضوع:

1- وضع كل ستة مدرسين في كل قاعة

2- يجب اختيار هؤلاء المعلمين الستة في ثلاث مدارس مختلفة ولكن نصفهم من الذكور وآخرون الإناث

3- كل المعلم في قاعات مدينتهم

4- تكرار اسم المعلم غير مسموح في قاعات المختلفه‌.

 

ممكن تساعدني مرة ثانية وتعمل لي مثال في صفحة اكسل (ولكن رجاء استعمل الاسماء Teacher_ID الموجودة في قاعدة البيانات المرفقة) ، وحسب شروطك اعلاه ، للقاعات 111 و 113 . 

يعني شغلنا سيكون على الاستعلام فقط ان شاء الله 🙂

 

شكرا

2020.zip

  • Like 1
  • Thanks 2
رابط هذا التعليق
شارك

اشكرك شكرا جزيلا استاذ @jjafferr

بارك اللة في عمرك و علمك

المطلوب كل النقاط التي تفضلت

نعم نتائج استعلام صحيحة و يعمل بشكل ممتاز

 

وهذا اكثر وضوحا Untitled.png.447548a4cd75be6a47b9fe13c2f99c3d.png

اتمنى هذا ملف اكسل قصدك
تفضل
شكرا استاذي كبير

Book1teachers.rar

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

السلام عليكم اخي ريباز 🙂

 

مادام عملت هذه البيانات في قاعدة البيانات ، فرجاء ارفاقها ، بدل ان اُدخل البيانات 🙂

الذي كنت اريده منك في ملف اكسل كالتالي:

1. صحيح انا كتبت :

في ٩‏/٢‏/٢٠١٩ at 22:35, jjafferr said:

انت قلت في مشاركاتك الخاصة بالموضوع:

1- وضع كل ستة مدرسين في كل قاعة

2- يجب اختيار هؤلاء المعلمين الستة في ثلاث مدارس مختلفة ولكن نصفهم من الذكور وآخرون الإناث

3- كل المعلم في قاعات مدينتهم

4- تكرار اسم المعلم غير مسموح في قاعات المختلفه‌.

ولكني في الواقع لا افهمها !!

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

 

جعفر

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

52 دقائق مضت, jjafferr said:

السلام عليكم اخي ريباز 🙂

 

مادام عملت هذه البيانات في قاعدة البيانات ، فرجاء ارفاقها ، بدل ان اُدخل البيانات 🙂

الذي كنت اريده منك في ملف اكسل كالتالي:

1. صحيح انا كتبت :

ولكني في الواقع لا افهمها !!

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

 

جعفر

وعليكم السلام استاذ جعفر

كل هذا سوء الفهم يحدث لأن لغتي العربية ليست جيدة بما يكفي لإرسال رسالتي بشكل جيد .... أنا آسف جدا

لقد وزعت قاعتين يدويا ١١١ و ١١٣ 

لقد اضفت حقل (distributed) لجدول (tbl_Teachers) لكي يوضح اكثر للتوزيع يدويا
و بعض ملاحضات في فورم كومينت

مع الشكر والتقدير لاهتمامك بموضوعي

2021.rar

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

4 دقائق مضت, Rebaz Bahram said:

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

يا رجال ، ولا يهمك 🙂

 

واعطني بعض الوقت علشان افهم مرفقك، واذا في اي اسئلة ، ان شاء الله اطرحها عليك 🙂

 

جعفر

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

السلام عليكم اخي ريباز 🙂

 

في الواقع ما كنت اعتقد بأن الموضوع يأخذ كل هذا الوقت ، ولكن ما شاء الله فعل ، والحمدلله 🙂

 

1. الجداول

1008.1.Clipboard07.jpg.f01486941b6e8534835977863a5e8b1e.jpg

.

tbl_Teachers : وهنا نُدخل لكل مدرس/ملاحظ رقمه Teacher_ID ، ورقم المدرسة SID ، ونوع الجنس regaz (ويمكنك حذف الحقل Distributed) ،

1008.1.Clipboard08.jpg.a9c7e0c4c2ac1a82637aec707d77bd95.jpg

 

tbl_Allowed : وهنا نُدخل رقم المدرسة SID ، والقاعات التي يُسمح لمدرسيها ان يراقبوها Allowed_Hall ، 

1008.1.Clipboard09.jpg.c994e30d0ca3104103cdfcb0fec2e6d0.jpg

 

tbl_Distributed : وهنا نرى نتائج التوزيع.

 

الاستعلامات:

1008.1.Clipboard06.jpg.d83a6082a6734f75de720319163f5915.jpg

 هذه هي الاستعلامات التي تقوم بالعمل ، ورجاء عدم التعديل عليها

 

qry_D_Allowed_Teachers_Halls : من هنا نعرف اي مدرس مسموح له مراقبة اي مدرسة

1008.1.Clipboard10.jpg.0d2e73f9b249bfeff207fa39b8af2761.jpg

 

qry_D_Selection : ويقوم الكود بالاعتماد على هذا الاستعلام لإختيار المدرسين ، عشوائيا

1008.1.Clipboard12.jpg.50226d973e2a405007fe139f831b3889.jpg

 

qry_D_Halls : ومنه نعرف القاعات المطلوب لها ملاحظين (رجاء حذف المعيار الموجود حاليا)

qry_D_SID : ومن هنا نختار المدرسة ، عشوائيا

1008.1.Clipboard11.jpg.00c2136413376c105357361bb9bbe6d7.jpg

.

طريقة العمل:

افتح النموذج frm_Distribute ، ثم انقر على الزر Distribute (الحقول باللون البرتقالي يمكنك ان تخفيها) ،

ويجب ان تحذف بيانات الجدول tbl_Distributed قبل ان تبدأ بإختيار جديد (البرنامج سيسألك)

1008.1.Clipboard01.jpg.7359cf3ae0f4820e59ef0f488a462c97.jpg

.

اذا تم التوزيع بدون اخطاء ، ستحصل على هذه الرسالة

1008.1.Clipboard03.jpg.f2d9abf45c283e37fac59ae038fa8206.jpg

.

وافتح جدول tbl_Distributed لرؤية الاختيارات العشوائية

1008.1.Clipboard04.jpg.af496dfbd7c6d0d23361f4f4f7830052.jpg

.

اما اذا حصلت على رسالة خطأ مثل هذه

1008.1.Clipboard02.jpg.2b123758c16cff89a448aec2cea86028.jpg

.

فهذا معناه انه وحسب البيانات اللي في الرسالة (وهي نفسها اللي في النموذج باللون البرتقالي) ، فالاستعلام (شوف اسم الاستعلام) لم يلقى اي سجلات لهذا الاختيار ، وقد تم وقف عمل البرنامج!!

وعليه ، يجب ان تعدل في البيانات .

يعني مثلا ، لو تحذف بيانات الجدول 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

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

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

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

وانا مندهش لكي يرى المرفق هههههه

لا يرى اي كلمة لكي تشكرك

1515567942008_4.jpg.31f7480ff0e90a7c9867874d181fddcc.jpg

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

7 ساعات مضت, Rebaz Bahram said:

١- هل ممکن تحدید جنس المدرسین لکل القاعە مثل یختار کل المدرسین للقاعە رقم ١١١ فقط من جنس ذکر ..... و قاعە ١١٣ من اناث فقط وقاعات اخری منقسمین؟

٢- عندما مدرسە یتکون من جنس واحد للمدرسین یختار مدرسین بدون ای المشکلە

 

ايش رأيك بهذه الطريقة:

1008.1.Clipboard13.jpg.f83323bce0a3043cd3a9367ac13574e4.jpg

.

نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟

 

ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !!

 

جعفر

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

39 دقائق مضت, jjafferr said:

 

ايش رأيك بهذه الطريقة:

1008.1.Clipboard13.jpg.f83323bce0a3043cd3a9367ac13574e4.jpg

.

نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟

 

ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !!

 

جعفر

طریقە رائع رائع جدا استاذ جعفر

فقط طلب اخر اذا ممکن

ربما اضاف مدرس اخر بدلا من ٦ لکل القاعە تختار ٧

مع کامل شکر و امتنانی لک

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

44 دقائق مضت, jjafferr said:

اعتقد هذه هي الطريقة الصحيحة 🙂

1008.1.Clipboard14.jpg.b5928f90c08dcdb60223754b248689fc.jpg

.

بس لازم نعمل طريقة بحيث يكون لكل قاعة 6-7 اشخاص !!

رجاء تفكر معاي ، لأني ما قادر اوصل الى طريقة سهلة 😞

 

جعفر

السلام عليكم استاذ جعفر

تعبت كثيرا مع هذا الموضوع لا تتعب نفسك اكثر ، انسى موضوع 7 هذا مو المشكلة 6 مدرسين كاف في اى القاعة

فقط اختيار جنس المهم مع منع (Duplication) .لازم اسم اي مدرس موجود في قاعة واحدة ليس في نفس الوقت اسم واحد موجود في قاعتين

في المرفق السابق يوجد هذا النقس ( مدرس رقم 171 ) موجود في القاعة 114 و 115

مع كامل شكر والتقدير الكDuplication.png.8d8e6efc51af3166e5f08654f94bac63.png

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

الاخوة والاخوات مشرفين واعضاء هذا المنتدى الرائع

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

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

فقط لدي المشكلة وهي اريد اختيار جنس المدرسين لكل القاعة في جدول (tbl_Allowed) و من حقلين (Allow_Male) و (Allow_Female).

الان القاعدة يوزع المدرسين لكل القاعة 3 رجال و 3 اناث بالتساوي المطلوب اختيار جنس القاعة يدويا.

مثال: اختيار القاعة رقم 133 فقط من رجال و قاعة اخرى من اناث فقط و اخرى من رجال واناث ... وكذا 

 

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

2021 - Copy - Copy.rar

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

السلام عليكم 🙂

 

سيدي الفاضل ، عملت شوية تغييرات ، فخلينا نتابع (رجاء مراجعة الشرح في مشاركاتي السابقة) :

1. جدول خاص للمدرسين tbl_Teachers ، ولكل واحد رقمه الخاص Teacher_ID (حتى لا تتشابه الاسماء) ، ورقم المدرسة التي هو بها SID ،

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

3. جدول توزيع المدرسين عشوائيا tbl_Distributed ، ويتم انتاج بياناته برمجيا ، وهو المطلوب

1008.2.Clipboard01.jpg.2e1ddc6b4425fbb53e5c6f5e7d9521a4.jpg

.

وفي هذا النموذج نقوم بادخال بيانات الجدول tbl_Allowed ، ولا يسمح هذا النموذج من ادخال عدد مدرسين غير موجودين في جدول tbl_Teachers ،

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

1008.2.Clipboard02.jpg.ddeb9b12912d54960fb561087d339a7b.jpg

.

وهذا الزر في النموذج يوجد به كود التوزيع (والذي سأضعه في نهاية هذه المشاركة)

1008.2.Clipboard03.jpg.c8309a30293e5ced0ff6b0f83524fde6.jpg

.

البرنامج لا يستعمل الاستعلام الاول (ذكور) والاخير (اناث) ويمكن حذفهما ، ولكن الاستعلام الذي في الوسط qry_D_Halls_All يحتوي على الاستعلامين

1008.2.Clipboard04.jpg.dc26f86719492241edb85b88bc138c29.jpg

.

وهنا نستطيع ان نرى نتائج دمج الاستعلامين في الاستعلام qry_D_Halls_All والذي وفر علينا الكثير من الخطوات

1008.2.Clipboard05.jpg.4787b522691a228b9a777a8540011978.jpg

.

الاستعلام الذي به جميع الملاحظين الذين يمكنهم مراقبة القاعات ، حسب كل مدرسة ، 

1008.2.Clipboard06.jpg.1a1b4d4414854a00e4b4ac700e09e5fb.jpg

.

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

1008.2.Clipboard07.jpg.088f4d9b8f4f93ceb88573bf2c5a69b3.jpg

.

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

1008.2.Clipboard08.jpg.a66e9d76301bc53e449de2a3dc1b83ad.jpg

.

والنتيجة:

1008.2.Clipboard10.jpg.32b874f03c533de1cfc0aea379357720.jpg

.

وهذا هو الكود الذي يقوم بالعمل ، والذي يمكن تنضيفه قليلا ، لأن به متخلفات الكود السابق ، ولكنها لا تضر ، فلا تهتم فيها 🙂 :

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

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

ماذا أقول عن هذه الشخصيّة الرائعة.. عجزت الكلمات تعبر عن مدى الجميل والأمتنان..

اتمنى من الله عز وجل ان يعطيكم الصحة والعافية ، شكرا لكم على ما قدمتموه لي.

أخوك الأصغر : ريباز

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

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

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

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