اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    187

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

  1. طيب يا صديقي ، قبل خروجي من العمل ، جرب هذا التعديل حيث تم ما يلي :- 1. في الجدول Tb_School تم اضافة الحقل WSat من نوع = Yes/No ، حيث :- إذا كانت المدرسة تعطل يوم السبت ( WSat=True ) ، وبالتالي يتم تجاهل الجمعة والسبت . إذا كانت المدرسة تعمل يوم السبت ( WSat=False ) وبالتالي يتم تجاهل يوم الجمعة ولا يتم احتسابه في الأيام . 2. تعديل الدوال في المديول : Public Function WorkDaysBetween(StartDate As Date, EndDate As Date, schoolID As Long) As Long Dim i As Long Dim d As Date Dim count As Long Dim SaturdayOff As Boolean If EndDate < StartDate Then WorkDaysBetween = 0 Exit Function End If SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) For i = 0 To DateDiff("d", StartDate, EndDate) d = DateAdd("d", i, StartDate) If Weekday(d, vbSaturday) = 7 Then ElseIf SaturdayOff And Weekday(d, vbSaturday) = 1 Then Else count = count + 1 End If Next i WorkDaysBetween = count End Function Public Function NextWorkingDay(d As Date, schoolID As Long) As Date Dim SaturdayOff As Boolean SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) Do While Weekday(d, vbSaturday) = 7 Or (SaturdayOff And Weekday(d, vbSaturday) = 1) d = d + 1 Loop NextWorkingDay = d End Function 3. دالة الاحتساب في النموذج الفرعي تم تعديلها كالآتي بإضافة الشرط الخاص برقم المدرسة للتمييز بين طريقتي الإحتساب :- Private Sub UpdateModa() Dim daysCount As Long Dim schoolID As Long If Not IsNull(Me.Parent!Gha_Aml) Then schoolID = Nz(Me.Parent!Gha_Aml, 0) Else schoolID = 0 End If If Not IsNull(tr_bda_tdbreeb) And Not IsNull(tr_nhay_tdree) Then daysCount = WorkDaysBetween(tr_bda_tdbreeb, tr_nhay_tdree, schoolID) tr_moshrt_aml = NextWorkingDay(tr_nhay_tdree + 1, schoolID) moda = daysCount Else moda = Null tr_moshrt_aml = Null End If End Sub جربه وأخبرني .. Personnel_affairs.zip
  2. طيب تمام يا صديقي ، الآن سأقوم بتفقد الجدول وإضافة حقل من نوع Yes/No دلالة على أن المدرسة هذه لها مباشرة دوام يوم السبت أم لا ,, وبناءً عليه سنقوم بتعديل الدالة للتمييز بين المدارس ، ما رأيك ؟
  3. وإياكم يا صديقي ، و والله انه ليسعدني أنها قد تحققت على أكمل وجه بفضل الله أولاً ، ثم بفضل ملاحظاتكم وسأعمل على إضافة أفكاري هذه الى المكتبة إثراءً لي
  4. يا صديقي ، الفكرة ليست في الجدول فقط ، فعلى سبيل المثال ، سنضطر الى تمييز ان الموظف الفلاني موظف للمدرسة الفلانية .. انت فاهم قصدي ؟؟
  5. الأمور تمام ، ولكن ما الذي سيميز المدارس التي يبدأ دوامها السبت من تلك التي تبدأ الأحد ؟؟؟؟؟؟ للتأكيد كل يوجد جدول للمدارس ؟؟؟
  6. اول شيء وين الاجازات في الموضوع ؟؟؟؟؟؟ ولا انت تقصد الدورات أو التدريبات هي نفسها الاجازات ؟؟؟؟؟ مش فاهم ، ثاني شيء انك تدخل في التشعبات الفرعية دون الانتهاء من التأسيس لبقية البرنامج اعتقد رح تتوهك وتدخلنا في متاهة
  7. اشرحها لي اكثر لأنا ما فهمتها
  8. الخطأ مردود ، اعتذر منك ، المقصود في النموذج الفرعي في الدالة UpdateModa ، أزل 1+ من السطر moda = daysCount + 1 ولكن لنفترض أن تاريخ بدء التدريب = 2025-04-01 وتاريخ الإنتهاء = 2025-04-04 أي الأيام ( 01 ، 02 ، 03 ، 04 ) ستكون 4 ايام وليس 3 ان كان ما فهمته صحيح ,, ولكن انت أعلم بمشروعك في النهاية
  9. طيب يا صديقي ، لنفترض جدلاً أن لديك مربع النص (TxtFullDate) ، والذي يضم القيمة = 042025 على سبيل المثال ، وأن لديك مربعي نص كالآتي :- مربع النص TxMo = لعرض رقم الشهر ، و مربع النص TxYr = لعرض رقم السنة . الآن في مصدر بيانات مربع النص الخاص برقم الشهر اكتب السطر التالي :- =Left([TxtFullDate],2) وفي مربع النص الخاص برقم السنة ، اكتب الجزء التالي فقط :- =Right([TxtFullDate],4) جرب وأخبرني بالنتيجة
  10. أخي الكريم وعليكم السلام ورحمة الله وبركاته ,, حتى لا ندخل في متاهة الإختمالات والمقاصد الغير موضحة ، ما هي احتمالات القيم التي تريد فصلها ؟؟ على سبيل المثال هل جميعها تضم الشهر من خانتين ورقم السنة ( 012025 ، 062025 ، 112025 ، 122025 ... ) ؟؟؟؟؟ واذا كان هناك أي مقصد أو هدف يجول في خيالك ولم تأت على ذكره فأرجو التوضيح
  11. نعم أخي العزيز ,, الحل بسيط ان شاء الله ، فقط في الدالة في المديول قم بإزالة 1 + :- count = count + 1
  12. هل تقصد هذه الفكرة !! DoCmd.OpenReport "rep_Kashf", acViewPreview DoCmd.OpenReport "rep_Kashf", acViewReport DoCmd.OpenReport "rep_Kashf", acViewPreview اذا كانت فكرتك هنا استخدم التكرار كحل تحايلي لضمان أن التقرير سيحسب القيم بشكل صحيح في أول مرة ، ثم يعرضها بشكل نهائي بعد أن تكون القيم قد تم تجميعها !!!! أحاول التركيز في التخلص من هذه الفكرة
  13. وعليكم السلام ورحمة الله وبركاته ,, تفضل طلبك بعد اجراء تعديل على الكود لتقليل التكرار .. Private Sub HandleSubjectFocus() On Error Resume Next Me.y1 = Me.y2.Column(1) Dim code As String code = Trim(Right(Me.y2, 3)) Dim ctlName As String Select Case code Case "REL": ctlName = "Religion" Case "ARA": ctlName = "ARABIC" Case "ENG": ctlName = "ENGLISH" Case "MAT": ctlName = "MATH" Case "SCI": ctlName = "SCIENCE" Case "SOC": ctlName = "SOCIAL" Case "ART": ctlName = "ART" Case "SPO": ctlName = "SPORT" Case Else: Exit Sub End Select Forms!FrmMain!SubMain.SetFocus Forms!FrmMain!SubMain.Form.Controls(ctlName).SetFocus Me.SetFocus Me.y2.SetFocus Me.y2.Value = "" End Sub Private Sub Form_Load() Me.y2.SetFocus End Sub Private Sub y2_AfterUpdate() HandleSubjectFocus End Sub باركود.accdb
  14. إصلاح مشكلة الإستيراد لأكثر من سجل من جوجل شيت . في الإصدار الأخير السابق وأتوجه بالشكر للأستاذ @Moosak للفته انتباهي لهذا الخلل . فقد تم بحمد الله تلافي وحل المشكلة من جذورها وإضافة ميزة جديدة وهي التعرف على طول القيمة التي سيتم استيرادها ( للحقول النصية ) . حيث طول الحقل النصي في اكسيس 255 حرف . وبهذا لا يمكن استيراد كامل القيمة اذا كانت أكبر من 255 حرف ، وسيتم ترك الفكرة للمستخدم بأن يكمل الإستيراد بعد ان يتم تقليص قيمة الخليه من جوجل شيت الى 255 أو الغاء العملية بالكامل .. وعليه ، فإن التعديل الجديد حل هذه المشكلة وغيرها .. ------------------------------ Excel Importor 2.0.zip ------------------------------
  15. سألقي نظرة إن شاء الله قريباً ، فقط ما يمنعني في الوقت الحالي هو ضغط العمل ليس إلا 🤗 .
  16. اولاً اعتذر عن عدم تواجدي خلال اليومين الماضيين بسبب ضغط العمل ، ويسعدني تلبية نداء معلمي الفاضل بإلقائي نظرة اتعلم منها من خلال تعديلاتكم وتحديثاتكم 😇 بأقرب فرصة إن شاء الله..
  17. الفكرة واضحة جداً ، وستعمل على تسهيل عملية الادخال للبيانات بشكل ملحوظ .. على العموم جرب هذه الفكرة البسيطة وأخبرني بنتيجتها بعد تجربة على عدة تواريخ وعدة سجلات Personnel_affairs.zip
  18. هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة .. قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل Personnel_affairs.zip
  19. برأيي هذه الفكرة قد تغني عن الكثير من التقارير .. فالفكرة قد تكون كالآتي .. في مجتمعنا التعليمي في الأردن ( على سبيل المثال ) الشهادة الدراسية تحتوي درجات الفصلين ( الأول والثاني ) ففي الفصل الأول يتم تعبئة العمود الخاص بالفصل الأول ودرجاته للمواد حسب الصف . بمعنى أدق الشهادات موحدة في تصميمها باختلاف الصفوف وموادها . ويأخذ الطالب نسخة عن هذه الشهادة وفي الفصل الثاني يتم طباعة شهادة تشمل الفصلين ( كوجه مقارنة للطالب ) ويأخذ المتوسط للفصل الدراسي الثاني باعتماد درجته للترفيع . ان شاء الله ستتمكن من ذلك . قد تكون العقبات على حد علمي بالاستعلامات الحالية وبنيتها .. هذا والله اعلم
  20. ومشاركة مع أستاذي @ابوخليل ، هذه فكرتي المتواضعة .. حيث قمت بانشاء دالة في المديول = Public Function GetMada1ValByNum(Stucard As String, SafId As Long, madaNum As Long) As Variant GetMada1ValByNum = DLookup("mada1", "Tbl_degree_Detail", _ "Stu_card = '" & Stucard & "' AND Elsaf = " & SafId & " AND madaNum = " & madaNum) End Function لجلب قيمة الحقل Mada1 لكل طالب حسب معرف المادة . حيث يتم الاستدعاء في مربع النص بالشكل التالي =GetMada1ValByNum([id_student],[alsaf_Id],1) حيث 1 = رقم المادة ، وقابل للتغير حسب المواد لاحقاً وفي الغياب للذكور = =IIf([gender]=1,DCount("mada1","Tbl_degree_Detail","Stu_card='" & [id_student] & "' AND Elsaf=" & [alsaf_Id] & " AND mada1=0"),0) وللإناث = =IIf([gender]=2,DCount("mada1","Tbl_degree_Detail","Stu_card='" & [id_student] & "' AND Elsaf=" & [alsaf_Id] & " AND mada1=0"),0) لا اعلم ان كانت النتائج دقيقة ، ولكن لصاحب الشأن أخي @2saad المتابعة وإخباري بالنتيجة .. Database36.zip
  21. والله أني خجلت أعلق وأرد بأنه المطلوب غير واضح بشكل كامل ، فيبدو أن أخي الكريم أسعد يتعامل مع الموضوع كأن من سيقرأ الكلمات التي عرف بها طلبه سيفهم بشكل كامل المقصود والمطلوب ,, ولكن رد معلمنا الفاضل شجعني على التعليق 😅 . ولطفاً من أخي أسعد ، لو تكرم بشرح المطلوب بشكل أوضح من :- أو حتى من الجملة :-
  22. نعم ، فهمت المشكلة ,, استدعي الدالة GetStrat بدلاً من السطر الذي تم اضافته باستدعاء حدث بعد التحديث لمربع نص الرقم القومي
  23. انت متأكد انك اشتغلت على زر الحذف ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ لأني جربت على سجلات كثيرة ولم تظهر لي الرسالة التي ارفقتها .. ولا اعرف كيف أو أين ظهرت معك !!
  24. في زر الحذف :- Private Sub Cmdel_Click() On Error GoTo Err_Cmdel_Click If MsgBox(":ستقوم الآن بحذف السجل المسجل بملف رقم" & vbCrLf _ & vbCrLf _ & [Nr] & " " & vbCrLf _ & [Name_S] & vbCrLf _ & " " & vbCrLf _ & "هل أنت متأكد ؟" & vbCrLf _ & "أضغط ( نعم ) للإستمرار ، أو ( لا ) لإلغاء الأمر", vbQuestion + vbYesNo _ + vbMsgBoxRight, "تحذيـــر") = vbYes Then Me.Recordset.Delete Me.Recordset.MoveNext National_Nr_AfterUpdate ' فقط هذا السطر ما تم اضافته End If Exit_Cmdel_Click: Exit Sub Err_Cmdel_Click: MsgBox Err.Description Resume Exit_Cmdel_Click End Sub db1.mdb
×
×
  • اضف...

Important Information