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

كل الانشطه

هذه الصفحة تحدث تلقائياً

  1. الساعة الأخيرة
  2. اشارة الى الموضوع وكذلك الموضوع التالى وبناء على طلب احد الاخوة الافاضل بعمل التعديل على قاعدة بيانات الخاصة بالمعلمين لطريقة برايل واشارة سريعة للطريقة للتعريف بالقاعدة وبالطريقة المعلم المبصر هو من سوف يستخدم هذا التطبيق فى التعليم وهو من سوف ينقر ازرار الحروف والمتلقون للعلم هم من سوف يستمع لحركة كل حرف ترجمة الحرف هذه هى طريقة برايل تعتمد الطريقة على ان كل الحروف تتكون من خلية من ست نقاط وعدد النقاط بترتيب معين داخل الخلية يدل على كل حرف وهذا شكل الخلية وتتم قراءة النقاط البارزة/المحفورة من خلال معرفة رقم موضعها طبقا للخلية الاتية من خلال التحسس باللمس من إخواننا الغير مبصرين وجدول برايل اجمالا يعنى عندما يتحسس غير المبصر ويجد النقطة البارزة/المحفورة طبقا للترتيب فى الخلية الاتية رقم 1 اى ان هذا حرف الاف وهندما يتحثث النقاط البارزة/المحفورة ويجدها حسب موضعها 2 ، 3 ، 4 ، 5 فهذا حرف التاء كان الملطلوب منى تعديل النموذج ليمثل محاكاة حقيقية لشكل الخلية ومواضع الحروف عليها عند النقر على كل حرف وبحمد الله وبفضله تم عمل ذلك وهذه صورة من داخل النموذج Braille V.3.zip
  3. الرجاء إرفاق ملف اكسل يتم الشرح فيه فهذا اسهل في فهم المطلوب
  4. فى دالة vlookup عمود البداية ثابت ويمكن التحكم فى تغيير عمود النتيجة طلبى هو اريد عمود البداية يكون متغير وياخذ قيمته من اى خليه اخرى اى مدى ديناميكى ولكن للبداية والنتيجة ولكم جزيل الشكر
  5. Today
  6. شكرا الف شكرا يا غالى تسلم لمساعدك و جزاك الله كل خير
  7. ذهت أفكارنا في تشعبات كثيرة فعلاً ، ولكن يمكن نقصان المعلومات كان أحد الأسباب 😅 على العموم أعتقد ذهابك إلك مقترحك أنسب حل يلبي مطلبك بشكل وافي 😇
  8. إن شاء الله شفاءا عاجلا لايغادر سقما
  9. السلام عليكم أخي @منتصر الانسي شكرا على الرد والاهتمام بعد تجربة المثال وتغيير تنسيق المعدل العام إلى #,00 مزالت نفس المشكلة التي كانت تظهر في جميع الاقترحات السابقة ( الصورة المرفقة) إلى غاية اعتماد فكرة الأخ @Foksh واعتماد دالة Replace التي تعمل بصورة جيدة وبدون مشاكل .
  10. أتتمنى فقط أن تكون راض عن الحل و وجدت ضالتك هذا أفصى ما استطعت تقديمه بل كل الشكر لكم استاذى الجليل و معلمى القدير و والدى الحبيب حياكم الله وبياكم وهذه طريقة أخرى بدون الاعتماد على دوال :DLookup Private Sub cmdSave_Click() Dim lngMinutesTotal As Long Dim datWorkTotal As Date Dim rst As DAO.Recordset On Error GoTo Err_Handler ' ' --- حساب مجموع الدقائق من كافة السجلات التي لا تمثل المجموع (يستثني id = 1 و id = 4) Set rst = CurrentDb.OpenRecordset("SELECT countWorkHours FROM tbl_Ftrat WHERE id NOT IN (1, 4) AND countWorkHours Is Not Null", dbOpenSnapshot) Do While Not rst.EOF lngMinutesTotal = lngMinutesTotal + DateDiff("n", #00:00#, rst!countWorkHours) rst.MoveNext Loop rst.Close Set rst = Nothing ' ' --- تحويل الدقائق إلى نسبة من اليوم (1 يوم = 1440 دقيقة) datWorkTotal = lngMinutesTotal / 1440 ' ' --- تحديث السجل الذي يحتوي على المجموع (id = 1) CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(datWorkTotal, "hh:nn") & "# WHERE id = 1", dbFailOnError ' ' --- تحديث الفورم Me.countWorkHours.Requery Me.Repaint Exit Sub Err_Handler: MsgBox "حدث خطأ: " & Err.Description, vbCritical, "خطأ" Resume Next End Sub ------------------------------------------------------------------------------------ وده تطوير كود الوحده النمطية بشكل كامل ليشمل الساعات و الدقائق و الثوان Public Function HoursMinutesSeconds(vntInterval As Variant) As String Dim lngTotalSeconds As Long Dim lngHours As Long Dim lngMinutes As Long Dim lngSeconds As Long If IsNull(vntInterval) Then Exit Function ' ' --- تحويل النسبة إلى عدد الثواني lngTotalSeconds = Int(CSng(vntInterval * 24 * 60 * 60)) ' ' --- استخراج الساعات، الدقائق، الثواني lngHours = lngTotalSeconds \ 3600 lngMinutes = (lngTotalSeconds Mod 3600) \ 60 lngSeconds = lngTotalSeconds Mod 60 ' ' --- النتيجة بصيغة "hh:mm:ss" HoursMinutesSeconds = lngHours & ":" & Format(lngMinutes, "00") & ":" & Format(lngSeconds, "00") End Function الان معك كل الخيارات لتختر ما يناسبك ويلبى رغباتك
  11. تحديث واستكمال 1- تصحيح وجعل المجموعات مع مؤشر التنقل 2- تصحيح الفلترة وتصفية 3- يجب تفريق الرامات عند اغلاق النافذة تم تصحيح والاضافة عند اغلاق مع تحسينات الخفيفة ☕ تحميل المرفق https://www.mediafire.com/file/ygbvh7nazz2oqpz/V_3_7_Speed_Read_db_Caption_Filter.rar/file
  12. دالة حساب الوقت اللى كانت فى الوحدة النمطية فى المرفق الاول Public Function HoursAndMinutes(interval As Variant) As String Dim totalMinutes As Long, totalseconds As Long Dim hours As Long, minutes As Long, seconds As Long If IsNull(interval) = True Then Exit Function hours = Int(CSng(interval * 24)) totalMinutes = Int(CSng(interval * 1440)) minutes = totalMinutes Mod 60 HoursAndMinutes = hours & ":" & minutes End Function تقوم بحساب الساعات بشكل منفصل عن الدقائق باستخدام interval * 24 ثم تحسب الدقائق من إجمالي الدقائق وهذا قد يسبب تعارض لا تستخدم Format(minutes, "00") بالتالي قد تظهر النتيجة مثل 5:3 بدلا من 5:03 وجود المتغير totalseconds وseconds بدون استخدام فعلي (زيادة غير مفيدة) منطق مزدوج: سطر يحسب الساعات من معامل معين وسطر يحسب الدقائق من معامل آخر — وهذا قد يسبب أخطاء دقيقة في الحالات الطرفية -------- الدالة الأخيرة بعض التطوير '' ========================================================== '' الدالة: HoursAndMinutes '' الوصف: تحويل قيمة وقت مخزنة كنسبة من اليوم (Date/Time) إلى نص يحتوي على عدد الساعات والدقائق '' المعامل: interval - متغير يمثل مدة زمنية كنسبة من اليوم (مثلاً 0.5 = 12 ساعة) '' الناتج: نص بصيغة "ساعات:دقائق" '' ========================================================== Public Function HoursAndMinutes(interval As Variant) As String Dim lngTotalMinutes As Long Dim lngHours As Long Dim lngMinutes As Long If IsNull(interval) Then Exit Function lngTotalMinutes = Int(CSng(interval * 24 * 60)) ' تحويل إلى عدد الدقائق lngHours = lngTotalMinutes \ 60 ' الساعات الكاملة lngMinutes = lngTotalMinutes Mod 60 ' باقي الدقائق HoursAndMinutes = lngHours & ":" & Format(lngMinutes, "00") ' تنسيق بدقائق صفرية عند الحاجة End Function تقوم بحساب إجمالي الدقائق أولا ثم تفصل منها الساعات والدقائق بدقة تستخدم Format(..., "00") لضمان ظهور الدقائق بصيغة مزدوجة (مثل: 5 → 05) صياغتها أوضح ولا تفقد الدقائق عند الحساب دقيقة في كل الحالات لو أردت دعم الثواني بنفس الأسلوب أقدر أعدل لك الدالة فقط أخبرنى
  13. اذا هذا الحل بالكود التالى لزر الامر Private Sub cmdSave_Click() Dim lngMinutesMorning As Long Dim lngMinutesEvening As Long Dim lngTotalMinutes As Long Dim datResult As Date '' === احسب عدد الدقائق للفترتين lngMinutesMorning = DateDiff("n", #00:00#, DLookup("countWorkHours", "tbl_Ftrat", "id=2")) lngMinutesEvening = DateDiff("n", #00:00#, DLookup("countWorkHours", "tbl_Ftrat", "id=3")) '' === إجمالي عدد الدقائق lngTotalMinutes = lngMinutesMorning + lngMinutesEvening '' === تحويله إلى نسبة يوم Date/Time datResult = lngTotalMinutes / 1440 '' === تحديث السجل للمعرف رقم 1 CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(datResult, "hh:nn") & "# WHERE id = 1", dbFailOnError countWorkHours.Requery Me.Repaint End Sub وهذا تطوير كود الوحدة النمطية '' ========================================================== '' الدالة: HoursAndMinutes '' الوصف: تحويل قيمة وقت مخزنة كنسبة من اليوم (Date/Time) إلى نص يحتوي على عدد الساعات والدقائق '' المعامل: interval - متغير يمثل مدة زمنية كنسبة من اليوم (مثلاً 0.5 = 12 ساعة) '' الناتج: نص بصيغة "ساعات:دقائق" '' ========================================================== Public Function HoursAndMinutes(interval As Variant) As String Dim lngTotalMinutes As Long Dim lngHours As Long Dim lngMinutes As Long If IsNull(interval) Then Exit Function lngTotalMinutes = Int(CSng(interval * 24 * 60)) ' تحويل إلى عدد الدقائق lngHours = lngTotalMinutes \ 60 ' الساعات الكاملة lngMinutes = lngTotalMinutes Mod 60 ' باقي الدقائق HoursAndMinutes = lngHours & ":" & Format(lngMinutes, "00") ' تنسيق بدقائق صفرية عند الحاجة End Function مرفق التجربة Database21.accdb
  14. اللي يدخل مع مبرمجين في : ( لو ) و ( إذا ) حيودوه في ستين سكة .. الله يعينه 🤣 صحيح انتم شعبتوها .. سكك وطرق المسألة كلها سجلات ثابتة كل سجل له آي دي خاص ثابت ثبات الى الممات هذه السجلات غير قابلة للحذف .. صباح / مساء / دوام كامل / دوام خاص المتغير فيها هو حقول الوقت فقط .. فيمكن تغيير وقت الدخول او الخروج حسب الحاجة ، وبناء عليه سيتغير عدد الساعات هذا كل شي .
  15. ما هو انا مش فاهم اعتقد المفروض فى جدول مساعد خدمى المفروض يكون به اسماء الفترات والرقم المعرف لكل فترة وكان السبب فى الاتجاه الى التعامل مع المعرف هو رد الاستاذ ابو خليل الموضوع محتاج لفهم جيد فهم السؤال شطر الجواب
  16. انظر الاستعلام SALESQT قمت بحذف الحقلين وممكن تستخدم عبارة تعبير Expression كما في الصورة
  17. هنا ، ممكن يكون أكتر من سيناريو للفكرة .. هل الفترات ستكون مقرونة بتاريخ مثلاً لكل شهر ( متغيرة في حال وجود أشهر مثل شهر رمضان على سبيل المثال انه ممكن يكون وقت العمل أقصر أو متأخر عن الأشهر العادية ... إلخ من سيناريوهات ؟؟؟) ولكن إن كان يحتوي أكثر من سجل فحتماً لازم يكون هناك شرط إضافي . طبعاً كل دي احتمالات قد تكون وهمية بناءً على فكرة استاذي ابو خليل هنا :- لأنه هنا هو حدد الـ ID الخاص بالسجل وليس الخاص بالفترة . على أساس انها ممكن تكون سجلات وحيدة ويتم تحديثها حسب الحاجة .
  18. والان أستاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @ابوخليل انا محتاج بس اعرف شوية حجات علشان اشوف اظبط الكود ازاى 1- النموذج ده ممكن يكون فيه سجلات كتير؟؟ 2- هل تريد استثناء اى سجل منهم عند عملية الحساب ؟؟ 3- هل عملية الحساب هذه لابد ان تكون مقترنة بشرط او عدة شروط ؟؟ طبعا لو فيه سجلات كتير ممكن تزيد يبقى ما ينفع نعتمد على الحقل id نهائيا وحضرتك مش عاوز تعتمد على اسماء الفترات لان ده الكود الحالى اللى فكرت فيه Private Sub cmdSave_Click() Dim rstFtrat As DAO.Recordset Dim lngTotalMinutes As Long Dim lngCurrentMinutes As Long Dim datResult As Date '' === فتح كل السجلات باستثناء السجل المجمّع (ID=1) Set rstFtrat = CurrentDb.OpenRecordset("SELECT countWorkHours FROM tbl_Ftrat WHERE ID <> 1", dbOpenSnapshot) '' === المرور على كل الفترات لحساب مجموع الدقائق Do While Not rstFtrat.EOF If Not IsNull(rstFtrat!countWorkHours) Then lngCurrentMinutes = DateDiff("n", #00:00#, rstFtrat!countWorkHours) lngTotalMinutes = lngTotalMinutes + lngCurrentMinutes End If rstFtrat.MoveNext Loop rstFtrat.Close Set rstFtrat = Nothing '' === تحويل مجموع الدقائق إلى نسبة يوم datResult = lngTotalMinutes / 1440 '' === تحديث السجل المجمّع (ID = 1) CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(datResult, "hh:nn") & "# WHERE ID = 1", dbFailOnError Me.Repaint End Sub الان سوف يقوم بعمل لوب على كل الجدول لإجراء عملية الجمع انا لو فهمت الية العمل اقدر اتحكم فى العملية
  19. على فكرة ، ممكن يكون في لبس في فهم ftraName . انا ربط الموضوع انه ممكن يكون اسم الفترات في جدول منفصل وان 1 و 2 دونل معرفات الفترات في جدول أسماء الفترات ، وليس الحقل ID اللي في الجدول الحالي tbl_Ftrat .. يعني انا اشتغلت على ان الفترات ليها جدول منفصل وان القيمة ممكن تكون معرف الفترة بناءً على الجملة دي فهمت قصدي !؟
  20. بلاش انا اجيب لك الاسكرين شوت من مرفقك انت عرفت هو شغال ليه لانك غيرت اسم الفترات يا افندم
  21. هو علشان اكون فاهم هو النموذج ده ممكن يكون فيه سجلات كتير؟؟ وهل ممكن تريد استثناء اى سجل منهم عند عملية الحساب ؟؟ هل عملية الحساب هذه لابد ان تكون مقترنة بشرط او عدة شروط ؟؟ ممكن اسكرين شوت من النموذج يا فؤش بعد تجربتتك ؟
  22. ولو عاوز أريحك برضو .. جرب ده برضو :- 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
  23. ولكن ولكن ولكن خلينى اقول وجهة نظرى برضو الكود الأول: Private Sub cmdSave_Click() Dim lngMinutesMorning As Long Dim lngMinutesEvening As Long Dim lngTotalMinutes As Long Dim datResult As Date '' === احسب عدد الدقائق للفترتين lngMinutesMorning = DateDiff("n", #00:00#, DLookup("countWorkHours", "tbl_Ftrat", "id=2")) lngMinutesEvening = DateDiff("n", #00:00#, DLookup("countWorkHours", "tbl_Ftrat", "id=3")) '' === إجمالي عدد الدقائق lngTotalMinutes = lngMinutesMorning + lngMinutesEvening '' === تحويله إلى نسبة يوم Date/Time datResult = lngTotalMinutes / 1440 '' === تحديث السجل للمعرف رقم 1 CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(datResult, "hh:nn") & "# WHERE id = 1", dbFailOnError countWorkHours.Requery Me.Repaint End Sub الكود الثانى: Private Sub cmdSave_Click() Dim dblTotalMinutes As Double ' ' === جمع ساعات العمل للفترتين (المعرف 2 و 3) dblTotalMinutes = DSum("countWorkHours", "tbl_Ftrat", "id IN (2, 3)") ' ' === تحديث السجل للمعرف 1 بالقيمة المجمعة CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(dblTotalMinutes, "hh:nn") & "# WHERE id = 1", dbFailOnError Me.Refresh End Sub الكود الأول أكثر دقة واحترافية لأنه: يتعامل مع القيم كـ وقت Time فعلي (وليس كنسبة أو رقم عائم فقط) يحوّل القيم يدويا من وقت إلى دقائق ثم يعيدها كنسبة من اليوم (وهذا هو التنسيق الفعلي المخزن في حقول Date/Time عند تمثيل مدة) يستخدم DateDiff("n", #00:00#, ...)، ما يضمن أنك لا تتأثر بأي أخطاء ناتجة عن صيغ تخزين الوقت الداخلية في Access (زي ما ممكن يحصل عند استخدام DSum على Date/Time) يضمن أن القيمة النهائية محسوبة بدقة ويتم تحويلها إلى تنسيق "hh:nn" صريح مع تمريرها باستخدام علامات # في جملة UPDATE وهو المطلوب تماما لـ Date/Time داخل SQL-Access الكود الثاني أقل ملاءمة لأنه: يجمع وقتين باستخدام DSum مباشرة وده مش مضمون 100% DSum بيجمع كأنك بتجمع تواريخ/أوقات كنسب من اليوم وليس بالضرورة عدد دقائق فعلي ممكن القيم تطلع غير دقيقة إذا كانت محفوظة بصيغة غير متناسقة
  24. ما رأيكم بهذه الحيلة على اعتبار ان النموذج تحكم ومعرفات السجلات لن تتغير ابدا .. ولو تم اضافة سجلات جديدة كفترات اضافية لا مشكلة .. Dim i, ii As Date Me.Recordset.FindFirst "id =2 " i = countWorkHours Me.Recordset.FindFirst "id =3 " ii = countWorkHours Me.Recordset.FindFirst "id =1 " countWorkHours = i + ii Database2.rar
  25. يا صاحبي ، شوف :- totalminutes = Nz(DSum("countWorkHours", "tbl_Ftrat", "ftraName IN ('1','2') AND ID > 1"), 0) انا حددتله الشرط في الحقل countWorkHours ، اللي عاوز اجمع قيمه اللي هو : ftraName والشرط كان IN ('1','2') وشرط السجل اللي عاوز أحدثه : WHERE ID = 1" تبقى فين امشكلة ؟؟ جرب عدل القيم أو نوع الحقل واحكيلي الخلل !!!!
  26. اصلا المفروض تكون كده يا فؤش "tbl_Ftrat", "id IN (2, 3)" لحقل id مش حقل : ftraName والله يا فؤش بالمنطق انا مش عارف ليه جاب النتيجه صح لكن المفروض يكون كده طالما هنعتمد على المعرف Private Sub cmdSave_Click() Dim dblTotalMinutes As Double ' ' === جمع ساعات العمل للفترتين (المعرف 2 و 3) dblTotalMinutes = DSum("countWorkHours", "tbl_Ftrat", "id IN (2, 3)") ' ' === تحديث السجل للمعرف 1 بالقيمة المجمعة CurrentDb.Execute "UPDATE tbl_Ftrat SET countWorkHours = #" & Format(dblTotalMinutes, "hh:nn") & "# WHERE id = 1", dbFailOnError Me.Refresh End Sub
  1. أظهر المزيد
×
×
  • اضف...

Important Information