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

تعديل في كود


khasem

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

السلام عليكم اخواتي الكرام 

هل يمكن وضع مربع نص نضع فيه عدد المواد التي يمتحن فيها الطالب لكي يتعامل الكود مع عدد المواد التي تحتوي على درجات ( لانه يوجد اختلاف في عدد المواد التي يتم تدريسها في مدرسة واخرى )

الكود للاستاذ الفاضل المبدع ابو تراب 

example.accdb

تم تعديل بواسطه khasem
رابط هذا التعليق
شارك

عمل ومجهود رائع من الاستاذ ابو تراب 

وبالمرور على الكود تجد أن عدد المواد تم الاعلان عنه كمصفوفة باسم ٍSubjects  كما يلي :

Private subjects(12) As TextBox

وهذا النوع يسمى Fixed أو ثابت ومحدد بعدد عناصر للمصفوفة ، ولتحويله لديناميك dynamic يكون الاعلان :

Private subjects() As TextBox

وذلك حتى تتمكن من تغيير حجم المصفوفة في أي وقت وفي أي مكان بالكود باستخدام الأمر ReDim  كالتالي :

ReDim subjects(12)

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

ReDim Preserve subjects(Me.Text1)

وعلاوة على ما سبق يجب تغيير مسميات مربعات النص بالنموذج وتكون مسلسلة حتى :1/ يسهل الاشارة إليها   2/توفر عدد أسطر الكود. 3/تمكن من اضافة الكثير من المواد بعد ذلك 

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

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

13 minutes ago, Gamal.Saad said:

عمل ومجهود رائع من الاستاذ ابو تراب 

وبالمرور على الكود تجد أن عدد المواد تم الاعلان عنه كمصفوفة باسم ٍSubjects  كما يلي :


Private subjects(12) As TextBox

وهذا النوع يسمى Fixed أو ثابت ومحدد بعدد عناصر للمصفوفة ، ولتحويله لديناميك dynamic يكون الاعلان :


Private subjects() As TextBox

وذلك حتى تتمكن من تغيير حجم المصفوفة في أي وقت وفي أي مكان بالكود باستخدام الأمر ReDim  كالتالي :


ReDim subjects(12)

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


ReDim Preserve subjects(Me.Text1)

وعلاوة على ما سبق يجب تغيير مسميات مربعات النص بالنموذج وتكون مسلسلة حتى :1/ يسهل الاشارة إليها   2/توفر عدد أسطر الكود. 3/تمكن من اضافة الكثير من المواد بعد ذلك 

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

استاذ جمال 

  الله لايحرمنا منك ومن الاستاذ ابو تراب  ومن الاساتذة الافاضل الآخرين

ربي يحفظكم ويزيدكم من فائض علمه 

انتظر منك الحل باذنه تعالى مع تقديري واحترامي  

تم تعديل بواسطه khasem
رابط هذا التعليق
شارك

يحتاج الحل للمراجعة و التحسين

و أهم شيئ في فكرة الحل هو  أن تضع أسماء المواد الدراسية في جدول ثم تقوم دالة باستيراد المسميات إلى أماكنها بالنموذج بدلالة رقم المادة

Private Sub set_subject_interf()
Dim rs As DAO.Recordset
Dim F, s, ss As Integer
Dim ctl As Control
Set rs = CurrentDb.OpenRecordset("Subject")
rs.MoveLast: rs.MoveFirst
    
