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

ابو جودي

أوفيسنا
  • Posts

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

  • Days Won

    208

كل منشورات العضو ابو جودي

  1. السلام عليكم ورحمة والله تعالى وبركاته طيب ببساطه انظر للسلسلة النصية الاتية "Moh8202281012343434" ونريد التعديل عليها لتظهر بهذا الشكل "Moh-820-228-101-234-343-4" او بهذا الشكل "Moh,820,228,101,234,343,4" او بهذا الشكل Moh820/228101/234343/4 يتم عمل ذلك من خلال الكود الاتى Function ReFormat(ByVal strText As String, Optional strSymbol As String = "-", Optional intCountDigits As Integer = 3) Dim i As Long ReFormat = "" For i = 0 To Len(strText) - 1 Step intCountDigits If i = 0 Then ReFormat = Mid(strText, i + 1, intCountDigits) Else ReFormat = ReFormat & strSymbol & Mid(strText, i + 1, intCountDigits) End If Next i End Function syntax code ReFormat(string ,Symbol, Count Digits) Result By default syntax used ReFormat(string) Symbol >-->> - Count Digits >-->> 3 اذا من خلال استدعاء الكود عن طريق البنية المفضلة الاتية: ReFormat(string) تحصل على اضافة العلامة - بعد كل 3 مواضع فى السلسلة النصية اما اذا اردت التعديل فى شكل الرمز وعدد المواضع يمكنك استخدام الكود الاتى : ReFormat(string ,Symbol, Count Digits) مثلا لو اردت استخدام الرمز $ بدلا من الرمز - وتريد وضع الرمز فى السلسلة النصية بعد كل خمس مواضع يكون الكود كالأتى: ReFormat(string ,"$", 5)
  2. لو تريد مثال على رفم الهارد ديسك من عيونى يا دكتور اصبر على وانا احضرهولك بس اولا انت عاوز الموضوع يكون معقد فى كتابة الاكواد قدر الامكان كما قمت انا به فى المثال المرفق وتهمك النتيجة الأخيرة ام تريد الموضوع مكتوب برمجيا بسهولة
  3. اى مبدع بحق واكثر الاوقات ابداعا عندما يقول >>---> يضاف الى مكتبة الاكواد
  4. تجربة ع السريع الحل بأخر استعلام qryTotalFinalDuration للتجربة ادخل كود الموظف 1 وتارة اخرى 2 للتجربة للعلم عدد الايام لن يكون صحيح بنسبة 100% لانه تم القسمة على 30 وهناك اشهر قد تكون 28 , 29 , 30 , 31 ولا اعرف كيف اضبطها الحل المقدم من تصورى قد اخطئ فيه وقد اصيب وربما تكون هناك افكار افضل وان حالفنى سعة من الوقت قد احاول تحويل كل المعادلات داخل الاستعلامات ليت ترجمتها فى موديول واحد ليقوم بالحساب مرة واحدة ولكن لن احاول عمل ذلك الا بعد التأكد من تجربتكم بصحة الارقام الناتجة EmploymentPeriods.accdb
  5. الله اكبـــــر يحيا العدل 👈 صعيدى وافتخر هذا فضل الله تعالى الذى هدانا وما كنا لنهتدى لولا ان هدانا الله عزوجل وهذا رزقكم ساقه الله اليكم
  6. يا سيدى الله يحفظك لاهلك واحبابك ويبارك بعمرك وعلمك وعملك وما يحرمنا جمعكم الطيب وفعلا انا مهضوم ومن كتر الهضم ما صار فينى شئ صيرت جلد على عضم بدنا ضرايب بالمنتدى ع ها المكتبة اوماااااااااااااااااااال
  7. ههههههه طماع البنى ادم ده تتأخر حبتين وهى تتأخر ثانية واحدة يا سيدى وتأتى بالنفع منها افضل من عدمها ومع ذلك شوف الفكرة رقم 3 يا سيدى بدون الرسالة خالص اللى تتأخر حبتين دى لا تزعل روحك المهم تنبسط ما نقدر على زعلك
  8. ووفقا للمشاركة التى اشرتم اليها لاستا DateDiff("s",#1/1/1970 3:00:00 AM#,[اسم الحقل فى الجدول]) وكما اشرتم الى موضوعكم وطبقا لحل استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr اتفضل الحل وهذا هو المرفق تم اضافة حقل To Timestamp والذى يقوم بتحويل التاريخ من الحقل Saudi الى Timestamp من خلال المعادلة Timestamp: DateDiff("s",#1/1/1970 3:00:00 AM#,[Saudi]) 1459.unix_tTime_Stamp V2.accdb
  9. فى فوكيره تانى بره الصندوق اشرحها نظرى الان وممكن التطبيق لاحقا ممكن نعمل نموذج يستعرض السجلات تباعا باستخدام حدث فى الوقت من السجل الاول الى الاخير و يغلق تلقائيا بعد السجل الأخير مرفق تطبيق الفكرة aa V3.accdb
  10. اتفضل يا سيدى احلام معاليك اوامر يا باش مهندس @Moosak اى خدمه يارب تنبسط بس تعتمد الفكرة على وضع الروتين الاتى فى وحدة نمطية Public opt As Integer Public Function MesgBox(ByVal msgText As String, _ Optional ByVal TimeInSeconds As Integer, _ Optional ByVal intButtons = vbDefaultButton1, _ Optional TitleText As String = "WScript") As Integer On Error GoTo MesgBox_Err Dim winShell As Object Set winShell = CreateObject("WScript.Shell") MesgBox = winShell.PopUp(msgText, TimeInSeconds, TitleText, intButtons) MesgBox_Exit: Exit Function MesgBox_Err: winShell.PopUp Err & " : " & Err.Description, 0, "MesgBox()", vbCritical Resume MesgBox_Exit End Function ويتم استدعاء الورتين من خلال opt = MesgBox(Me.n & vbCr & vbCr & " Please wait . . .", 1, vbInformation, "Info") حيث ان بناء الكود كالاتى 'Syntax: opt = MesgBox(msgTxt,intSeconds,Buttons+Icon+DefaultButton,"Title") aa V2.accdb
  11. اولا بارك الله فى عمرك وعلمك وعملك وجزاكم كل خير ثانيا انا اقل طويلب علم ولست مبرمجا على الاطلاق مجرد هاو ثالثا كنت ابلور فكرة من الامس شبيه بفكرة حضرتك استخدمت الروتين الاتى فى وحدة نمطية Function OpenReport(ByRef rptName As String, ByRef qryName As String) On Error GoTo ErrorHandler DoCmd.OpenReport rptName, acViewPreview, , , , qryName procDone: Exit Function ErrorHandler: MsgBox$ Err.Number & ": " & Err.Description Resume procDone End Function على ان يتم استدعاءه بالسطر الاتى OpenReport("rpt2", "Query2") نفس فكرة حضرتك طبعا بسبب الغموض وعدم التوضيح الكافى كنت فى انتظار اضافة المرفق Chang Record Sources Report VBA(V3).mdb
  12. تسلم الايادى يا @مبرمج سابق يا عالم يا معقدين شايفين البساطة ما شاء الله
  13. جزاكم الله خيرا استاذى الجليل ومعلمى القدير الاستاذ @Barna واسمح لى ممكن نختصر الكود ليكون Dim qdf As DAO.QueryDef Dim strSQL As String CurrentDb.QueryDefs.Delete "qr1" If com1 = "التقرير الاول" Then strSQL = "SELECT tblA.* FROM tblA;" ElseIf com1 = "التقرير الثاني" Then strSQL = "SELECT tblB.* FROM tblB;" End If Set qdf = CurrentDb.CreateQueryDef("qr1", strSQL) DoCmd.OpenReport "rptFlayReport", acViewPreview ولارد بضاعتكم اليكم بطريقة مختلفة بعض الشئ تجنبا لاستخدام الحروف العربية , واضفاء مرونة أكبر فى حال اردنا تمرير اسم التقرير من خلال الكود الافكار كثيرة وتتصارع وتتلاحق فى رأسي بسبب عدم فهمى الهدف والمطلوب تحقيقة بصورة مباشرة من السؤال بسبب غموض الهدف ولكن على حال تبقى الحاجة هى ام الاختراع وفهم السؤال هو شطر الجواب Chang Record Sources Report Barna V2.mdb
  14. انا اريد مرفقا انا لم افهم اى شئ
  15. لابد من تنصيب اكروبات ريدر
  16. طيب ممكن تجربة المرفق الاتى لانه يبدو لى ان التقرير نريده ان يقتح على اكثر من مصدر بيانات حسب الحالة ان لم افهم الموضوع جيدا برجاء مرفق حتى اسطيع الفهم >>---> صعيدى بيفهم بالعافية Chang Record Sources Report.mdb
  17. شوف يا باش مهندس @Eng.Qassim قمت فى هذا المرفق ببعض التعديلات الطفيفة والتى تظهر امامك كل شئ تفصيليا حمل المرفق وقم بفتح الاستعلام qryActualDays ActualDaysCalcult Eng.Qassim.accdb
  18. الله يسلمك ويحفظك يا باش مهندس قاسم وما هى المشكلة 01/06/2022 >>---> يوافق يوم الاربعاء >>---> 1 02/06/2022 >>---> يوافق يوم الخميس >>---> 2 03/06/2022 >>---> يوافق يوم الجمعة >>---> 0 04/06/2022 >>---> يوافق يوم السبت >>---> 0 05/06/2022 >>---> يوافق يوم الاحد >>---> 3 06/06/2022 >>---> يوافق يوم الاثنين >>---> 4 07/06/2022 >>---> يوافق يوم الثلاثاء >>---> 5 08/06/2022 >>---> يوافق يوم الاربعاء >>---> 6 09/06/2022 >>---> يوافق يوم الخميس >>---> 7 11/06/2022 >>---> يوافق يوم الجمعة >>---> 0 11/06/2022 >>---> يوافق يوم السبت >>---> 0 12/06/2022 >>---> يوافق يوم الاحد >>---> 8
  19. اولا جزاكم الله خيرا لبحثكم وتقديم المساعدة ولكن اسمح لى بعد اذن حضرتك 1- يعيب الدالة من موقع مايكرسوفت استخدام اسم اليوم سواء بالعربية او الانجليزية بسبب اختلاف الاجهزة على الرغم من امكانية تحاشى تلك المشكلة ولكن هذا شق الاجابه على السؤال وهو الفرق بالايام بين تاريخين مع عدم احتساب ايام الجمعة والسبت 2- وماذا عن الشق الاخر ؟
  20. اولا انشئ جدول باسم tblHolidays يتكون هذا الجدول من حقلين الحقل الاول باسم HolidayType نوع الحقل نصى ليحتوى على اسم او وصف الأعياد والأجازات الرسمية لهذا العام الحقل الثانى باسم HolidayDate نوع الحقل تاريخ ليحتوى على تاريخ الأعياد والأجازات الرسمية لهذا العام بعد ذلك انشئ وحدة نمطية وضع بها الروتين الاتى Function ActualDays(ByVal dtStartDay As Date, ByVal dtEndDay As Date, Optional nDay As Integer = 0) As Long Dim dtNominalEndDay As Date Dim lngTotalDays As Long Dim lngTotalWeeks As Long Dim lngTotalHolidays As Long Dim lngstart As Long Dim lngend As Long 'Check to see if dtStartDay > dtEndDay. If so, then switch the dates If dtStartDay > dtEndDay Then ActualDays = 0: Exit Function ' If dtStartDay >= dtEndDay Then ' dtNominalEndDay = dtStartDay ' dtStartDay = dtEndDay ' dtEndDay = dtNominalEndDay ' End If 'Here are how many weeks are between the two dates lngTotalWeeks = DateDiff("w", dtStartDay, dtEndDay) 'Here are the number of weekdays in that total week lngTotalDays = lngTotalWeeks * 5 'Here is the date that is at the end of that many weeks dtNominalEndDay = DateAdd("d", (lngTotalWeeks * 7), dtStartDay) 'Now add the number of weekdays between the nominal end day and the actual end day While dtNominalEndDay <= dtEndDay If Weekday(dtNominalEndDay, 2) <> 5 Then If Weekday(dtNominalEndDay, 2) <> 6 Then lngTotalDays = lngTotalDays + 1 End If End If dtNominalEndDay = dtNominalEndDay + 1 Wend 'convert end date and startdate into long integer format for the DCount operation to avoid misreading of dates as US format lngstart = dtStartDay lngend = dtEndDay 'Here are how many holiday days there are between the two days lngTotalHolidays = DCount("HolidayDate", "tblHolidays", "HolidayDate <= " & lngend & " AND HolidayDate >= " & lngstart & " AND Weekday(HolidayDate,2) <> 6 AND Weekday(HolidayDate,2) <> 5") ActualDays = lngTotalDays - lngTotalHolidays 'Here are how many holidays between the two dates plus the number of weekends 'If nDay = 1 Then ActualDays = DateDiff("d", dtStartDay, dtEndDay) - ActualDays + 1 If nDay = 1 Then ActualDays = DateDiff("d", dtStartDay, dtEndDay) + 1 If nDay = 2 Then ActualDays = DateDiff("d", dtStartDay, dtEndDay) - ActualDays + 1 If nDay = 3 Then ActualDays = lngTotalHolidays If nDay = 4 Then ActualDays = (DateDiff("d", dtStartDay, dtEndDay) - ActualDays + 1) - lngTotalHolidays End Function ولاستدعاء الروتين السابق لاحتساب الايام الفعلية بين تاريخين بدون العطل الرسيمة داخل الجدول المحدد لذلك وبدون ايام الجمعة والسبت ActualDays([BeginDate],[EndDate]) وان اردت استخلاص عدد العطلات الرسمية بين تاريخين والتى تم تحديدها مسبقا بجدول tblHolidays + العطلات الاسبوعية ( الجمعة + السبت ) قم ياستدعاء الروتين بالشكل الاتى ActualDays([BeginDate],[EndDate],1) وهذا التعديل الاخير لى على الأكود فى المرفق الذى اشار اليه الباش مهندس @Moosak تم تعديل المرفق ActualDaysCalcult.accdb
  21. جزاكم الله خيرا معذرة على طول الغياب
×
×
  • اضف...

Important Information