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

التوزيع الألي لا يعمل كما يجب


chardoneret

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

الملف المرفق base de donnees فيه جدول TBLPRFTAWZI3 الحقل المراد وضغ فيه التفويج SALLECORRECTION العملية تتم في النموذج GROUPEPRF بالضغظ على أمر التوزيع حيث  من المفترض ان يوزع الأساتذة بالتساوي على القاعات أو الأفواج وذلك حسب مواد التدريس وهذا شرط أساسي لكن العملية لا تتم على ما يرام أي ان هناك خلل في التوزيع  لا أدري أين هو.                   

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

السلام عليكم :rol:

 

انا فتحت ملفك اكثر من مرة ، ولم اتوصل للمطلوب :blink:

 

في 7/18/2016 at 01:05, jjafferr said:

رجاء توضيح طلبك ، 

وما النتيجة التي يجب ان تحصل عليها ، اعطنا مثال لوسمحت :rol:

 

اعطنا مثال من برنامجك ، وباسماء الحقول :rol:

 

جعفر

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

السلام عليكم :rol:

 

هذا الكود على الزر "توزيع المصححين2"


Private Sub Dispatch_Click()
On Error GoTo err_Dispatch_Click

    'clear SALLECORRECTION for the selected subject
    mySQL = "Update TBLPRFTAWZI3"
    mySQL = mySQL & " SET SALLECORRECTION = 0"
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    CurrentDb.Execute (mySQL)

    Dim rst As DAO.Recordset

    mySQL = "Select * From TBLPRFTAWZI3"
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    Set rst = CurrentDb.OpenRecordset(mySQL)
    rst.MoveLast: rst.MoveFirst

'1
    'this code will assign (Me.k1 / Me.k) , and it will NOT care about the REMAINING
'    For j = 1 To Me.k
'    For i = 1 To (Me.k1 / Me.k)
'        rst.edit
'            rst!SALLECORRECTION = j
'        rst.Update
'        rst.MoveNext
'    Next i
'    Next j

'2
    'this code will assign (Me.k1 / Me.k), and the REMAINING will be given the NEXT number
    k_Counter = 0
    SAL = 1
    For i = 1 To Me.k1
        k_Counter = k_Counter + 1
        rst.edit
            rst!SALLECORRECTION = SAL
        rst.Update
        If k_Counter = Int(Me.k1 / Val(Me.k)) Then
            k_Counter = 0
            SAL = SAL + 1
        End If
        rst.MoveNext
    Next i

'3
    'This code will change the number of the REMAINING to the last number of (Me.k1 / Me.k)
    mySQL = "Update TBLPRFTAWZI3"
    mySQL = mySQL & " SET SALLECORRECTION =" & Me.k
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    mySQL = mySQL & " And SALLECORRECTION = " & SAL
    CurrentDb.Execute (mySQL)

    DoCmd.Requery: Me.GROUP01.Requery: Me.Fille25.Requery: Me.Fille26.Requery: Me.Fille27.Requery: Me.Fille28.Requery
    
Exit Sub
err_Dispatch_Click:

    If Err.Number = 1 Then
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Sub

.

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

73 / 5 = 14.6

يعني يكون عندك 5 افواج بعدد 14 ، ويبقى 3 مصححين ،

الكود 1: يوزع لك الافواج ، ولا يتعامل مع الباقي (فلم يتم استعماله) ،

الكود 2: يوزع لك الافواج ، والباقي يعمل له فوج جديد للمصححين الـ 3،

الكود3: وهو تكملة للكود 2 ، والذي بدل ان يعمل فوج جديد للمصححين الـ 3 ، فانه يدمجمهم مع آخر فوج ، فعليه الفوج رقم 5 يصبح به: 14 + 3 = 17 :rol:

 

والشور والكود بيدك :rol:

 

جعفر

408.zip

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

18 ساعات مضت, jjafferr said:

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

73 / 5 = 14.6

يعني يكون عندك 5 افواج بعدد 14 ، ويبقى 3 مصححين ،

الكود 1: يوزع لك الافواج ، ولا يتعامل مع الباقي (فلم يتم استعماله) ،

الكود 2: يوزع لك الافواج ، والباقي يعمل له فوج جديد للمصححين الـ 3،

