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

Foksh

أوفيسنا
  • Posts

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

  • Days Won

    183

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

  1. وعليكم السلام ورحمة الله وبركاته .. مشكلتك اذا ما خاب ظني ، هي في عدم اضافة المكتبة الموضحة في الصورة التالية :- طبعاً مع اختلاف الرقم 16.0 حسب الإصدار لديك . وإن شاء الله تشتغل معك .
  2. ظهرت عندي فعلاً .. أنت الأروع أستاذي الفاضل مع العلم كنت بفكر بحاجة تانية قيد التحديث
  3. هذا الاستعلام الذي خرجت به كما في الصورة السابقة نتيجته :- SELECT name_student, National_ID, CLASS_CLASS, num_Glos, n_lgna_dor2, sery_dor2, Dor_Arb, Dor_Math, Dor_Drast, Dor_Since, Dor_Eng, Dor_comp, Dor_skills, Dor_Den, TDor_Arb, TDor_Math, TDor_Drast, TDor_Since, TDor_Eng, TDor_Comp, TDor_Skills, TDor_Den, IIF(IsNumeric([Dor_Arb]), IIF(Val(Nz([Dor_Arb],0))>=50, Val([Dor_Arb]), IIF(IsNull([TDor_Arb]) OR Val(Nz([TDor_Arb],-1))=-1, 0, IIF(Val([TDor_Arb])>=50, 50, Val([TDor_Arb])) ) ), 0) AS N_Arb, IIF(IsNumeric([Dor_Math]), IIF(Val(Nz([Dor_Math],0))>=50, Val([Dor_Math]), IIF(IsNull([TDor_Math]) OR Val(Nz([TDor_Math],-1))=-1, 0, IIF(Val([TDor_Math])>=50, 50, Val([TDor_Math])) ) ), 0) AS N_Math, IIF(IsNumeric([Dor_Drast]), IIF(Val(Nz([Dor_Drast],0))>=50, Val([Dor_Drast]), IIF(IsNull([TDor_Drast]) OR Val(Nz([TDor_Drast],-1))=-1, 0, IIF(Val([TDor_Drast])>=50, 50, Val([TDor_Drast])) ) ), 0) AS N_Drast, IIF(IsNumeric([Dor_Since]), IIF(Val(Nz([Dor_Since],0))>=50, Val([Dor_Since]), IIF(IsNull([TDor_Since]) OR Val(Nz([TDor_Since],-1))=-1, 0, IIF(Val([TDor_Since])>=50, 50, Val([TDor_Since])) ) ), 0) AS N_Since, IIF(IsNumeric([Dor_Eng]), IIF(Val(Nz([Dor_Eng],0))>=50, Val([Dor_Eng]), IIF(IsNull([TDor_Eng]) OR Val(Nz([TDor_Eng],-1))=-1, 0, IIF(Val([TDor_Eng])>=50, 50, Val([TDor_Eng])) ) ), 0) AS N_Eng, IIF(IsNumeric([Dor_comp]), IIF(Val(Nz([Dor_comp],0))>=50, Val([Dor_comp]), IIF(IsNull([TDor_Comp]) OR Val(Nz([TDor_Comp],-1))=-1, 0, IIF(Val([TDor_Comp])>=50, 50, Val([TDor_Comp])) ) ), 0) AS N_Comp, IIF(IsNumeric([Dor_skills]), IIF(Val(Nz([Dor_skills],0))>=50, Val([Dor_skills]), IIF(IsNull([TDor_Skills]) OR Val(Nz([TDor_Skills],-1))=-1, 0, IIF(Val([TDor_Skills])>=50, 50, Val([TDor_Skills])) ) ), 0) AS N_Skills, IIF(IsNumeric([Dor_Den]), IIF(Val(Nz([Dor_Den],0))>=50, Val([Dor_Den]), IIF(IsNull([TDor_Den]) OR Val(Nz([TDor_Den],-1))=-1, 0, IIF(Val([TDor_Den])>=50, 50, Val([TDor_Den])) ) ), 0) AS N_Den FROM data_dor2 WHERE (((data_dor2.[name_student])<>"IsNull"));
  4. سبقتني في الإستكمال ، وهي لك لأني كنت على وشك ارفاق الصورة التالية أيضاً أخي @Barna 😅
  5. وعليكم السلام ورحمة الله وبركاته .. بدايةً وقبل الخوض في التجارب أكثر . جرب هذا الاستعلام الجزئي ، هل يفي بالغرض ؟ SELECT data_dor2.name_student, data_dor2.National_ID, data_dor2.CLASS_CLASS, data_dor2.num_Glos, data_dor2.n_lgna_dor2, data_dor2.sery_dor2, data_dor2.Dor_Arb, data_dor2.Dor_Math, data_dor2.Dor_Drast, data_dor2.Dor_Since, data_dor2.Dor_Eng, data_dor2.Dor_comp, data_dor2.Dor_skills, data_dor2.Dor_Den, data_dor2.TDor_Arb, data_dor2.TDor_Math, data_dor2.TDor_Drast, data_dor2.TDor_Since, data_dor2.TDor_Eng, data_dor2.TDor_Comp, data_dor2.TDor_Skills, data_dor2.TDor_Den, data_dor2.N_Arb, data_dor2.N_Math, data_dor2.N_Drast, data_dor2.N_Since, data_dor2.N_Eng, data_dor2.N_Comp, data_dor2.N_Skills, data_dor2.N_Den, IIf(data_dor2.N_Arb=0, IIf(data_dor2.TDor_Arb>=50, data_dor2.TDor_Arb, data_dor2.TDor_Arb), IIf(data_dor2.TDor_Arb<50, data_dor2.TDor_Arb, 50)) AS Final_Arb, IIf(data_dor2.N_Math=0, IIf(data_dor2.TDor_Math>=50, data_dor2.TDor_Math, data_dor2.TDor_Math), IIf(data_dor2.TDor_Math<50, data_dor2.TDor_Math, 50)) AS Final_Math, IIf(data_dor2.N_Drast=0, IIf(data_dor2.TDor_Drast>=50, data_dor2.TDor_Drast, data_dor2.TDor_Drast), IIf(data_dor2.TDor_Drast<50, data_dor2.TDor_Drast, 50)) AS Final_Drast, IIf(data_dor2.N_Since=0, IIf(data_dor2.TDor_Since>=50, data_dor2.TDor_Since, data_dor2.TDor_Since), IIf(data_dor2.TDor_Since<50, data_dor2.TDor_Since, 50)) AS Final_Since, IIf(data_dor2.N_Eng=0, IIf(data_dor2.TDor_Eng>=50, data_dor2.TDor_Eng, data_dor2.TDor_Eng), IIf(data_dor2.TDor_Eng<50, data_dor2.TDor_Eng, 50)) AS Final_Eng, IIf(data_dor2.N_Comp=0, IIf(data_dor2.TDor_Comp>=50, data_dor2.TDor_Comp, data_dor2.TDor_Comp), IIf(data_dor2.TDor_Comp<50, data_dor2.TDor_Comp, 50)) AS Final_Comp, IIf(data_dor2.N_Skills=0, IIf(data_dor2.TDor_Skills>=50, data_dor2.TDor_Skills, data_dor2.TDor_Skills), IIf(data_dor2.TDor_Skills<50, data_dor2.TDor_Skills, 50)) AS Final_Skills, IIf(data_dor2.N_Den=0, IIf(data_dor2.TDor_Den>=50, data_dor2.TDor_Den, data_dor2.TDor_Den), IIf(data_dor2.TDor_Den<50, data_dor2.TDor_Den, 50)) AS Final_Den FROM data_dor2 WHERE data_dor2.name_student Is Not Null; وبناءً عليه نستكمل باقي المطلوب ..
  6. وعليكم السلام ورحمة الله وبركاته .. من جهة قد يكون الأمر صعباً . لكن من خلال خدمات Google Cloud Console ، وتوظيف الـ API بشكل جيد يمكن الحصول على النتيجة القريبة من الطلب الذي تريده . كنت قد توجهت الى استخدام خدمات Google API في عدة مشاريع، قد تجد منها متوفراً في توقيعي نهاية هذه المشاركة ..
  7. لما تكون زهقان ، شوف صاحبك بيعمل ايه Eye Foksh.accdb
  8. تصدقوا بالله اني بحضر مفاجأة ليك يا بشمهندس محمد مع انه بشمهندس موسى سبقني ، بس الله وكيلك عندي زبون رخم حبتين
  9. من باب التشجيع 😎 هذه صورة الواجهة الجديدة مع الإضافات الخارجية 👌
  10. طيب ، على حسب ما فهمت من مناقشات سابقة بهذا الخصوص ، جرب هذا التعديل :- Private Sub أمر322_Click() On Error GoTo ErrHandler If DCount("*", "data_dor2", "Not IsNull(n_lgna_dor2)") > 0 Then MsgBox "عفوا .. تم إضافة وترقيم اللجان من قبل", vbCritical + vbMsgBoxRight, "" Exit Sub End If If IsNull(Me.studen_lg) Or Me.studen_lg <= 0 Then MsgBox "عزيزى مدخل البيانات .. من فضلك ضع عدد التلاميذ المطلوبة فى كل لجنة قبل التنفيذ", vbCritical + vbMsgBoxRight, "" Exit Sub End If If IsNull(Me.start_lg) Then MsgBox "عزيزى مدخل البيانات من فضلك ضع بداية ترقيم اللجان قبل التنفيذ", vbCritical + vbMsgBoxRight, "" Exit Sub End If Dim rs As DAO.Recordset Dim lgCounter As Long Dim stdPerGroup As Long Dim i As Long Set rs = Me.RecordsetClone rs.MoveFirst lgCounter = Me.start_lg stdPerGroup = Me.studen_lg i = 0 Do While Not rs.EOF rs.Edit rs!n_lgna_dor2 = lgCounter rs.Update i = i + 1 If i Mod stdPerGroup = 0 Then lgCounter = lgCounter + 1 End If rs.MoveNext Loop Me.Requery MsgBox "تم توزيع الطلاب على اللجان بنجاح", vbInformation + vbMsgBoxRight, "" Exit Sub ErrHandler: MsgBox " : حدث خطأ" & Err.Description, vbCritical + vbMsgBoxRight, "" End Sub
  11. وعليكم السلام ورحمة الله وبركاته.. العنوان ليس ذا دلالة على المشكلة . وبدافع الفضول عند فتح الموضوع نجد أن الشرح لا يوصل المطلوب . فما هو الذي لا يتم تنفيذه ؟؟؟؟؟ 😅
  12. ذهبت أفكارنا في تشعبات كثيرة فعلاً ، ولكن يمكن نقصان المعلومات كان أحد الأسباب 😅 على العموم أعتقد ذهابك إلى مقترحك ، هو أنسب حل يلبي مطلبك بشكل وافي 😇
  13. هنا ، ممكن يكون أكتر من سيناريو للفكرة .. هل الفترات ستكون مقرونة بتاريخ مثلاً لكل شهر ( متغيرة في حال وجود أشهر مثل شهر رمضان على سبيل المثال انه ممكن يكون وقت العمل أقصر أو متأخر عن الأشهر العادية ... إلخ من سيناريوهات ؟؟؟) ولكن إن كان يحتوي أكثر من سجل فحتماً لازم يكون هناك شرط إضافي . طبعاً كل دي احتمالات قد تكون وهمية بناءً على فكرة استاذي ابو خليل هنا :- لأنه هنا هو حدد الـ ID الخاص بالسجل وليس الخاص بالفترة . على أساس انها ممكن تكون سجلات وحيدة ويتم تحديثها حسب الحاجة .
  14. على فكرة ، ممكن يكون في لبس في فهم ftraName . انا ربطت الموضوع على انه ممكن يكون اسماء الفترات في جدول منفصل وان 1 و 2 دول معرفات الفترات في جدول أسماء الفترات ، وليس الحقل ID اللي في الجدول الحالي tbl_Ftrat .. يعني انا اشتغلت على ان الفترات ليها جدول منفصل وان القيمة ممكن تكون معرف الفترة بناءً على الجملة دي فهمت قصدي !؟
  15. ولو عاوز أريحك برضو .. جرب ده برضو :- Dim totalMinutes As Double totalMinutes = Nz(DSum("countWorkHours", "tbl_Ftrat", "ftraName IN (1, 2)"), 0) CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = " & totalMinutes & " WHERE ID = 1", dbFailOnError Me.Refresh
  16. يا صاحبي ، شوف :- totalminutes = Nz(DSum("countWorkHours", "tbl_Ftrat", "ftraName IN ('1','2') AND ID > 1"), 0) انا حددتله الشرط في الحقل countWorkHours ، اللي عاوز اجمع قيمه اللي هو : ftraName والشرط كان IN ('1','2') وشرط السجل اللي عاوز أحدثه : WHERE ID = 1" تبقى فين امشكلة ؟؟ جرب عدل القيم أو نوع الحقل واحكيلي الخلل !!!!
  17. في المرفق :- وحتى لو كانت رقمية ، جربت النتيجة وبدون أخطاء او خلل فيها
  18. فيما لو كانت القيمة المخزنة في جدولك يمثل رقم الفترة من جدولها ( معرف الفترة افترضت انه 1 = الصباحية ، 2 = المسائية بغض النظر عن التسمية )
  19. أنا سأكتفي بما لدي في آخر محاولة ,, في الزر :- Dim totalminutes As Double totalminutes = Nz(DSum("countWorkHours", "tbl_Ftrat", "ftraName IN ('1','2') AND ID > 1"), 0) CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = " & totalminutes & " WHERE ID = 1", dbFailOnError Me.Refresh الملف المرفق :- Database2.zip
  20. طيب ، كفكرة أخرى بتحديد شروط الفلترة أكثر من خلال الاستدعاء ، جرب هذا التعديل :- Public Sub UpdateRecordSumAfterID_ByFilter(tableName As String, idField As String, idValue As Variant, targetField As String, sumField As String, Optional filterField As String = "", Optional filterValue1 As String = "", Optional filterValue2 As String = "") Dim rs As DAO.Recordset Dim total As Double Dim foundTarget As Boolean Set rs = CurrentDb.OpenRecordset(tableName, dbOpenDynaset) If rs.EOF Then Exit Sub rs.MoveFirst foundTarget = False Do Until rs.EOF If foundTarget Then If filterField <> "" Then If rs.Fields(filterField).Value = filterValue1 Or rs.Fields(filterField).Value = filterValue2 Then total = total + Nz(rs.Fields(sumField).Value, 0) End If Else total = total + Nz(rs.Fields(sumField).Value, 0) End If ElseIf rs.Fields(idField).Value = idValue Then foundTarget = True End If rs.MoveNext Loop rs.MoveFirst Do Until rs.EOF If rs.Fields(idField).Value = idValue Then rs.Edit rs.Fields(targetField).Value = total rs.Update Exit Do End If rs.MoveNext Loop rs.Close Set rs = Nothing DoCmd.RunCommand acCmdRefresh End Sub وسيكون الإستدعاء كالآتي :- Call UpdateRecordSumAfterID_ByFilter( _ "tbl_Ftrat", _ "ID", 1, _ "countWorkHours", _ "countWorkHours", _ "ftraName", _ "فترة صباحية", _ "فترة مسائية")
  21. بغض النظر عن الخطأ الذي ذكره أبو جودي ، ومن المؤكد أن السجلات هي للتجربة فقط لا غير .. في الدالة العامة التالية :- Public Sub UpdateRecordWithID(frm As Form, idField As String, idValue As Variant, targetField As String, sumField As String) Dim rs As DAO.Recordset Dim total As Double Dim foundTarget As Boolean Set rs = frm.RecordsetClone rs.MoveFirst Do Until rs.EOF If foundTarget Then If rs!ftraName = "فترة صباحية" Or rs!ftraName = "فترة مسائية" Then total = total + Nz(rs.Fields(sumField).Value, 0) End If ElseIf rs.Fields(idField).Value = idValue Then foundTarget = True End If rs.MoveNext Loop If Not foundTarget Then rs.Close: Set rs = Nothing Exit Sub End If rs.MoveFirst Do Until rs.EOF If rs.Fields(idField).Value = idValue Then frm.Recordset.Bookmark = rs.Bookmark frm.Controls(targetField).Value = total frm.Dirty = False Exit Do End If rs.MoveNext Loop rs.Close: Set rs = Nothing End Sub تركت لك حرية تحديد اسم الحقل الفريد ورقمه ، واسم الحقل المستهدف تحديثه بالقيم التي تريدها من خلال الاستدعاء كالآتي :- Call UpdateRecordWithID(Me, "ID", 1, "countWorkHours", "countWorkHours") الملف مع الفكرة المقترحة :- Database1.zip
  22. وعليكم السلام ورحمة الله وبركاته ... هل المقصود كهذه النتيجة :-
  23. الف لا بأس عليك أستاذنا خليفة . ونسأل الله لك الشفاء العاجل القريب . إن ربك لهو المُجيب .. الله يبارك فيك 💐
×
×
  • اضف...

Important Information