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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    180

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

  1. يا صاحبي ، شوف :- totalminutes = Nz(DSum("countWorkHours", "tbl_Ftrat", "ftraName IN ('1','2') AND ID > 1"), 0) انا حددتله الشرط في الحقل countWorkHours ، اللي عاوز اجمع قيمه اللي هو : ftraName والشرط كان IN ('1','2') وشرط السجل اللي عاوز أحدثه : WHERE ID = 1" تبقى فين امشكلة ؟؟ جرب عدل القيم أو نوع الحقل واحكيلي الخلل !!!!
  2. في المرفق :- وحتى لو كانت رقمية ، جربت النتيجة وبدون أخطاء او خلل فيها
  3. فيما لو كانت القيمة المخزنة في جدولك يمثل رقم الفترة من جدولها ( معرف الفترة افترضت انه 1 = الصباحية ، 2 = المسائية بغض النظر عن التسمية )
  4. أنا سأكتفي بما لدي في آخر محاولة ,, في الزر :- 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
  5. طيب ، كفكرة أخرى بتحديد شروط الفلترة أكثر من خلال الاستدعاء ، جرب هذا التعديل :- 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", _ "فترة صباحية", _ "فترة مسائية")
  6. بغض النظر عن الخطأ الذي ذكره أبو جودي ، ومن المؤكد أن السجلات هي للتجربة فقط لا غير .. في الدالة العامة التالية :- 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
  7. وعليكم السلام ورحمة الله وبركاته ... هل المقصود كهذه النتيجة :-
  8. الف لا بأس عليك أستاذنا خليفة . ونسأل الله لك الشفاء العاجل القريب . إن ربك لهو المُجيب .. الله يبارك فيك 💐
  9. المقارنة !!!!!!!! نعم ولو حذفناها تبقى النتيجة للقيم السالبة في الشرط بتلوينها باللون الأحمر
  10. نستطيع استبدال الشرط كالآتي لإظهار القيم السالبة :- InStr([Modah],"-")<> False
  11. مقصدي بوجه ثاني .. InStr([Modah], "-") <> 0 يا آكسيس ، دورلي على علامة "-" في النص الموجود في الحقل [Modah] .. إذا لقيتها ( يعني InStr رجعت رقم ≠ 0 ) "لبسه البشت" = فعل التنسيق الشرطي 😎 وإذا ما لقيتها ( يعني InStr رجعت 0 ) خله عادي … ما له بشت 😐
  12. في المقارنة العددية ؟؟؟؟؟؟ طبعاً لأ !!!
  13. الدالة هنا سترجع رقم موضع أول ظهور للكلمة أو الرمز داخل النص . بحيث إذا لم يتم العثور على القيمة ، ترجع 0 . وإذا تم العثور ، ترجع رقم الحرف الذي تبدأ فيه . كمثال :- InStr("04:10-", "-") => 6 ' لأن السالب هو الحرف السادس بينما :- InStr("04:10", "-") => 0 ' لا يوجد سالب هذا يعني "هل تحتوي القيمة الموجودة في الحقل [Modah] على علامة -" فإذا كان موجود فعلاً = InStr ترجع رقماً (≠ 0) وإذا لم يكن موجوداً = ترجع 0 فالمقارنة <> 0 معناها : إذا وجد السالب أم لا ..
  14. إن سمحت لي بمداخلة .. النقطتين ":" يتم استخدامها للفاصل الزمني في التنسيق hh:mm على سبيل المثال . أما إشارة "-" فهو ما استخدمناه حالياً لاكتشاف السالب . مع العلم أن الشرط لا يهمه وجود ":" بل يبحث فقط عن وجود علامة "-" في أي مكان في النص 😅 ومن هنا نستطيع تعديل الشرط في التنسيق الشرطي ليشمل التلوين القيم السالبة أو القيم التي تساوي 00:00 بهذا التعديل :- InStr([Modah],"-")<>0 Or [Modah]="00:00"
  15. العفو يا صديقي ..
  16. وعليكم السلام ورحمة الله وبركاته .. تستطيع ذلك من خلال ملفك المرفق كالآتي :- في الخلية B5 ( لحساب الأيام ) :- =MOD(B3+B4,30) في الخلية C5 ( لحساب الأشهر ) :- =MOD(C3+C4+QUOTIENT(B3+B4,30),12) في الخلية D5 ( لحساب السنوات ) :- =D3+D4+QUOTIENT(C3+C4+QUOTIENT(B3+B4,30),12) وتستطيع أيضاً عرض التفصيل كاملاً في خلية واحدة . على سبيل المثال . قمت بدمج الخلايا B+C+D = 6 في خلية واحدة ، وأدرجت فيها المعادلة التالية :- =D3+D4+QUOTIENT(C3+C4+QUOTIENT(B3+B4,30),12) & " سنوات, " & MOD(C3+C4+QUOTIENT(B3+B4,30),12) & " أشهر, " & MOD(B3+B4,30) & " أيام" وهذه صورة من النتيجة النهائية :- Number of Serveces.zip
  17. وعليكم السلام ورحمة الله وبركاته .. أخي الفاضل الأمر ان شاء المولى بسيط .. كأحد الأفكار التي تستطيع نقلها الى مشروعك ، انظر للإستعلام Form1 ، وقم باختيار اي بيان تريد .ز طريقة 4.zip
  18. وعليكم السلام ورحمة الله وبركاته .. أخي الكريم من باب أن تجد تفاعلاً واستجابة لطلباتك لاحقاً ، نرجو منك :- أولاً أن يكون العنوان ذات صلة ودلالة على المشكلة . ثانياً الشرح المفصل للمشكلة التي تواجهها . ثالثاً استخدامك لللغة العربية في أسماء الحقول والجداول والنماذج ... إلخ يجعلك تعاني من مشاكل كبيرة وكثيرة فيما بعد . وهذا لن يشجع أحد على التفكير في حل لمشكلتك . رابعاً أن تأخذني برحابة صدرك على ما سلف . وما هو إلا من باب النصيحة .
  19. وعليكم السلام ورحمة الله وبركاته .. معلمي الفاضل ، استخدام كلمة "الوقت" في وصفك هنا ؛ هل هذا دلالة على الفرق بين وقتين كما في الأفكار السابقة ( مواضيع سابقة ) ، وبالتالي نوع البيانات في الحقل = نصي أم تاريخ و وقت 🤔 أم ماذا ؟؟ وعلى الأرجح هو من نوع نص ( لا يمكن أن تكون قيمة حقل نوعه تاريخ و وقت = قيمة سالبة ) ؛ فقط للتأكيد !! وعليه فإن أفضل فكرة خطرت لي هي تحويل الوقت الى رقم ، كمثال القيم الموجبة بالدقائق= 250 ( لـ 04:10 ) القيم السالبة بالدقائق = -250 ( لـ 04:10- ) وفي التالي فكرة بسيطة في استعلام لجلب القيم السالبة للوقت :- SELECT * FROM Table1 WHERE (((IIf(Right([Modah],1)='-',-1,1)*(Val(Left([Modah],2))*60+Val(Mid([Modah],4,2))))<0)); TimeMin.accdb
  20. اهاااا ، وهو بالفعل ما قمت به ولكن بطريقة أخرى
  21. أيعقل أن يكون اسم مربع النص هو السبب 😅 !!!!
  22. بدايةً الخطأ ان اسم مربع النص ID وليس الكود !! ثانياً لازم تمرر مسار واسم النموذج الفرعي اللي موجود فيه الشرط ID . وفي الدالة :- Public Function f11(الكود As Integer) DoCmd.OpenForm "Customer Details", , , "[الكود] = " & الكود End Function لا يتم تمرير الشرط أو المعيار للفلترة . لذا توجهت الى فكرة غريبة نوعاً ما بحيث من خلال الكود يتم البحث عن أول نموذج فرعي يحتوي مربع النص ID كشرط ومعيار للفلترة وتمريره الى جملة فتح النموذج على السجل المحدد . لتصبح الدالة مع مساعد بسيط :- '---------- ( ID تم التعديل هنا بحيث يتم البحث عن أول نموذج فرعي يحتوي مربع النص ) ---------- Public Function f11() On Error GoTo ErrHandler Dim frmMain As Form Dim ctrl As Control Dim frmSub As Form Dim val As Variant Set frmMain = Screen.ActiveForm For Each ctrl In frmMain.Controls If ctrl.ControlType = acSubform Then Set frmSub = ctrl.Form If HasControl(frmSub, "ID") Then val = frmSub.Controls("ID").Value DoCmd.OpenForm "Customer Details", , , "[الكود] = " & val Exit Function End If End If Next ctrl MsgBox ". 'ID' لم يتم العثور على نموذج فرعي يحتوي على الشرط", vbExclamation + vbMsgBoxRight, "" Exit Function ErrHandler: MsgBox "حدث خطأ: " & Err.Description, vbCritical + vbMsgBoxRight, "" End Function Private Function HasControl(frm As Form, ctrlName As String) As Boolean On Error Resume Next HasControl = Not frm.Controls(ctrlName) Is Nothing End Function '---------- ( نهاية التعديل ) ---------- ملفك بعد التعديل :- date-2025 - Copy (4).zip
  23. خلاااااص !! دلوقتي ارتحت ، وأقدر أنسحب بهوووووووووء وانام مرتاح البال والضمير
×
×
  • اضف...

Important Information