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

كل الانشطه

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

  1. الساعة الأخيرة
  2. الاسم المطلوب / محمد متولى سليمان سالم أسم الحائز / محمد متولى سالم سليمان الأفضل البحث بالرفم القومى أو رقم الحيازة مع طلب تعديل البيانات والتأكد من صحتها
  3. اسف نسيت المرفق للرفع.xlsx
  4. السلام عليكم فى الملف المرفق احتاج الى معادلة VLOOKUP ولكنها لا تعمل ارجوا المساعدة وتوضيح سبب عدم عمل المعادلة
  5. Today
  6. بدايةً الخطأ ان اسم مربع النص ID وليس الكود !! ثانياً لازم تمرر مسار واسم النموذج الفرعي اللي موجود فيه الشرط ID . وفي الدالة :- Public Function f11(الكود As Integer) DoCmd.OpenForm "Customer Details", , , "[الكود] = " & الكود End Function لا يتم تمرير الشرط أو المعيار للفلترة . لذا توجهت الى فكرة غريبة نوعاً ما بحيث من خلال الكود يتم البحث عن أول نموذج فرعي يحتوي مربع النص ID كشرط ومعيار للفلترة وتمريره الى جملة فتح النموذج على السجل المحدد . لتصبح الدالة مع مساعد بسيط :- '---------- ( ID تم التعديل هنا بحيث يتم البحث عن أول نموذج فرعي يحتوي مربع النص ) ---------- Public Function f11() On Error GoTo ErrHandler Dim frmMain As Form Dim ctrl As Control Dim frmSub As Form Dim val As Variant Set frmMain = Screen.ActiveForm For Each ctrl In frmMain.Controls If ctrl.ControlType = acSubform Then Set frmSub = ctrl.Form If HasControl(frmSub, "ID") Then val = frmSub.Controls("ID").Value DoCmd.OpenForm "Customer Details", , , "[الكود] = " & val Exit Function End If End If Next ctrl MsgBox ". 'ID' لم يتم العثور على نموذج فرعي يحتوي على الشرط", vbExclamation + vbMsgBoxRight, "" Exit Function ErrHandler: MsgBox "حدث خطأ: " & Err.Description, vbCritical + vbMsgBoxRight, "" End Function Private Function HasControl(frm As Form, ctrlName As String) As Boolean On Error Resume Next HasControl = Not frm.Controls(ctrlName) Is Nothing End Function '---------- ( نهاية التعديل ) ---------- ملفك بعد التعديل :- date-2025 - Copy (4).zip
  7. date-2025 - Copy (4).rar كل اللي محتاجه انا اختار من open هيفتح القائمة المختصرة اختار منها تعديل يفتحلي الفورم اللي فيه داتا العميل المختار للتعديل عليها
  8. فكرة ابو جودي هي الافضل، وللعلم ، فجدول 2 لا يمكن يكون اكثر من ايام السنة 365 سجل ، وقد جربت هذه الطريقة بدل 365 ، جربت 3,000,000 وكانت سريعة ، وكانت السرعة ممتازة: . .
  9. انا الذي يهمني عدد السجلات فقط حسب اليوزر عملته كما هو كجملة داخل الكود
  10. بالفعل أستاذ جعفر أفضل حل هو عمل union query و لقد استخدمت بالفعل هذا الاستعلام لنفس الغرض الذي صرح به الاستاذ أبو خليل و الحمد لله ادي المطلوب بكفاءة
  11. فكرة جميلة يا ابو جودي انا كان في بالي نعمل استعلام1 لأول تاريخ، ثم استعلام2 للتاريخ الثاني، ثم استعلام3 union نجمع نتائج الاستعلامين.
  12. بعد التجربة أخي @Foksh حمد لله شغال بامتياز وبدون مشاكل ألف شكر وامتنان وتقدير وجزاك الله كل الخير - أمين
  13. هذا هو الحل النموذجي .. خاصة مع فكرة ادراج ايام السنة وعند دخول السنة الجديدة سيتم آليا تحديث الجدول .. بشرط اخذ نسخة قبل التحديث .. فكرتي : اننا لسنا بحاجة لعرض هذه تواريخ الاجازات وغيرها مع سجلات الحضور .. فقط نريد العدد والعدد سيكون مرن فيما لو تم قطع الاجازة او الاضافة عليها .. سيكون هذا العدد خاصا فيما يتم حصره بين تاريخين اما الاطلاع على سجل الاجازات والندب فمن مكان آخر سأعرض فكرتي في مخرجات التقرير : معرف/ الفترة من الى / عدد ايام العمل المقررة على الموظف / مجموع ساعات العمل المقررة / عدد ايام الحضور / عدد ايام الغياب / عدد ايام الاجازات والندب/ عدد حالات معالجة ترك توقيع الانصراف/ عدد ساعات التأخر / عدد ساعات العمل الفعلية هذا التقرير افقي جدولي مبني على استعلام كخلاصة نتيجة شهر مثلا ( الشهر عند المستفيد من هذا المشروع يبدا من منتصف الشهر الى منتصف الشهر التالي) من اراد التفاصيل كالاطلاع على الاجازات المعتمدة او ايام الندب .. او ايام الغياب او حلاات المعالجة او سجلات التأخر .. فيمكن عرض ذلك بالتفصيل بعيدا عن الخلاصة كل هذا بدون استخدام اي جدول مؤقت مطلقا ..
  14. يعطيك عافية فعلا محاذاة الأبيات الشعرية مسألة مهمة
  15. ههههههههههههه أنت أرتحت وأنا خلاص على ايدك خلصت التكـه و وصلت لآخر السكـة قابلوا بئه اللى راح حمادة واللى جاى حماااادة تااااااانى خالص ... انتوا اللى جيبتوه لنفسكم
  16. خلاااااص !! دلوقتي ارتحت ، وأقدر أنسحب بهوووووووووء وانام مرتاح البال والضمير
  17. انت تقصد لاقيت نفسك فاضى قلت فى عقل بالك تعمل ايه تعمل ايه يا واد فؤش اه الواد او جودى هنا وعمال يخبط دماغه فى الحيط .. اسيبــه ؟! .... لا ... اروح اعمل له Error فى دماغه بزياده قبل ما يروح على شغله وبعدين ادخل انام عاش عليك يا فؤش خلاااااااااااااااااااص مباقاش فاضل تكـــــــــه بح خلاص على ايدك يا فؤش أفندى خلصت التكـه
  18. انا عارف والله ان فكرتك أسرع من فكرتي لما يكون الفرق بين التاريخين كبير .. وعارف ان استخدامك للمصفوفة أفضل لأنه ببنيها مرة وحدة وبعدين يجمعها كلها مرة وحدة برضو ، على عكس فكرتي لأن السلسة التراكمية اللي استعملتها يتم بناءها كل مرة ,,, ، انا لقيت نفسي فاضي ، قلت أحاول أتعب دماغي شوية واحاول انام 😴
  19. يا فؤش افندى لا يعيب الكود كثرة الاسطر أو طوله انت استخدمت : سلسلة مباشرة انا استخدمت : مصفوفة ثم Join واستخدمت شرط للتحقق من البداية والنهاية واعتقد ان (مصفوفة ثم Join) : أسرع وأكثر كفاءة عند كثرة التواريخ (المصفوفة أفضل من تجميع نصي مباشر) غير كده مفيش أى فروقات تانى عير الفاصلة فــ إيه بئه أنا مش فاهم
  20. مهو برضو ممكن يكون الحل كالآتي :- Public Function FokshDates(startD As Date, endD As Date) As String Dim d As Date, s As String For d = startD To endD s = s & Format(d, "yyyy-mm-dd") & "," Next If Len(s) > 0 Then s = Left(s, Len(s) - 1) FokshDates = s End Function والإستعلام الصغير ده :- SELECT tbl1.id, tbl1.user_id, tbl1.startA, tbl1.endA, FokshDates([startA],[endA]) AS التواريخ FROM tbl1; والنتيجة :- Query2 id المعرف بداية نهاية التواريخ 1 11 2025-07-02 2025-07-05 2025-07-02,2025-07-03,2025-07-04,2025-07-05 2 22 2025-07-04 2025-07-04 2025-07-04 مجرد تفكير بصوتك ، لأنه بجد فاضل تكة هي بسيطة ، وانت عارفني ما بحبش أفوت في تفاصيل قد تكون بعيدة ,,
  21. من أجل ذلك كتبت الكود بالشكل ده يا استاذ فؤش Public Function GetDatesBetween(ByVal dtmStartDate As Date, ByVal dtmEndDate As Date) As String If dtmStartDate > dtmEndDate Then GetDatesBetween = "" Exit Function End If Dim dtmCurrentDate As Date Dim arrDates() As String ReDim arrDates(0 To DateDiff("d", dtmStartDate, dtmEndDate)) Dim lngIndex As Long For dtmCurrentDate = dtmStartDate To dtmEndDate arrDates(lngIndex) = Format(dtmCurrentDate, "yyyy-mm-dd") lngIndex = lngIndex + 1 Next dtmCurrentDate GetDatesBetween = Join(arrDates, " | ") End Function
  22. وخطر لي حيلة يمكن تكون غريبة نوعاً ما .. وهي كما في الاستعلام التالي :- SELECT tbl1.id, tbl1.user_id, tbl1.startA, tbl1.endA, IIf(DateDiff("d",[startA],[endA])>=0,Format([startA],"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=1,"," & Format([startA]+1,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=2,"," & Format([startA]+2,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=3,"," & Format([startA]+3,"yyyy-mm-dd"),"") & IIf(DateDiff("d",[startA],[endA])>=4,"," & Format([startA]+4,"yyyy-mm-dd"),"") AS التواريخ FROM tbl1; والنتيجة :- Query3 id المعرف بداية نهاية التواريخ 1 11 2025-07-02 2025-07-05 2025-07-02,2025-07-03,2025-07-04,2025-07-05 2 22 2025-07-04 2025-07-04 2025-07-04 طبعاً هنا اذا كان الفرق بين التاريخين كبير فسيكون الاستعلام كبيراً نوعاً ما .. لكني وددت المشاركة 😅
  23. طيب استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل يبدو ان الفكرة هذه تخص تسجيل اجازة او مأمورية او تدريب او شئ من هذا القبيل بين فترين أولا انا حاولت وضع كل الاجابات وكل ما خطر بالى فيما يخص السؤال والموضوع بقدر الامكان حسب فهمى المتواضع ولكن ولكن لكن وبناء على تجارب عملية الافضل هو تسجيل التواريخ جميعا من خلال لوب بداية من اول تاريخ الى اخر تاريخ فى الجدول المخصص من البداية على هيئة سجلات الميزة والافضلية اولا لاى سبب عارض اى تغيير فى المستقبل بين الفترات يسهل حذفه وناهيك عن سهولة تطبيق باقى العمليات والاجراءات التى تخطر على بالك فى الوقت الراهن او لم تخطر حتى الان وقدم تسبب مشاكل فى المستقبل والتى فى النهاية جعلتك تحاول تفكيك التواريخ الى سجلات لنعطى مثال صغير وهذا طبقته بشكل عملى فى مؤسستى لنفترض ان موظف ما قدم طلب اجازة اعتيادية مثلا من يوم 1/7/2025 وحتى 10/7/2025 تتم عملية التسجيل لكل تاريخ سجل منفرد بكود الموظف والتاريخ ونوع اليومية مع استبعاد ايام العطلات من اللوب سواء كانت رسمية او غير رسمية الميزة هنا : عدد السجلات لهذا الموظف وحسب نوع اليومية هو اجمالى ما حصل الموظف عليه او سوف يحصل عليه لهذا النوع ان كانت فى تواريخ مستقبلية طيب لنفترض ان عدد السجلات كان 7 اذا هو يمثل 7 ايام ب 7 تواريخ من تاريخ البدء وحتى تاريخ الانتهاء طيب لفترض ان الموظف اخذ فقط يومين وقطع الاجازة وعاد الى العمل ولم يخبر المختص لاعادة التعديل لأى سبب حتى يتم اعادة ضبط الرصيد وفق الواقع انا صممت استعلام يبدأ مع فتح نموذج التسجيل يطابق هذا الجدول مع جدول الحضور الخاص بالبصمة و وفق التواريخ التى لها بصمة حضور وتساوت مع تواريح فى جدول اليوميات مثلا على انها اجازة يتم حذفها تلقائيا من جدول الاجازات بذلك يتم تصحيح الرصيد بشكل الى وبدون تدخل بشرى اعتقد فرد التواريخ من البداية ليكون كل تاريخ فى سجل له الافضلية ويضفى المرونة القصوى اثناء معالجة البيانات ويلبى العديد من الرغبات بشتى الافكار حسب المتطلبات الحالية أو التى تطرأ فى المستقبل
  1. أظهر المزيد
×
×
  • اضف...

Important Information