بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
3856 -
تاريخ الانضمام
-
Days Won
158
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
في النموذج المستمر ؛ اضافة قيمة الى حقل بناء على قيمتين في سجلات أخرى
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
بغض النظر عن الخطأ الذي ذكره أبو جودي ، ومن المؤكد أن السجلات هي للتجربة فقط لا غير .. في الدالة العامة التالية :- 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 -
في النموذج المستمر ؛ اضافة قيمة الى حقل بناء على قيمتين في سجلات أخرى
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
-
💫 تألق جديد.. @Foksh الأخ فادي ينضم لقائمة مشرفي أوفيسنا 🎉
Foksh replied to Moosak's topic in قسم الأكسيس Access
الف لا بأس عليك أستاذنا خليفة . ونسأل الله لك الشفاء العاجل القريب . إن ربك لهو المُجيب .. الله يبارك فيك 💐 -
المقارنة !!!!!!!! نعم ولو حذفناها تبقى النتيجة للقيم السالبة في الشرط بتلوينها باللون الأحمر
-
نستطيع استبدال الشرط كالآتي لإظهار القيم السالبة :- InStr([Modah],"-")<> False
-
مقصدي بوجه ثاني .. InStr([Modah], "-") <> 0 يا آكسيس ، دورلي على علامة "-" في النص الموجود في الحقل [Modah] .. إذا لقيتها ( يعني InStr رجعت رقم ≠ 0 ) "لبسه البشت" = فعل التنسيق الشرطي 😎 وإذا ما لقيتها ( يعني InStr رجعت 0 ) خله عادي … ما له بشت 😐
-
في المقارنة العددية ؟؟؟؟؟؟ طبعاً لأ !!!
-
الدالة هنا سترجع رقم موضع أول ظهور للكلمة أو الرمز داخل النص . بحيث إذا لم يتم العثور على القيمة ، ترجع 0 . وإذا تم العثور ، ترجع رقم الحرف الذي تبدأ فيه . كمثال :- InStr("04:10-", "-") => 6 ' لأن السالب هو الحرف السادس بينما :- InStr("04:10", "-") => 0 ' لا يوجد سالب هذا يعني "هل تحتوي القيمة الموجودة في الحقل [Modah] على علامة -" فإذا كان موجود فعلاً = InStr ترجع رقماً (≠ 0) وإذا لم يكن موجوداً = ترجع 0 فالمقارنة <> 0 معناها : إذا وجد السالب أم لا ..
-
إن سمحت لي بمداخلة .. النقطتين ":" يتم استخدامها للفاصل الزمني في التنسيق hh:mm على سبيل المثال . أما إشارة "-" فهو ما استخدمناه حالياً لاكتشاف السالب . مع العلم أن الشرط لا يهمه وجود ":" بل يبحث فقط عن وجود علامة "-" في أي مكان في النص 😅 ومن هنا نستطيع تعديل الشرط في التنسيق الشرطي ليشمل التلوين القيم السالبة أو القيم التي تساوي 00:00 بهذا التعديل :- InStr([Modah],"-")<>0 Or [Modah]="00:00"
-
العفو يا صديقي ..
-
وعليكم السلام ورحمة الله وبركاته .. تستطيع ذلك من خلال ملفك المرفق كالآتي :- في الخلية 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
-
وعليكم السلام ورحمة الله وبركاته .. أخي الفاضل الأمر ان شاء المولى بسيط .. كأحد الأفكار التي تستطيع نقلها الى مشروعك ، انظر للإستعلام Form1 ، وقم باختيار اي بيان تريد .ز طريقة 4.zip
-
وعليكم السلام ورحمة الله وبركاته .. أخي الكريم من باب أن تجد تفاعلاً واستجابة لطلباتك لاحقاً ، نرجو منك :- أولاً أن يكون العنوان ذات صلة ودلالة على المشكلة . ثانياً الشرح المفصل للمشكلة التي تواجهها . ثالثاً استخدامك لللغة العربية في أسماء الحقول والجداول والنماذج ... إلخ يجعلك تعاني من مشاكل كبيرة وكثيرة فيما بعد . وهذا لن يشجع أحد على التفكير في حل لمشكلتك . رابعاً أن تأخذني برحابة صدرك على ما سلف . وما هو إلا من باب النصيحة .
-
وعليكم السلام ورحمة الله وبركاته .. معلمي الفاضل ، استخدام كلمة "الوقت" في وصفك هنا ؛ هل هذا دلالة على الفرق بين وقتين كما في الأفكار السابقة ( مواضيع سابقة ) ، وبالتالي نوع البيانات في الحقل = نصي أم تاريخ و وقت 🤔 أم ماذا ؟؟ وعلى الأرجح هو من نوع نص ( لا يمكن أن تكون قيمة حقل نوعه تاريخ و وقت = قيمة سالبة ) ؛ فقط للتأكيد !! وعليه فإن أفضل فكرة خطرت لي هي تحويل الوقت الى رقم ، كمثال القيم الموجبة بالدقائق= 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
-
-
معرفة ترتيب كل طالب في نموذج منفرد عن طريق القيام بعملية الفلترة
Foksh replied to moho58's topic in قسم الأكسيس Access
اهاااا ، وهو بالفعل ما قمت به ولكن بطريقة أخرى -
معرفة ترتيب كل طالب في نموذج منفرد عن طريق القيام بعملية الفلترة
Foksh replied to moho58's topic in قسم الأكسيس Access
أيعقل أن يكون اسم مربع النص هو السبب 😅 !!!! -
محتاج اعرف الخطأ فين - شريط القوائم المختصرة
Foksh replied to مومن الشيمى's topic in قسم الأكسيس Access
بدايةً الخطأ ان اسم مربع النص 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 -
معرفة ترتيب كل طالب في نموذج منفرد عن طريق القيام بعملية الفلترة
Foksh replied to moho58's topic in قسم الأكسيس Access
الحمد لله أخي الكريم .. -
مهو برضو ممكن يكون الحل كالآتي :- Public Function FokshDates(startD As Date, endD As Date) As String Dim d As Date, s As String For d = startD To endD s = s & Format(d, "yyyy-mm-dd") & "," Next If Len(s) > 0 Then s = Left(s, Len(s) - 1) FokshDates = s End Function والإستعلام الصغير ده :- SELECT tbl1.id, tbl1.user_id, tbl1.startA, tbl1.endA, FokshDates([startA],[endA]) AS التواريخ FROM tbl1; والنتيجة :- Query2 id المعرف بداية نهاية التواريخ 1 11 2025-07-02 2025-07-05 2025-07-02,2025-07-03,2025-07-04,2025-07-05 2 22 2025-07-04 2025-07-04 2025-07-04 مجرد تفكير بصوتك ، لأنه بجد فاضل تكة هي بسيطة ، وانت عارفني ما بحبش أفوت في تفاصيل قد تكون بعيدة ,,
-
وخطر لي حيلة يمكن تكون غريبة نوعاً ما .. وهي كما في الاستعلام التالي :- SELECT tbl1.id, tbl1.user_id, tbl1.startA, tbl1.endA, IIf(DateDiff("d",[startA],[endA])>=0,Format([startA],"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=1,"," & Format([startA]+1,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=2,"," & Format([startA]+2,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=3,"," & Format([startA]+3,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=4,"," & Format([startA]+4,"yyyy-mm-dd"),"") AS التواريخ FROM tbl1; والنتيجة :- Query3 id المعرف بداية نهاية التواريخ 1 11 2025-07-02 2025-07-05 2025-07-02,2025-07-03,2025-07-04,2025-07-05 2 22 2025-07-04 2025-07-04 2025-07-04 طبعاً هنا اذا كان الفرق بين التاريخين كبير فسيكون الاستعلام كبيراً نوعاً ما .. لكني وددت المشاركة 😅
-
معرفة ترتيب كل طالب في نموذج منفرد عن طريق القيام بعملية الفلترة
Foksh replied to moho58's topic in قسم الأكسيس Access
رغم أنني لن ألحظ الخطأ ولم أواجهه في أي من أجهزتي ( كما رأيت سابقاً ) ، إلا أنني سأحاول بعد تجربتي بهذا التعديل :- Private Sub Form_Current() On Error GoTo ErrorHandler If Not IsNull(Me.ID) And Not IsNull(Me.mouadel_3am) Then Dim strSQL As String Dim rs As DAO.Recordset strSQL = "SELECT COUNT(*) FROM (" & _ "SELECT m.mouadel_3am " & _ "FROM info_stagiere i " & _ "INNER JOIN modul m ON i.ID = m.id " & _ "WHERE i.annee='" & Replace([Forms]![frm_examen_fin_formation]![annet], "'", "''") & "' " & _ "AND i.grade='" & Replace([Forms]![frm_examen_fin_formation]![grade1], "'", "''") & "' " & _ "AND i.wilaya='" & Replace([Forms]![frm_examen_fin_formation]![wilaya1], "'", "''") & "'" & _ ") AS T WHERE mouadel_3am >= " & Replace(Me.mouadel_3am, ",", ".") Set rs = CurrentDb.OpenRecordset(strSQL) If Not rs.EOF Then Me.نص73 = rs.Fields(0).Value Else Me.نص73 = Null End If rs.Close Set rs = Nothing Else Me.نص73 = Null End If Exit Sub ErrorHandler: MsgBox "حدث خطأ في حساب الترتيب", vbExclamation + vbMsgBoxRight, "خطأ" Me.نص73 = Null If Not rs Is Nothing Then rs.Close Set rs = Nothing End If End Sub الهدف هو إلمام الحدث بالتأكد من أن mouadel_3am ليس NULL . وحاولت استخدام Replace لتحويل الفاصلة إلى نقطة في الأعداد والقيم الرقمية الكسرية . وإذا استمرت المشكلة لديك ، تحقق من إعدادات الإقليمية (Regional Settings) في الويندوز التي قد تؤثر على تنسيق الأرقام 🤔