For F = 0 To rs.RecordCount - 1          '''''''' المرور على السجلات للحصول على مسميات المقررات
   For Each ctl In Me.Controls          '''''''''  المرور على كائنات النموذج
    If ctl.ControlType = acLabel Then   '''''''''  المرور على مربعات العنوان فقط
     '''''''''  تحديد رقم مربع العنوان ومطابقته مع كود المادة
      s = InStr(5, ctl.Name, "_")
      If Len(ctl.Name) > 8 Then
       ss = Mid(ctl.Name, 5, s - 5)
       If Mid(ctl.Name, Len(ctl.Name) - 3) = "_Lbl" Then
         If rs!subject_id = ss Then ctl.Caption = Nz(rs!subject_name, "")     ' نسخ اسم المادة من الجدول لمربع العنوان
        End If
     End If
   End If
Next ctl
rs.MoveNext
Next
End Sub

 

Dynamic Array and form controls 1.accdb

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

2 hours ago, Gamal.Saad said:

يحتاج الحل للمراجعة و التحسين

و أهم شيئ في فكرة الحل هو  أن تضع أسماء المواد الدراسية في جدول ثم تقوم دالة باستيراد المسميات إلى أماكنها بالنموذج بدلالة رقم المادة


Private Sub set_subject_interf()
Dim rs As DAO.Recordset
Dim F, s, ss As Integer
Dim ctl As Control
Set rs = CurrentDb.OpenRecordset("Subject")
rs.MoveLast: rs.MoveFirst
    
For F = 0 To rs.RecordCount - 1          '''''''' المرور على السجلات للحصول على مسميات المقررات
   For Each ctl In Me.Controls          '''''''''  المرور على كائنات النموذج
    If ctl.ControlType = acLabel Then   '''''''''  المرور على مربعات العنوان فقط
     '''''''''  تحديد رقم مربع العنوان ومطابقته مع كود المادة
      s = InStr(5, ctl.Name, "_")
      If Len(ctl.Name) > 8 Then
       ss = Mid(ctl.Name, 5, s - 5)
       If Mid(ctl.Name, Len(ctl.Name) - 3) = "_Lbl" Then
         If rs!subject_id = ss Then ctl.Caption = Nz(rs!subject_name, "")     ' نسخ اسم المادة من الجدول لمربع العنوان
        End If
     End If
   End If
Next ctl
rs.MoveNext
Next
End Sub

 

Dynamic Array and form controls 1.accdb 700 kB · 1 download

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

بارك الله بك وجزاك الله خيرا في هذا الشهر الفضيل

توجد مشكلة في المجموع والمعدل من حيث الناتج  

كذلك  المفروض المجموع والمعدل يظهر للناجح فقط اما المكمل والراسب فلا يظهر له مجموع

ارجو ملاحظة ذلك

مع تقديري واحترامي

تم تعديل بواسطه khasem
رابط هذا التعليق
شارك

2 ساعات مضت, khasem said:

توجد مشكلة في المجموع والمعدل من حيث الناتج  

كذلك  المفروض المجموع والمعدل يظهر للناجح فقط اما المكمل والراسب فلا يظهر له مجموع

 

منذ ساعه, Ahmed Sary said:

أو

المعادلة خطأ في البداية

نعم نعم أعتذر  خطأ غير مقصود لأن القسمة كانت تتم على العدد المفترض للمقررات + 1  وهذا غير صحيح 

وتم التعديل بإزالة +1

Dynamic Array and form controls update.accdb

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

استاذي الفاضل

السلام عليكم 

بالنسبة للسجل رقم 2  يفترض ان يكون المعدل  83  وسجل رقم 3 يكون المعدل  71 

سجل رقم 4 المعدل صحيح 

سجل رقم 7  مكمل  والمفروض ان لايظهر المجموع والمعدل للمكمل وكذلك الراسب  لان المجموع  والمعدل يظهر للناجح فقط  

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

هذه مشكلة تقريب ، وبالمناسبة فهي مشكلة غريبة جدا للدالة Round 
المفترض أن :

Round(82.5, 0) 

تساوي 83 لكن الدالة تعطي 82 في مشكلة غير مفهومة للأرقام الزوجية التي يصاحبها رقم خمسة بعد العلامة العشرية

على العموم تم الحل باضافة 0.1+
 

Dynamic Array and form controls up 2.accdb

تم تعديل بواسطه Gamal.Saad
  • Like 1
  • Thanks 3
رابط هذا التعليق
شارك

7 minutes ago, Gamal.Saad said:

والله استاذ جمال انا لا اعرف كيف اجازيك  ولكن اسال الله تعالى ان يجزيك خير الجزاء

والله سابقى ادعو لك مادمت حياً

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

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

تسلم يا غالي

والشكر موصول للأستاذ/ ابو تراب صاحب فكرة الحل منذ البداية

وتكفينا دعواتك و سعادتك ما تم حله بالبرنامج من مشكلات

 

تم تعديل بواسطه Gamal.Saad
  • Thanks 2
رابط هذا التعليق
شارك

22 minutes ago, Gamal.Saad said:

تسلم يا غالي

والشكر موصول للأستاذ/ ابو تراب صاحب فكرة الحل منذ البداية

وتكفينا دعواتك و سعادتك ما تم حله بالبرنامج من مشكلات

 

نعم استاذي الفاضل  

استاذنا الفاضل ابو تراب متفضل وجزاه الله خير الجزاء

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

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