الكود3: وهو تكملة للكود 2 ، والذي بدل ان يعمل فوج جديد للمصححين الـ 3 ، فانه يدمجمهم مع آخر فوج ، فعليه الفوج رقم 5 يصبح به: 14 + 3 = 17 :rol:

وعليكم السلام :rol:

 

انا اخبرتك عن هذه المشكلة ، واعطيتك حل لها:

اذا اردت ان يكون الكل يحمل رقم 17 ، فيجب ان نفعّل المادة 1 من الكود ونوقف عمل المادة 2 و 3 من الكود.

 

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

 

جعفر

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

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

أخي جعفر صبرك علي شوي

أنا لا تهمني 17 أو 18 أو 20 .........

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

ملاحظة الكود بعمل مع المواد الأخرى غير أن مادة الفيزياء و التربية المدنية لا يعمل فيه جيدا (انا اتكلم على المادة 2 و 3 من الكود)

سامحني أخي جعفر انا أريد التميز في أعمالي فلا تنزعج مني اخوك رضا.....

 

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

انت لم تتطرق الى هذا من قبل:blink:

4 ساعات مضت, chardoneret said:

حيث الفائض من الأشخاص يعاد توزيعه على الأفواج فقط و إلا خلقنا نوع من عدم التوزيع الغير مقصود

 

تفضل :rol:

 

408.Clipboard01.jpg

 

تم ايقاف الكود 3 ، وعمل الكود 4 ليوزع الباقين على المجموعات بالتساوي:


Private Sub Dispatch_Click()
On Error GoTo err_Dispatch_Click

    'clear SALLECORRECTION for the selected subject
    mySQL = "Update TBLPRFTAWZI3"
    mySQL = mySQL & " SET SALLECORRECTION = 0"
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    CurrentDb.Execute (mySQL)

    Dim rst As DAO.Recordset

    mySQL = "Select * From TBLPRFTAWZI3"
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    Set rst = CurrentDb.OpenRecordset(mySQL)
    rst.MoveLast: rst.MoveFirst

'1
    'this code will assign (Me.k1 / Me.k) , and it will NOT care about the REMAINING
'    For j = 1 To Me.k
'    For i = 1 To (Me.k1 / Me.k)
'        rst.edit
'            rst!SALLECORRECTION = j
'        rst.Update
'        rst.MoveNext
'    Next i
'    Next j

'2
    'this code will assign (Me.k1 / Me.k), and the REMAINING will be given the NEXT number
    k_Counter = 0
    SAL = 1
    For i = 1 To Me.k1
        k_Counter = k_Counter + 1
        rst.Edit
            rst!SALLECORRECTION = SAL
        rst.Update
        If k_Counter = Int(Me.k1 / Val(Me.k)) Then
            k_Counter = 0
            SAL = SAL + 1
        End If
        rst.MoveNext
    Next i

'3
    'This code will change the number of the REMAINING to the last number of (Me.k1 / Me.k)
'    mySQL = "Update TBLPRFTAWZI3"
'    mySQL = mySQL & " SET SALLECORRECTION =" & Me.k
'    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
'    mySQL = mySQL & " And SALLECORRECTION = " & SAL
'    CurrentDb.Execute (mySQL)

'4
    'spread the REMAINING to all the groups
    mySQL = "Select * From TBLPRFTAWZI3"
    mySQL = mySQL & " WHERE MATIERE = '" & [Forms]![GROUPEPRF]![MODI_MATIERE] & "'"
    mySQL = mySQL & " And SALLECORRECTION = " & SAL
    Set rst = CurrentDb.OpenRecordset(mySQL)
    rst.MoveLast: rst.MoveFirst
    RC = rst.RecordCount
    
    For i = 1 To RC
        
        rst.Edit
            rst!SALLECORRECTION = i
        rst.Update
        rst.MoveNext
    Next i
    
    rst.Close: Set rst = Nothing
    DoCmd.Requery: Me.GROUP01.Requery: Me.Fille25.Requery: Me.Fille26.Requery: Me.Fille27.Requery: Me.Fille28.Requery
    
Exit Sub
err_Dispatch_Click:

    If Err.Number = 1 Then
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Sub

 

 

جعفر

408.zip

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

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