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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    117

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

  1. تبارك الرحمن ، ما شاء الله ، عمل إبداعي يتحدث عن نفسه . عاش الصوت وصاحبه والمايكات الجديدة .. التصميم والألوان شيء يبعث الراحة في النفس .. دقة في التصميم والتنفيذ .. وسهولة العمل عليه شيء في منتهى االروعة 👌🏻 عاشت ايدينك مهندسنا الغالي
  2. كل الإحترام والتقدير للأستاذ @Eng.Qassim ، ولا أشك في قدرته على ما تفضل به .. لكن اخي الكريم يبدو انك لم تمعن في المشاركات ولمن كان الحل ، في ملفك المرفق الحل الذي اقترحته عليك في مشاركتي هذه :- فكيف نسبت الحل باختيارك لأستاذنا الكريم المهندس قاسم !!!!!!!!
  3. اخي الكريم ، اقصد هل وجدت الحل من هذه المشاركة :- أم من هذه المشاركة :- وارسل لي الملف الذي يعمل معك لأرى الفكرة وأتعلم طريقة الحل
  4. من اي ملف هذه النتيجة يا صديقي !!!!!!!!!!!!!!!!!!!! للتدقيق
  5. غفر الله لك ولوالديك .. ولكم بالمثل وأكثر مما دعيتم مهندسنا الغالي ,, بالنسبة لطلبك فابشر بهما ,, في التالي سأقوم بالتعديل لجعل الموضوع أكثر مرونة باختيار الدولة التي تريدها ، ولكن بعد تجربتها على عدة أجهزة لضمان نجاحها . أما بخصوص ملف الباتش فهو فعلاً يتم انشاؤه في مجلد %TEMP% داخل الويندوز ليتم التعديل وتمرير الفكرة من خلال الجملة التالية .WriteLine "control.exe intl.cpl,, /f:""C:\Windows\System32\intl.cpl""" لكني سأزودك به منفصلاً
  6. تم تعديل الاستعلام كالآتي :- SELECT Max([يومية المشاريع].ID) AS MaxOfID, [يومية المشاريع].المشروع, Max([يومية المشاريع].[المقننين قرار (70)]) AS [MaxOfالمقننين قرار (70)], Max([يومية المشاريع].[الغير مقننين قانون (12)]) AS [MaxOfالغير مقننين قانون (12)], Max([يومية المشاريع].[عمال المياومة]) AS [MaxOfعمال المياومة], Max([يومية المشاريع].الاجمالي) AS MaxOfالاجمالي, Last([الايراد والمصروفات المشاريع].الاشهر) AS Lastمنالاشهر, First([الايراد والمصروفات المشاريع].الاشهر) AS Firstمنالاشهر, Sum([الايراد والمصروفات المشاريع].الايرادات) AS SumOfالايرادات, Sum([الايراد والمصروفات المشاريع].المصروفات) AS SumOfالمصروفات, Sum([الايراد والمصروفات المشاريع].[الفائض/العجز]) AS [Sumمنالفائض/العجز], IIf([SumOfالايرادات]>[SumOfالمصروفات],[Sumمنالفائض/العجز],IIf([SumOfالايرادات]=[SumOfالمصروفات],0)) AS الفائض, IIf([SumOfالايرادات]<[SumOfالمصروفات],[Sumمنالفائض/العجز],IIf([SumOfالايرادات]=[SumOfالمصروفات],0)) AS العجز, [بداية التاريخ] AS Minمنالاشهر, [نهاية التاريخ] AS MaxOfالاشهر FROM [يومية المشاريع] INNER JOIN [الايراد والمصروفات المشاريع] ON [يومية المشاريع].ID = [الايراد والمصروفات المشاريع].ID1 WHERE ((([الايراد والمصروفات المشاريع].الاشهر)>=[بداية التاريخ] And ([الايراد والمصروفات المشاريع].الاشهر)<[نهاية التاريخ])) GROUP BY [يومية المشاريع].المشروع, [بداية التاريخ], [نهاية التاريخ]; تفضل الملف المرفق بعد التعديل :- الايرادات والمصروفات_.zip
  7. سؤال جميل ، العمل جاري لتعديل الملف الوسيط ليقرأ امتداد قاعدة البيانات الأساسية دون تدخل برمجي .. لكن حالياً ولتجربة الفكرة فالإمتداد المتعامل معه هو Accdb . انتظر التحديث القادم ان شاء الله .
  8. السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) أشارككم اليوم حلاً برمجياً لمشكلة شائعة تواجه مطوري و مبرمجي تطبيقات آكسيس عند التعامل مع اللغة العربية . المشكلة تتمثل في الحاجة لتغيير لغة النظام (System Locale) إلى العربية لضمان عرض النصوص العربية بشكل صحيح في التطبيق ، وضمان عمل المشروع دون مشاكل . 🎯 المشكلة: - عدم ظهور النصوص العربية بشكل صحيح في بعض أجزاء التطبيق - الحاجة المتكررة لتغيير إعدادات النظام يدوياً - صعوبة شرح الخطوات للمستخدمين النهائيين ✨ الحل: قمت بتطوير دالة برمجية تقوم بـ: 1. فحص لغة النظام الحالية 2. تغيير لغة النظام إلى العربية بشكل تلقائي 3. ضبط جميع الإعدادات الضرورية (CodePage, Locale, Keyboard Layout) 4. إعادة تشغيل النظام بشكل آمن لتطبيق التغييرات 🔑 المميزات: - تنفيذ التغييرات بنقرة زر واحدة - رسائل واضحة باللغة الإنجليزية للمستخدم - معالجة الأخطاء بشكل احترافي - تأكيد موافقة المستخدم قبل إجراء التغييرات - إتاحة وقت كافٍ لحفظ الملفات قبل إعادة التشغيل 📝 ملاحظات هامة: - سيتم إعادة تشغيل الجهاز بعد تطبيق التغييرات - الكود يعمل على جميع إصدارات Windows الحديثة وهذه صورة توضيحية للخطوات التي كان على المستخدم العادي أو المبرمج تنفيذها حتى يتلافى مشكلة اللغة العربية :- الكود المستخدم في المديول :- Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetUserDefaultUILanguage Lib "kernel32" () As Long Private Declare PtrSafe Function GetACP Lib "kernel32" () As Long #Else Private Declare Function GetUserDefaultUILanguage Lib "kernel32" () As Long Private Declare Function GetACP Lib "kernel32" () As Long #End If Private Const MSG_CHANGE_LANGUAGE As String = "Your program will not function correctly; the unicode language must be changed to Arabic. Would you like to proceed with changing the unicode language?" Private Const MSG_RESTART_NOTE As String = "Note: The computer will restart after the change" Private Const MSG_TITLE As String = "Change System Language" Private Const MSG_RESTART_SOON As String = "The computer will restart in 15 seconds" Private Const MSG_SAVE_FILES As String = "Please save all open files" Private Const MSG_CANT_RUN As String = "The project cannot run without changing the system language to Arabic" Private Const MSG_ERROR As String = "System error occurred. Please contact your administrator" Private Function IsArabicLanguage() As Boolean Dim CodePage As Long CodePage = GetACP() IsArabicLanguage = (CodePage = 1256) End Function Public Function SetArabicLocale() As Boolean On Error GoTo ErrorHandler If Not IsArabicLanguage() Then Dim response As VbMsgBoxResult response = MsgBox(MSG_CHANGE_LANGUAGE & vbCrLf & MSG_RESTART_NOTE, _ vbQuestion + vbYesNo + vbDefaultButton2, _ MSG_TITLE) If response = vbYes Then Dim fso As Object Dim txtFile As Object Dim filePath As String filePath = Environ$("TEMP") & "\ChangeToArabic.bat" Set fso = CreateObject("Scripting.FileSystemObject") Set txtFile = fso.CreateTextFile(filePath, True) With txtFile .WriteLine "@echo off" .WriteLine "chcp 1256" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language"" /v Default /t REG_SZ /d 00000401 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language"" /v InstallLanguage /t REG_SZ /d 00000401 /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v LocaleName /t REG_SZ /d ar-JO /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v Locale /t REG_SZ /d 00000409 /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v sLanguage /t REG_SZ /d ARA /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v sCountry /t REG_SZ /d Jordan /f" .WriteLine "reg add ""HKCU\Control Panel\International"" /v iCountry /t REG_SZ /d 962 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v ACP /t REG_SZ /d 1256 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v OEMCP /t REG_SZ /d 1256 /f" .WriteLine "reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage"" /v MACCP /t REG_SZ /d 10004 /f" .WriteLine "reg add ""HKCU\Keyboard Layout\Preload"" /v 1 /t REG_SZ /d 00000401 /f" .WriteLine "control.exe intl.cpl,, /f:""C:\Windows\System32\intl.cpl""" .WriteLine "timeout /t 5" .WriteLine "shutdown /r /t 15 /c ""سيتم إعادة تشغيل الجهاز بعد ( 15 ثانية ) لتطبيق إعدادات اللغة العربية"" /f" End With txtFile.Close Dim shellApp As Object Set shellApp = CreateObject("Shell.Application") shellApp.ShellExecute filePath, "", "", "runas", 1 MsgBox MSG_RESTART_SOON & vbCrLf & MSG_SAVE_FILES, vbInformation SetArabicLocale = True Else MsgBox MSG_CANT_RUN, vbCritical SetArabicLocale = False End If Else SetArabicLocale = True End If Exit Function ErrorHandler: MsgBox MSG_ERROR, vbCritical SetArabicLocale = False End Function طبعاً رسالة التنبيه تم كتابتها باللغة الإنجليزية . في متغيرات متعددة ( السبب هو إحدى المحاولات للكتابة بالعربية مع تشفير النص ( Unicode ) ) . ولكني تجاهلت الفكرة لاحقاً . الآن يمكنك استدعاء الدالة في أول نموذج لك بالشكل التالي :- SetArabicLocale عند وجود اللغة العربية هي لغة الترميز في نسخة الويندوز ، لن تظهر لك رسالة ضرورة تغيير لغة الترميز الى العربية . ولم اقم بإضافات كبيرة خارج إطار الموضوع ، وللمبرمج حرية التعديل والإستفادة من الكود حيثما وكيفما يشاء . الملف المرفق مفتوح المصدر 👈 [ LanguageCheck.accdb ]
  9. المشكلة انه في الحقول الرقمية يجب أن تكون القيمة الإفتراضية = 0 (من وجهة نظري) ، وفي مشروع أخونا @كريمو2 ، للأسف لديه حقول فارغة = Null أو "" وهذا يربك العمليات الحسابية حتى عند استخدام NZ على سبيل المثال مع كثرة السجلات والشروط .... إلخ . فاقترحت على نفسي الحيلة ليس إلا ,
  10. تنسيق التاريخ في الحقل داخل الجداول ( 7/1/2024 ) وليست ( 1/7/2024 ) ثم انه لا يوجد لديك مشاريع توافق 11/1/2024 ، فسيتم جلب القيم بين التاريخين . هذا من جهة . ومن جهة ثانية القيمة الافتراضية لمربعات النص التي يتم جلب قيم التاريخ فيها على سبيل المثال =[Forms]![استعلام عن اجمالي الصناديق]![lastOfالاشهر] هنا سيتم جلب آخر قيمة وليست القيمة التي أدخلتها في التعليمة اعتقد هذه مشكلتك
  11. طيب ، جرب هذه الحيلة . 't9 Me.t9 = Nz(DSum("[Loan_Made]", "[tbl_Loans]", "Year ([Auto_Date])=" & Me.txtYear & " And [Loan_ID] > 0 "), 0) - Nz(DSum("[Payment_Made]", "[tbl_Loans]", "Year ([Auto_Date])=" & Me.txtYear & " And [Loan_ID] > 0 "), 0) If Me.t9 = 0 Then Me.Lblt9 = 0 Else MySQL = "" MySQL = "Select DISTINCT(Employeeid) From tbl_Loans" MySQL = MySQL & " Where " & "Year ([Auto_Date])=" & Me.txtYear & "And [Loan_ID] > 0 And ([Loan_Made]-[Payment_Made])=0" ' - Nz(DSum("[Payment_Made]", "[tbl_Loans]", "Year ([Auto_Date])=" & Me.txtYear - 1 & "And [Loan_Type] <> 'Inkhirat'"), 0) Set rst = CurrentDb.OpenRecordset(MySQL) Me.Lblt9 = rst.RecordCount End If 'T9E Me.t9e = Nz(DSum("Nz([Loan_Made], 0)", "[tbl_Loans]", "Year([Auto_Date])=" & Me.txtYear - 1 & " And [Loan_ID] > 0"), 0) - Nz(DSum("Nz([Payment_Made], 0)", "[tbl_Loans]", "Year([Auto_Date])=" & Me.txtYear - 1 & " And [Loan_ID] > 0"), 0) If Me.t9e = 0 Then Me.Lblt9e = 0 Else MySQL = "" MySQL = "SELECT DISTINCT(Employeeid) FROM tbl_Loans WHERE Year([Auto_Date])=" & Me.txtYear - 1 & " And [Loan_ID] > 0" Set rst = CurrentDb.OpenRecordset(MySQL) Me.Lblt9e = rst.RecordCount End If
  12. الآن من خلال معرفتك ببيانات مشروعك ، ما النتيجة الصحيحة للعام 2024 ، والعام 2025 ؟؟ فقط من أجل تلافي كثرة التجارب بيننا ولإكتساب الوقت .
  13. أخي الكريم @سيد رجب ، انت ما شاء الله 03 عضو مميز ، برأيك هل الجملة التي شرحت بها طلبك كافية و واضحة لمن سيقرأ ويلقي نظرة على ملفك ؟؟ أكرمك الله أن لا تبخل علينا بشرح وافي وكافي ، وتحديد اين تكمن المشكلة ( النموذج أو الاستعلام ... إلخ ) كونك ارسلت ملف المشروع كامل ( على ما اعتقد ) .
  14. على فكرة هذا ليس ملف مرفقك لقاعدة بيانات ، بل ملف فيديو
  15. بما أنه هناك جزء قد تحقق ، فإننا ندور حول الحل المناسب ، لأنني خارج العمل حالياً وبعيد عن الكمبيوتر ، سنتابع بأقرب وقت
  16. طيب ، جرب تعديل بسيط كالآتي .. Me.Lblt9e = Nz(DCount("EmployeeID", "(SELECT DISTINCT EmployeeID FROM tbl_Loans WHERE Year([Auto_Date]) = " & Me.txtYear - 1 & " And [Loan_ID] > 0)", ""), 0) أو لنجرب الحل الثاني استخدام Recordset مع DISTINCT .. Dim MySQL As String Dim rst As DAO.Recordset MySQL = "SELECT DISTINCT EmployeeID FROM tbl_Loans WHERE Year([Auto_Date]) = " & Me.txtYear - 1 & " And [Loan_ID] > 0" Set rst = CurrentDb.OpenRecordset(MySQL) Me.Lblt9e = rst.RecordCount أو الحل الثالث مع الدالة DSum .. Me.Lblt9e = Nz(DSum("IIF([Loan_Made] - [Payment_Made] = 0, 1, 0)", "tbl_Loans", "Year([Auto_Date]) = " & Me.txtYear - 1 & " And [Loan_ID] > 0"), 0) ما لم تقم بالتجربة لجميع الحلول ، فلن تصل إلى الحل والهدف 🤗
  17. وعليكم السلام ورحمه الله وبركاته ،، انا لو كنت مكانك ، أولا سأتأكد من وجود قيم صحيحة في الحقول المستهدفة في الشرط وعدم التكرار ، لربما تحتوي سهواً على قيم فارغة أو غير صحيحة. ثانياً سأجرب على سبيل المثال استعلام مباشر لتجربة النتيجة بدون تحديد الشروط من مصدر كمربع نص ، بل داخل الاستعلام نفسه SELECT DISTINCT(Employeeid) FROM tbl_Loans WHERE Year([Auto_Date]) = 2024 And [Loan_ID] > 0 ثالثاً وقد تكون لها الأولوية قبل النقطة السابقة ، استخدم جملة تتبع النتيجة بجملة Vba ثم اضغط Ctrl+G وتفحص النتيجة العائدة من الاستعلام Debug.Print MySQL لا ضرر أيضاً من متابعة شكل كتابة الاستعلام النحوية من وجود مسافات زائدة أو ناقصة .... الخ . وبخصوص الدالة DCount فأعتقد أنها لا تدعم بشكل مباشر حساب السجلات الفريدة (دون تكرار) بناءً على حقل معين . ويمكن استخدامها مع استعلام فرعي .. كمثال :- Me.Lblt9e = Nz(DCount("EmployeeID", "(SELECT DISTINCT EmployeeID FROM tbl_Loans WHERE Year([Auto_Date]) = " & Me.txtYear - 1 & " And [Loan_ID] > 0)", ""), 0) وأيضاً كحل شاذ يمكن استخدام DSum لجمع السجلات الفريدة حسب الجملة الشرطية ، كما يلي كمثال :- Me.Lblt9e = Nz(DSum("IIF([Loan_Made] - [Payment_Made] = 0, 1, 0)", "tbl_Loans", "Year([Auto_Date]) = " & Me.txtYear - 1 & " And [Loan_ID] > 0"), 0) مع العلم أنني أفضل الحل الثاني لأنه سيكون أسرع من الدالة DCount . وجهة نظري غير ملزمة في النهاية 😇
  18. أخي العزيز @عربي عالمي ، العبارة هذه تدل على انك تستخدم آخر إصدار ، تستطيع تغييرها كيفما تريد . سأقوم ان شاء الله غداً بجعل الاصدار في التحديث = الاصدار في الملف المرفق لتتوضح لك الصورة عند عدم وجود تحديث
  19. بتأييدي لإجابتكم معلمنا الفاضل @أبو إبراهيم الغامدي ، أدعم ما ترونه مناسباً باختياركم وتوجيهاتكم ما دام ذلك يصب في مصلحة المنتدى وأسرته 😇
  20. ما شاء الله أخي @tiger wanted ، عمل جميل وفكرة جميلة .. اسمح لي بإبداء رأيي المتواضع . 1. عند تحريك النموذج ونقل مكانه من المفترض ان يتم تحريك السكرول بار معه لا ان يبقيا في مكانهما . 2. لا يسعني إلا أن أقوم بداية طيبة ، وقد نرى منك أفكاراً جميلة كهذه ومشاريع رائعة أبدعت ..
  21. وعليكم السلام ورحمة الله وبركاته .. اخي العزيز من باب التوضيح ، هل الفترة التي تقصد بها في مثالك = التاريخ ؟؟؟؟؟؟؟ اذا كان جوابك نعم ، فإليك المرفق بعد التعديل باضافة طريقتين ، الأولى استعلام من خلال كود VBA والثانية استعلام SQL SKL.accdb
  22. زبدة الكلام هنا .. وطبعاً هذا على افتراض ان العلاقة التي ذكرها بين الجداول لها علاقة بالمطلوب !!!!!
  23. أخي الكريم أنت هنا تريد جلب قيم من مربعات نص الى مربعات نص في نموذج آخر يتم فتحه من التفاصيل ، صحيح ؟؟ لم استوعب ما علاقة العلاقات بالمطلوب !!!!! إلا إذا كان الهدف شيء آآآآآخر وإن كان هناك حل في مخيلتك فاشرحه لنا ، أو لا تبخل على نفسك وعلينا بالشرح لمطلوبك ، فالنوايا لا يعلمها إلا الله .
×
×
  • اضف...

Important Information