-
Posts
7250 -
تاريخ الانضمام
-
Days Won
214
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابو جودي
-
على العموم بوجه عام فى كود فتح التقرير من خلا زر امر استخدم Dim strRptName As String Dim strMsgNoData As String Dim strMsgConfirm As String '' --- اسم التقرير strRptName = "" '' --- الرسالة إذا لم توجد بيانات strMsgNoData = "التقرير فارغ." '' --- رسالة التأكيد strMsgConfirm = "هل تريد طباعة هذا التقرير؟" '' === فتح التقرير بشكل غير ظاهر للمستخدم (يتم عرضه في الخلفية للتحقق) === DoCmd.OpenReport strRptName, acViewPreview, , , acHidden '' === التحقق من وجود بيانات === If Reports(strRptName).HasData Then '' --- توجد بيانات، نسأل المستخدم If MsgBox(strMsgConfirm, vbYesNo + vbQuestion + vbMsgBoxRtlReading + vbMsgBoxRight, "تأكيد الطباعة") = vbNo Then DoCmd.Close acReport, strRptName, acSaveNo Else '' --- إظهار التقرير لأنه كان مخفي DoCmd.SelectObject acReport, strRptName, True End If Else '' --- لا توجد بيانات، نغلق التقرير ونعرض رسالة DoCmd.Close acReport, strRptName, acSaveNo MsgBox strMsgNoData, vbExclamation + vbMsgBoxRtlReading + vbMsgBoxRight, "تنبيه" End If Exit Sub
-
الموضوع ده قبل الرد لازم نكون عارفين ايه مصدر بيانات التقرير وهل فيه فرز او تصفيه بتتم واللا لاء يعنى ضع مرفقك بالحالة اللى انت عاوزها بالظبط
-
لا لا لا فى فرق بين ماشي معاه وفرق بين بعد ما أكود اطلب منه يكتب لى التعليقات فرق كبيــــــــــــر جدا جدا
- 11 replies
-
- برايل
- شخابيط وافكار
- (و4 أكثر)
-
في معظم نسخ ويندوز الحديثة وخاصة 64 بت + الوفيس باللغة العربية نعم vbMsgBoxRtlReading غالبا يفرض تلقائيا المحاذاة لليمين بشكل تلقائي لكن في بعض النسخ (خاصة الإنجليزية 32 بت أو البيئات غير المهيأة للعربية) قد لا يفرض تلقائيا المحاذاة لليمين بشكل تلقائي بل يظهر النص محاذى لليسار رغم أن اتجاهه RTL تمام يا برنس الجيل خليك انت ماشى ورا شات جى بى تى بتاعك ده وربنا دا غبى وفى الاحر انت هتزعل وتجيب ناس معاك تزعل بسببه ---------------------------- انا مش مقدم شرح لكود ولو جزئية من فكرة أنا قدمت قاعدة متكاملة تعمل كما هى ... فمشمشطلتى بقه انك عاوز تلعب ولكن حاضر قلت لك هبهرك ---------------------------- والله انا ماليش دعوة بنظام الصوت ولا انا اللى مسجله هو جالى كده من اول مشاركة اشارت ليها مش عاجبك نظام الصوت يا عسل ؟ اشترى لك مايك وسجل بنفسك وبصوتك وعلى هواك اعمل النظام اللى يعجبك أو روح لاخوك @Moosak يسجل لك بصوتة الكروان ---------------------------- فى أول اصدار صممته كنت اعتمد عليه بس فى التحديث الاخير ولا له لازمة بس انا نسيت ازالة التاجات من الازرار زهايمر بئه بعيد عنك انتظر وسترى العجب العجاب
- 11 replies
-
- 1
-
-
- برايل
- شخابيط وافكار
- (و4 أكثر)
-
ما هوا نا مكتش عامل أزرار أخرى اساسا بس من عيونى الاتنين يا عمو فؤش والله لأبهرك .... انتظر
- 11 replies
-
- 1
-
-
- برايل
- شخابيط وافكار
- (و4 أكثر)
-
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
مثل ما بينحكى عنا بالمصرى بيقولوا " الجمل طلع النخله " ادى الجمل المرفق ده مطلوب منك انت تطلعه النخله زى ما بتحكى وتمنع الوميض يا بطل ولا تزعل نفسك صفحة رئيسية مطورة - النموذج السادس.rar -
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
بمناسبة موضوع الارتعاش والاهتزاز اللى @hanan_ms دائم الكلام عنه كل شويه اللى بيعتمد على خاصية Double Buffering أو Buffering لتقليل الوميض باستخدام WS_EX_COMPOSITED غير فعال وبيعفرت التطبيق هذا للتنويه فقط من الاخـــــــــر اكسس ليس مصمم ليكون بيئة رسوميات عالية الأداء نماذج اكسس ليست مهيأة لتحديثات واجهة المستخدم السريعة مثل Windows Forms لذلك سوف تبقى هذه مشكلة أزلية الوميض (Flickering) والارتعاش (Shaking or Jittering) والاكسس اصدقاء لن يتخلى احدهم عن الاخر -
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
ادخل على الصورتين فى تبويب الاحداث غير كلمة [إجراء حدث] فى الحدث On Mouse Move فى الصورتين لـ [Event Procedure] انا مش عارف ليه المشكلة الغريبة دى بصراحة -
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
-
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
زبون عسل الزبون ده حبيبى -
لما تكون زهقان وداخل تشوف صحابك بيعملوا ايه فى المنتدى
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
وبكده الحمد لله انا ضمنت ان خلاص مبقاش فاضل تكـــه كلنا وصلنا لاخر السكـــــــــــــــــه -
وانا داخل ادور ورا @Moosak , @Foksh لا تعليق .... eye.accdb
-
اشارة الى الموضوع وكذلك الموضوع التالى وبناء على طلب احد الاخوة الافاضل بعمل التعديل على قاعدة بيانات الخاصة بالمعلمين لطريقة برايل واشارة سريعة للطريقة للتعريف بالقاعدة وبالطريقة المعلم المبصر هو من سوف يستخدم هذا التطبيق فى التعليم وهو من سوف ينقر ازرار الحروف والمتلقون للعلم هم من سوف يستمع لحركة كل حرف ترجمة الحرف هذه هى طريقة برايل تعتمد الطريقة على ان كل الحروف تتكون من خلية من ست نقاط وعدد النقاط بترتيب معين داخل الخلية يدل على كل حرف وهذا شكل الخلية وتتم قراءة النقاط البارزة/المحفورة من خلال معرفة رقم موضعها طبقا للخلية الاتية من خلال التحسس باللمس من إخواننا الغير مبصرين وجدول برايل اجمالا يعنى عندما يتحسس غير المبصر ويجد النقطة البارزة/المحفورة طبقا للترتيب فى الخلية الاتية رقم 1 اى ان هذا حرف الاف وهندما يتحثث النقاط البارزة/المحفورة ويجدها حسب موضعها 2 ، 3 ، 4 ، 5 فهذا حرف التاء كان الملطلوب منى تعديل النموذج ليمثل محاكاة حقيقية لشكل الخلية ومواضع الحروف عليها عند النقر على كل حرف وبحمد الله وبفضله تم عمل ذلك وهذه صورة من داخل النموذج Braille V.3.zip
- 11 replies
-
- 5
-
-
-
- برايل
- شخابيط وافكار
- (و4 أكثر)
-
أتتمنى فقط أن تكون راض عن الحل و وجدت ضالتك هذا أفصى ما استطعت تقديمه بل كل الشكر لكم استاذى الجليل و معلمى القدير و والدى الحبيب حياكم الله وبياكم وهذه طريقة أخرى بدون الاعتماد على دوال :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 الان معك كل الخيارات لتختر ما يناسبك ويلبى رغباتك
-
دالة حساب الوقت اللى كانت فى الوحدة النمطية فى المرفق الاول 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) صياغتها أوضح ولا تفقد الدقائق عند الحساب دقيقة في كل الحالات لو أردت دعم الثواني بنفس الأسلوب أقدر أعدل لك الدالة فقط أخبرنى
-
اذا هذا الحل بالكود التالى لزر الامر 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
-
والان أستاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @ابوخليل انا محتاج بس اعرف شوية حجات علشان اشوف اظبط الكود ازاى 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 الان سوف يقوم بعمل لوب على كل الجدول لإجراء عملية الجمع انا لو فهمت الية العمل اقدر اتحكم فى العملية
-
ولكن ولكن ولكن خلينى اقول وجهة نظرى برضو الكود الأول: 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 بيجمع كأنك بتجمع تواريخ/أوقات كنسب من اليوم وليس بالضرورة عدد دقائق فعلي ممكن القيم تطلع غير دقيقة إذا كانت محفوظة بصيغة غير متناسقة
-
اصلا المفروض تكون كده يا فؤش "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