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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    180

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

  1. فكرتي في التعديل كالتالي للدالتين :- Public Function funFirstTimeB_in() As Date Dim z As Integer Dim fatrahIn As Date Dim baseDate As Date z = Nz(DLookup("free2_in", "tblTimeCtrl"), 0) fatrahIn = Nz(DLookup("fatrah2_In", "tblTimeCtrl"), #12:00:00 AM#) If CheckTimeBetween() = 1 Then baseDate = Date Else baseDate = DateAdd("d", -1, Date) End If funFirstTimeB_in = DateAdd("n", -z, CDate(fatrahIn & " " & baseDate)) End Function Public Function funLastTimeB_Out() As Date Dim z As Integer, x As Integer, xx As Integer Dim fatrahIn As Date Dim baseDate As Date z = Nz(DLookup("free2_out", "tblTimeCtrl"), 0) x = Nz(DLookup("hours_Work2", "tblTimeCtrl"), 0) fatrahIn = Nz(DLookup("fatrah2_In", "tblTimeCtrl"), #12:00:00 AM#) xx = (x * 60) + z If CheckTimeBetween() = 1 Then baseDate = Date Else baseDate = DateAdd("d", -1, Date) End If funLastTimeB_Out = DateAdd("n", xx, CDate(fatrahIn & " " & baseDate)) End Function ChkInOut_CNet2.zip
  2. ما شاء الله .. فكرة جميلة ومحكمة لتلافي مشكلة الفترة المسائية ( تسجيل الحضور في يوم ، والخروج في اليوم التالي ) .. وبما أنك اكتشفت ثغرة ، فاسمح لي باقتراح وملاحظة بسيطين أيضاً ، وهو أنني لاحظت من خلال الدالتين انهما تستخدمان DLookup في كل عملية ما يقارب 7 مرات . ومع وجود حدث التايمر في النموذج ..... حيث يمكن التعديل بحيث نستخدم استدعاء DLookup تقريباً 3 مرات تقريباً عند كل عملية تسجيل حضور أو انصراف .
  3. بالطبع أخي الكريم ، ما لم تقم بذلك فلن تعرف ما إذا كانت المشكلة قد تم حلها لديك أم لا ..
  4. فكرتي المتواضعة .. dbs2.zip
  5. اعتذر عن التأخير ، إن شاء الله حال وصولي للكمبيوتر 🤗
  6. وعليكم السلام ورحمة الله وبركاته.. اذا ليس هناك داعي للفترة الثالثة ؟؟ ننتظر ابداعك وتميزك معلمي الفاضل 🤗
  7. مشكلتك اخي الكريم في نسخة الأوفيس نفسها. كل الشكر والتقدير للأستاذ @kkhalifa1960 على مساندته بتحويل النسخة للـ 2003 💐
  8. وعليكم السلام ورحمة الله وبركاته .. أعجبتني الفكرة كثيراً بان يكون هناك مرونة وليونة في نص محتوى الشهادة .. فخطر ببالي فكرة أود مشاركتكم ثمارها في الصورة الموضحة تالياً قبل ارفاق الملف .
  9. وعليكم السلام ورحمة الله وبركاته .. صديقي بشار ، سأقوم بإرفاق الدالة التي استعملتها هنا إن شاء الله ، حال توفري أمام كمبيوتري
  10. ما الفائدة من البرنامج إن كان أيضاً الخطأ بشرياً بعدم تسجيل الحضور !!!!! برمجياً وُجد التطبيق لتنظيم الحضور والإنصراف ، خلاف ذلك سيتوجب عليك إظهار تنبيه بعدد الموظفين الذين لم يسجلو حضوراً في هذا اليوم .......... وسيتشعب الموضوع إلى وضع ضوابط كثيرة جداً . لا أشجع على جدولين ، كما أشار معلمي الفاضل @ابوخليل ، فستضطر لخوض معارك كثيرة مع الاستعلامات لتحصل على الفرق في ظل الأخطاء البشرية التي قد تحصل . هذه وجهة نظري الغير ملزمة طبعاً
  11. ليس بالضرورة ان تكون هناك طابعة موصولة !! فالطابعة الإفتراضية في ويندوز لها أيضاً تعريف 😉 .
  12. امممم 🤔 هل يستوجب هذا الأمر وجود مراقب برمجي يقوم بإغلاق دوام الموظفين الغير مسجل لهم انصراف ( في حالات النسيان مثلاً ) ، من خلال زر مثلاً !!!
  13. انظر لملفك بعد التعديل . حاول أن تقوم بتغيير اي قيمة في أي جدول تريده . ثم شغل النموذج واختر الجدول T1 كجدول أول ، و الجدول الثاني T2 ، ثم اختر المفتاح الأساسي الحقل EmpID وانقر زر إيجاد التغييرات . ستجد أنه تم فتح استعلام يحتوي على رقم السجل الذي يوجد به اختلاف . كمثال :- Foksh ID End date 30303030 T1 2024-03-31 - T2 2025-03-31 قمت بتغيير قيمة في السجل التالي من :- T1 EmpID EmpFirstName EmpLastName EmpBirthDay End date 30303030 KAMEL AMAR 1999-01-05 2025-03-31 ليصبح :- T1 EmpID EmpFirstName EmpLastName EmpBirthDay End date 30303030 KAMEL AMAR 1999-01-05 2024-03-31 وبالتالي كانت النتيجة من خلال الأداة كما رأيت في التوضيح الأول أعلاه ، بأنه يوجد سجل تختلف قيمته عن الجدول الثاني . مع تحديد القيمة المختلفة واسم الحقل في الجدولين . ملفك بعد التعديل ، ولا أعلم إن كان سيعمل مع الإصدار 2003 ، ولست أملك هذا الإصدار للتجربة والإفادة . UnMatched.zip
  14. وجب التنبيه بأن هذه الحركة غير صحيحة أبداً ، بأنك جعلت جميع حقول التاريخ والارقام = حقول نصية .
  15. وعليكم السلام ورحمة الله وبركاته ,, تم إضافة الملف المرفق من الموضوع المكرر ، والسبب أن الملف المرفق في هذه المشاركة لم يعمل . ولكن وحسب ما فهمت ، جرب استخدام الأداة التالية في هذا الموضوع :-
  16. وعليكم السلام ورحمة الله وبركاته .. طلبك غريب وغير مفهوم بتاتاً .. أخي الكريم لا تبخل على نفسك في الكتابة والتوضيح للمطلوب .
  17. يا سلااااااااااام عليك .. خطوة جميلة ومفيدة جداً .. أحسن الله إليك مهندسنا الغالي .. يبقى الأمر مرهون بالاتصال بالانترنت ( حتى لو بدون أخطاء عند الإتصال بسيرفر الموقع الذي يغذي النتيجة ) .. جزاكم الله كل الخير ، وأحسن إليك و لوالديك
  18. وعليكم السلام ورحمة الله وبركاته.. قد مررت بهذه المشكلة سابقاً ، ووجدت ان مقاسات التقرير اختلفت بين جهازي وجهاز العميل . ما اضطرني للبحث والإستفسار لأحد أساتذتي في الدراسة ، فكانت الإجابة بكل وضوح هي أن اختلاف تعريف الطابعة في الجهازين هو السبب . ايضاً كانت الملاحظات تتعلق بدقة البكسل في حجم الورقة A4 - رغم أن المساحة واحدة - ولكن أقصد دقة البكسل الواحد في هذه المساحة . جرب كما كانت إحدى تجاربي ، أنني جعلت من خصائص التقرير:- Auto Resize = لا Auto Center = لا Fit to Page = لا
  19. ما عليك سوى استبدال أسماء مربعات النص التي سيتم البحث والفلترة من خلالها ، واسم الحقل المستهدف البحث فيه .. ثم أن الدالة عبارة عن جملتين شرطيتين فقط لا غير 😅 .
  20. وعليكم السلام ورحمة الله وبركاته .. لدي دالة تجلب جميع أرقام الهارد ديسك ( القرص الصلب ) حتى لو كان لديك أكثر من هارد موصول على نفس الكمبيوتر .. Public Function GetAllHardDiskSerials() As String On Error GoTo ErrorHandler Dim objWMIService As Object Dim colDisks As Object Dim objDisk As Object Dim result As String Dim i As Integer Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive") i = 1 For Each objDisk In colDisks If Not IsNull(objDisk.SerialNumber) Then Dim serial As String serial = Trim(objDisk.SerialNumber) If serial <> "" Then result = result & "Disk " & i & ": " & serial & vbCrLf i = i + 1 End If End If Next If result = "" Then GetAllHardDiskSerials = "No serial numbers found" Else GetAllHardDiskSerials = result End If CleanUp: Set objDisk = Nothing Set colDisks = Nothing Set objWMIService = Nothing Exit Function ErrorHandler: GetAllHardDiskSerials = "Error" Resume CleanUp End Function أو هذه الدالة البسيطة أيضاً التي تجلب رقم الهارد الذي تم تثبيت نظام التشغيل ويندوز عليه :- Public Function GetHardDiskSerial2() As String On Error GoTo ErrorHandler Dim objWMIService As Object Dim colDisks As Object Dim objDisk As Object Dim strSerial As String Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive") For Each objDisk In colDisks If Not IsNull(objDisk.SerialNumber) Then strSerial = Trim(objDisk.SerialNumber) If strSerial <> "" Then GetHardDiskSerial2 = strSerial Exit For End If End If Next If GetHardDiskSerial2 = "" Then GetHardDiskSerial2 = "Not Found" End If CleanUp: Set objDisk = Nothing Set colDisks = Nothing Set objWMIService = Nothing Exit Function ErrorHandler: Resume CleanUp End Function والإستدعاء فقط في أي مربع نص = اسم الدالة فقط ، كما في الملف المرفق للتوضيح . HD Serial.zip
  21. مشاركة مع تنفيذ فكرة أستاذنا @kkhalifa1960 ، وبدلاً من الإعتماد على نموذج فرعي للقائمة الفرعية ، هذا تعديل على الفكرة التي تم طرحها سابقاً ، بحيث تم تطبيقها وكأنها Navigation Form .. الملف المرفق :- Menu Navigations.zip
  22. وعليكم السلام ورحمة الله وبركاته .. بما أنك تريد الفلترة على فلترة أخرى أو بدونها . خطر ببالي فكرة كالآتي ، لمنع التكرار في الحدثين لمربعي النص ، قمت بدمج الفكرة في دالة استعلام بسيط ، واستخدام الدالة Like ليكون البحث والفلترة حتى لو بجزء مطابق من النص :- Private Sub ApplyFilter() Dim filterCondition As String filterCondition = "" If Nz(Me.Combo7, "") <> "" Then filterCondition = "[namee] Like '*" & Me.Combo7 & "*'" End If If Nz(Me.Text9, "") <> "" Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " filterCondition = filterCondition & "[town] Like '*" & Me.Text9 & "*'" End If Me.Filter = filterCondition Me.FilterOn = (filterCondition <> "") Me.Requery End Sub وبالتالي ، للحدثين بعد التحديث لمربعي النص ، استدعيها نفسها بهذا الشكل :- Private Sub Combo7_AfterUpdate() ApplyFilter End Sub Private Sub Text9_AfterUpdate() ApplyFilter End Sub وكإضافة ، قمت بإنشاء زر لإلغاء الفلترة وعرض السجلات كاملة . من خلال الزر :- Private Sub Command20_Click() Me.Combo7 = Null Me.Text9 = Null Me.FilterOn = False Me.Requery End Sub ملفك بعد التطبيق :- Database6.zip
  23. وعليكم السلام ورحمة الله وبركاته.. لم أطلع على المرفق ، ولكن خطر ببالي استخدام التالي للسماح للماكرو او المعادلة بالاستمرار بالترقيم وعدم السماح بالتعديل من خلال:- UserInterfaceOnly:=True
  24. 3 سجلات بناءً على ماذا ؟؟؟؟؟؟؟؟؟ انظر لنتيجة الشرط على سبيل المثال 936/2025 من الجدول الأول :- TAB1 innow oprate note_E Awarding SERR 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025.05.28 7071 سجل واحد . والجدول الثاني لنفس الفلترة :- TAB2 innow nooprat oprate MRNo Date Of Recipt id 2025-05-22 9:56:58 AM 2200021005 936/2025 1264/2025 2025.05.22 8222 2025-05-22 10:06:07 AM 2200021007 936/2025 1265/2025 2025.05.22 8223 سجلين اثنين . والجدول الثالث بنفس الفلترة :- TAB3 inday orderNO elcNO oprate id 2025-05-27 7:29:01 AM 5594/2025 5300221097 936/2025 8629 2025-05-27 7:29:55 AM 5595/2025 5300221100 936/2025 8630 2025-05-27 7:30:25 AM 5596/2025 5300221102 936/2025 8631 3 سجلات . فما هو الشرط الذي سيتم عرض 3 سجلات فقط ( بناءً على معرفتك بالسجلات وماهيتها ) ؟؟؟؟؟؟؟؟ فهم السؤال بالنسبة لي = الجواب كاملاً وليس نصفه . جربت هذا الإستعلام :- SELECT TAB1.innow, TAB1.oprate, TAB1.note_E, TAB1.Awarding, TAB1.SERR, TAB2.innow AS T2_innow, TAB2.nooprat, TAB2.MRNo, TAB2.[Date Of Recipt], TAB2.id AS T2_id, NULL AS inday, NULL AS orderNO, NULL AS elcNO, NULL AS T3_id FROM TAB1 INNER JOIN TAB2 ON TAB1.oprate = TAB2.oprate WHERE TAB1.oprate = '936/2025' UNION ALL SELECT TAB1.innow, TAB1.oprate, TAB1.note_E, TAB1.Awarding, TAB1.SERR, NULL AS T2_innow, NULL AS nooprat, NULL AS MRNo, NULL AS [Date Of Recipt], NULL AS T2_id, TAB3.inday, TAB3.orderNO, TAB3.elcNO, TAB3.id AS T3_id FROM TAB1 INNER JOIN TAB3 ON TAB1.oprate = TAB3.oprate WHERE TAB1.oprate = '936/2025'; والذي كانت نتيجته كمثال على نفس الفلترة = Query2 innow oprate note_E Awarding SERR T2_innow nooprat MRNo Date Of Recipt T2_id inday orderNO elcNO 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025-05-28 7071 2025-05-22 9:56:58 AM 2200021005 1264/2025 2025-05-22 9:56:59 AM 8222 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025-05-28 7071 2025-05-22 10:06:07 AM 2200021007 1265/2025 2025-05-22 10:06:07 AM 8223 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025-05-28 7071 2025-05-27 7:29:01 AM 5594/2025 5300221097 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025-05-28 7071 2025-05-27 7:29:55 AM 5595/2025 5300221100 2025-05-22 9:56:02 AM 936/2025 جارى الدراسة 2025-05-28 7071 2025-05-27 7:30:25 AM 5596/2025 5300221102 ومع ذلك لم أفهم شرطك أو المطلوب .
  25. وعليكم السلام ورحمة الله وبركاته .. كمطلب أول :- جرب هذا الإستعلام .. SELECT TAB1.innow, TAB1.oprate, TAB1.note_E, TAB1.Awarding, TAB1.SERR, TAB2.innow AS T2_innow, TAB2.nooprat, TAB2.MRNo, TAB2.[Date Of Recipt], TAB2.id AS T2_id, TAB3.inday, TAB3.orderNO, TAB3.elcNO, TAB3.id AS T3_id FROM (TAB1 LEFT JOIN TAB2 ON TAB1.oprate = TAB2.oprate) LEFT JOIN TAB3 ON TAB1.oprate = TAB3.oprate WHERE (((TAB1.oprate)=[أدخل قيمة للفلترة]));
×
×
  • اضف...

Important Information