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

Barna

الخبراء
  • Posts

    1073
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    24

كل منشورات العضو Barna

  1. هل التصور صحيح في الصورة ................. Private Sub أمر309_Click() Dim rst As DAO.Recordset Dim db As DAO.Database Dim ctl As Control Dim controlsList As New Collection Dim dorAwalField As String, dorThanField As String, finalField As String Dim dorAwalVal As Variant, dorThanVal As Variant, finalVal As Variant Dim i As Integer Dim excludedNames As Variant Set db = CurrentDb() Set rst = Me.RecordsetClone ' نسخة من مصدر بيانات النموذج ' أسماء الحقول التي نريد استثناؤها (اسم الطالب، رقم الجلوس) excludedNames = Array("num_Glos", "name_student") ' جمع أسماء الحقول المرتبطة بالدرجات، حسب ترتيب مربعات النص في النموذج For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then If IsExcluded(ctl.Name, excludedNames) = False Then If ctl.ControlSource <> "" Then controlsList.Add ctl.ControlSource End If End If End If Next ctl ' المرور على جميع السجلات وتحديث الدرجات If Not rst.EOF Then rst.MoveFirst Do While Not rst.EOF rst.Edit For i = 1 To controlsList.Count Step 3 If i + 2 <= controlsList.Count Then dorAwalField = controlsList(i) dorThanField = controlsList(i + 1) finalField = controlsList(i + 2) dorAwalVal = Nz(rst(dorAwalField), 0) dorThanVal = rst(dorThanField) ' بدون Nz حتى نتحقق من Null ' تنفيذ القاعدة: If IsNull(dorThanVal) Then finalVal = dorAwalVal ElseIf dorThanVal = -1 Then finalVal = -1 ElseIf dorThanVal >= 50 Then finalVal = 50 Else finalVal = dorThanVal End If rst(finalField) = finalVal End If Next i rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing Set db = Nothing Me.Requery ' لتحديث النموذج بعد التعديل MsgBox "تم تحديث جميع الدرجات النهائية بنجاح.", vbInformation End Sub
  2. استبدل الكود الموجود تحت الزر فقط بهذه الشيفرة ........... Private Sub أمر309_Click() Dim rst As DAO.Recordset Dim db As DAO.Database Dim ctl As Control Dim controlsList As New Collection Dim dorAwalField As String, dorThanField As String, finalField As String Dim dorAwalVal As Variant, dorThanVal As Variant, finalVal As Variant Dim i As Integer Dim excludedNames As Variant Set db = CurrentDb() Set rst = Me.RecordsetClone ' نسخة من مصدر بيانات النموذج ' أسماء الحقول التي نريد استثناؤها (اسم الطالب، رقم الجلوس) excludedNames = Array("num_Glos", "name_student") ' جمع أسماء الحقول المرتبطة بالدرجات، حسب ترتيب مربعات النص في النموذج For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then If IsExcluded(ctl.Name, excludedNames) = False Then If ctl.ControlSource <> "" Then controlsList.Add ctl.ControlSource End If End If End If Next ctl ' المرور على جميع السجلات وتحديث الدرجات If Not rst.EOF Then rst.MoveFirst Do While Not rst.EOF rst.Edit For i = 1 To controlsList.Count Step 3 If i + 2 <= controlsList.Count Then dorAwalField = controlsList(i) dorThanField = controlsList(i + 1) finalField = controlsList(i + 2) dorAwalVal = Nz(rst(dorAwalField), 0) dorThanVal = Nz(rst(dorThanField), -1) If dorThanVal = -1 Then finalVal = -1 ElseIf dorThanVal >= 50 Then finalVal = 50 Else finalVal = dorThanVal End If rst(finalField) = finalVal End If Next i rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing Set db = Nothing Me.Requery ' لتحديث النموذج بعد التعديل MsgBox "تم تحديث جميع الدرجات النهائية بنجاح.", vbInformation End Sub
  3. هل هذه الحالة موجودة من ضمن السجلات في المرفق السابق ؟؟؟؟؟
  4. هذه هي الصورة الناتجة ماذا تريد ؟؟؟؟ هل تريد مكان الدرجة النهائية يكتب 0 أم ماذا وضح بالشرح الكافي
  5. استخدم هذه الشيفرة في زر التحديث مع اللاحقة له ...... Private Sub أمر309_Click() Dim rst As DAO.Recordset Dim db As DAO.Database Dim ctl As Control Dim controlsList As New Collection Dim dorAwalField As String, dorThanField As String, finalField As String Dim dorAwalVal As Variant, dorThanVal As Variant, finalVal As Variant Dim i As Integer Dim excludedNames As Variant Set db = CurrentDb() Set rst = Me.RecordsetClone ' نسخة من مصدر بيانات النموذج ' أسماء الحقول التي نريد استثناؤها (اسم الطالب، رقم الجلوس) excludedNames = Array("name_student", "num_Glos") ' جمع الحقول الثلاثية فقط حسب الترتيب For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then If IsExcluded(ctl.Name, excludedNames) = False Then If ctl.ControlSource <> "" Then ' مرتبط بحقل فعلي controlsList.Add ctl.ControlSource End If End If End If Next ctl ' المرور على كل سجل في النموذج If Not rst.EOF Then rst.MoveFirst Do While Not rst.EOF rst.Edit For i = 1 To controlsList.Count Step 3 If i + 2 <= controlsList.Count Then dorAwalField = controlsList(i) dorThanField = controlsList(i + 1) finalField = controlsList(i + 2) dorAwalVal = Nz(rst(dorAwalField), 0) dorThanVal = Nz(rst(dorThanField), -1) If dorThanVal <> -1 Then If dorThanVal >= 50 Then finalVal = 50 Else finalVal = dorThanVal End If Else finalVal = dorAwalVal End If rst(finalField) = finalVal End If Next i rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing Set db = Nothing Me.Requery ' لتحديث العرض في النموذج MsgBox "تم تحديث جميع الدرجات النهائية بنجاح.", vbInformation End Sub Private Function IsExcluded(fieldName As String, excludedList As Variant) As Boolean Dim item As Variant For Each item In excludedList If LCase(fieldName) = LCase(item) Then IsExcluded = True Exit Function End If Next item IsExcluded = False End Function وهذا ملفك بعد التعديل ............... cont.accdb
  6. بل نريد الطريقة ربما افضل من طريقتي ونتعلم منها بارك الله فيك
  7. هل الصورة الموجودة في النموذج بعد التحديث هو المطلوب
  8. تم اضافة الاسطر المضللة في الكود بما يتناسب مع الحالة قيد المشكلة
  9. اشكرك اخي طاهر .... بارك الله فيك .... شغال على برنامج قطعني عن المنتدى ... جرب المرفق على الحالات السابقة والحالة الحالية حتى نتأكد من الكود .... Taher_1.mdb
  10. هل تقصد ترك سجلات القرض وكتابة تم التأجيل وإضافة سجلات جديدة بتواريخ جديدة
  11. اذا وصلت لجهاز الحاسب احاول الرد ان شاء الله تعالى
  12. طيب ولا تزعل نفسك .... ابحث عن هذا السطر في كل النماذج الفرعية لديك userResponse = MsgBox(result, vbOKOnly + vbInformation, "نتيجة التحقق") واستبدلها بهذا السطر userResponse = MsgBox(result, vbOKOnly + vbInformation + vbMsgBoxRight, "نتيجة التحقق")
  13. كلامك سليم ...... الاكسسوارات والتنسيقات على صاحب البرنامج استاذي @Foksh جرب المرفق وكل الاحتمالات التي لديك ............. BAR_AِِِA_20250320.mdb
  14. جرب كده ..................... BAR_AِِِA_20250320.mdb
  15. اخي @طاهر اوفيسنا السلام عليكم ورحمة الله وبركاته تقبل الله منا ومنكم صالح الاعمال ارجو المعذرة لانشغالي هذه الفترة والفترة الماضية جرب المرفق وحاول كل الاحتمالات للتاكد من سلامة الكود بارك الله فيك ..................... BAR_AِِِA_20250320.mdb
  16. كما ذكر اخي @Foksh صورة او ورقة اكسل وتكتب كل العناوين فيها وجعلها بدل مربعات النص او ورقة وورد
  17. يبدو المشكلة لديك في الاستعلام Qry_rptD1 مكتوب بطريقة معقدة
  18. استبدل نص الرسالة بهذا MsgBox "تم توزيع الإقتطاعات بنجاح" & vbCrLf & _ "مجموع اقتطاعات القروض: " & Format(TotalLoanDeductions, "#,##0.00") & " دج" & vbCrLf & _ "مجموع اقتطاعات الانخراط: " & Format(TotalSubscriptionDeductions, "#,##0.00") & " دج" & vbCrLf & _ "المجموع الكلي للاقتطاعات: " & Format(TotalDeductions, "#,##0.00") & " دج" & vbCrLf & _ "الباقي الكلي: " & Format(Remaining1, "#,##0.00") & " دج", _ vbInformation, "إقتطاعات شهر " & FrenchMonth(Month(Now())) & " " & Year(Now()) جرب واعلمنا بالنتيجة
  19. ممكن تلصق الكود كاملا هنا .. حتى نعرف ايش صار
  20. هذه فكرة فقط ... انت من يحدد ماذا تريد وغير ملزم لك . حسب برنامجك ويمكن الغائها نهائيا
  21. هذا طبيعي لانه تم الاقتطاع صحيح راجع الجدول هل تم الاقتطاع لهذه الاشهر
×
×
  • اضف...

Important Information