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

Foksh

أوفيسنا
  • Posts

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

  • Days Won

    207

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

  1. أين التقرير في مرفقك للتطبيق والتجربة ؟؟
  2. وعليكم السلام ورحمة الله وبركاته .. تم تعديل المديول ليصبح :- Option Compare Database Option Explicit Function PartOfName(InName As String, NumberOfPart As Byte) As String Dim parts() As String Dim tempName As String Dim i As Integer Dim currentIndex As Integer Dim normalizedParts() As String Dim j As Integer tempName = Trim(InName) PartOfName = "" If tempName = "" Then Exit Function tempName = Replace(tempName, " -", " - ") tempName = Replace(tempName, "- ", " - ") tempName = Replace(tempName, " ", " ") parts = Split(tempName, " - ") currentIndex = 0 ReDim normalizedParts(0 To 0) For i = 0 To UBound(parts) If Trim(parts(i)) <> "" Then normalizedParts(currentIndex) = Trim(parts(i)) If i < UBound(parts) Then ReDim Preserve normalizedParts(0 To currentIndex + 1) currentIndex = currentIndex + 1 End If End If Next i If UBound(normalizedParts) > 0 Then If NumberOfPart - 1 <= UBound(normalizedParts) Then PartOfName = Trim(normalizedParts(NumberOfPart - 1)) End If Else Dim words() As String words = Split(tempName, " ") If NumberOfPart - 1 <= UBound(words) Then PartOfName = Trim(words(NumberOfPart - 1)) End If End If End Function Function NoSpaces(InName As String) As String Dim NewName As String Dim i As Integer Dim TheStr As String Dim ThePrevStr As String InName = Trim(InName) For i = 1 To Len(InName) TheStr = Mid(InName, i, 1) If TheStr = " " And ThePrevStr = " " Then TheStr = "" If TheStr <> "" Then ThePrevStr = TheStr NewName = NewName & TheStr Next NoSpaces = NewName End Function وتم تعديل الإستعلام ليصبح :- SELECT Table1.Name, PartOfName([Name],1) AS Firstname, PartOfName([Name],2) AS Secondname, PartOfName([Name],3) AS Thirdname, PartOfName([Name],4) AS Forthname, PartOfName([Name],5) AS SubFamily, PartOfName([Name],6) AS Family, [SubFamily] & " " & [Family] AS Familyname FROM Table1 WITH OWNERACCESS OPTION; ملفك بعد التعديل :- فصل ماقبل المطة.zip
  3. وعليكم السلام ورحمة الله وبركاته .. استخدم في حدث في الحالي الكود التالي :- If Me.NewRecord Then Me.AllowAdditions = True Me.AllowEdits = True Me.AllowDeletions = True Else Me.AllowEdits = False Me.AllowDeletions = False End If وفي حدث بعد الإضافة للنموذج الحدث التالي :- Private Sub Form_AfterInsert() Me.AllowEdits = False Me.AllowDeletions = False End Sub ملفك بعد التطبيق :- 123452025.zip
  4. تمام ، وبما أنك تحاكي اختبار لمنطق الورديات .. فإن اسناد قيمة إلى دالة مدمجة في اكسيس مثل Time بحد ذاته غير منطقي ( وجهة نظري طبعاً ) . وبالتالي فإن الحل الأفضل هو جعل الدوال تستقبل الوقت كـ باراميتر ، أو إنشاء دالة وسيطة تعيد الوقت الحالي . واعتذر إن جررت الحديث خارج محتوى الموضوع
  5. وهذه الإجابة التي انتظرها لتأكيد رواية "اني لأشم ريح يوسف" وأعلم أنها ليست من فراغ وارجو ان يتسع صدرك لحديثنا هذا بأن توضح لي المقصود من الدالة Public Function TestShiftLogic(Optional testTime As Date = 0) As String If testTime = 0 Then testTime = Now() Dim originalTime As Date: originalTime = Time() Time = testTime ' اختبار مؤقت TestShiftLogic = "الوقت: " & Format(testTime, "hh:nn:ss") & " → " & GetCurrentShiftInfo() Time = originalTime ' إعادة الوقت الأصلي End Function هل تحاول تغيير وقت النظام ( في الكمبيوتر ) فعلياً بهذه الدالة ؟؟؟؟
  6. رداً على هذه النقطة ، وحيث أنه سبق تنفيذها سابقاً .. جرب المرفق نفسه بعد التعديل بحيث سيتم فقط عرض الخطوط العربية ( أو التي تتعامل مع الكاركتر العربي ) في الكومبوبوكس . مع إضافة الفرز التصاعدي للأسماء :- Db3.zip
  7. افتح موضوع جديد ، وارفق ملفك وإن شاء الله تجد حل لمشكلتك .
  8. فكرتي في التعديل كالتالي للدالتين :- 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
  9. ما شاء الله .. فكرة جميلة ومحكمة لتلافي مشكلة الفترة المسائية ( تسجيل الحضور في يوم ، والخروج في اليوم التالي ) .. وبما أنك اكتشفت ثغرة ، فاسمح لي باقتراح وملاحظة بسيطين أيضاً ، وهو أنني لاحظت من خلال الدالتين انهما تستخدمان DLookup في كل عملية ما يقارب 7 مرات . ومع وجود حدث التايمر في النموذج ..... حيث يمكن التعديل بحيث نستخدم استدعاء DLookup تقريباً 3 مرات تقريباً عند كل عملية تسجيل حضور أو انصراف .
  10. بالطبع أخي الكريم ، ما لم تقم بذلك فلن تعرف ما إذا كانت المشكلة قد تم حلها لديك أم لا ..
  11. فكرتي المتواضعة .. dbs2.zip
  12. اعتذر عن التأخير ، إن شاء الله حال وصولي للكمبيوتر 🤗
  13. وعليكم السلام ورحمة الله وبركاته.. اذا ليس هناك داعي للفترة الثالثة ؟؟ ننتظر ابداعك وتميزك معلمي الفاضل 🤗
  14. مشكلتك اخي الكريم في نسخة الأوفيس نفسها. كل الشكر والتقدير للأستاذ @kkhalifa1960 على مساندته بتحويل النسخة للـ 2003 💐
  15. وعليكم السلام ورحمة الله وبركاته .. أعجبتني الفكرة كثيراً بان يكون هناك مرونة وليونة في نص محتوى الشهادة .. فخطر ببالي فكرة أود مشاركتكم ثمارها في الصورة الموضحة تالياً قبل ارفاق الملف .
  16. وعليكم السلام ورحمة الله وبركاته .. صديقي بشار ، سأقوم بإرفاق الدالة التي استعملتها هنا إن شاء الله ، حال توفري أمام كمبيوتري
  17. ما الفائدة من البرنامج إن كان أيضاً الخطأ بشرياً بعدم تسجيل الحضور !!!!! برمجياً وُجد التطبيق لتنظيم الحضور والإنصراف ، خلاف ذلك سيتوجب عليك إظهار تنبيه بعدد الموظفين الذين لم يسجلو حضوراً في هذا اليوم .......... وسيتشعب الموضوع إلى وضع ضوابط كثيرة جداً . لا أشجع على جدولين ، كما أشار معلمي الفاضل @ابوخليل ، فستضطر لخوض معارك كثيرة مع الاستعلامات لتحصل على الفرق في ظل الأخطاء البشرية التي قد تحصل . هذه وجهة نظري الغير ملزمة طبعاً
  18. ليس بالضرورة ان تكون هناك طابعة موصولة !! فالطابعة الإفتراضية في ويندوز لها أيضاً تعريف 😉 .
  19. امممم 🤔 هل يستوجب هذا الأمر وجود مراقب برمجي يقوم بإغلاق دوام الموظفين الغير مسجل لهم انصراف ( في حالات النسيان مثلاً ) ، من خلال زر مثلاً !!!
  20. انظر لملفك بعد التعديل . حاول أن تقوم بتغيير اي قيمة في أي جدول تريده . ثم شغل النموذج واختر الجدول 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
  21. وجب التنبيه بأن هذه الحركة غير صحيحة أبداً ، بأنك جعلت جميع حقول التاريخ والارقام = حقول نصية .
  22. وعليكم السلام ورحمة الله وبركاته ,, تم إضافة الملف المرفق من الموضوع المكرر ، والسبب أن الملف المرفق في هذه المشاركة لم يعمل . ولكن وحسب ما فهمت ، جرب استخدام الأداة التالية في هذا الموضوع :-
  23. وعليكم السلام ورحمة الله وبركاته .. طلبك غريب وغير مفهوم بتاتاً .. أخي الكريم لا تبخل على نفسك في الكتابة والتوضيح للمطلوب .
  24. يا سلااااااااااام عليك .. خطوة جميلة ومفيدة جداً .. أحسن الله إليك مهندسنا الغالي .. يبقى الأمر مرهون بالاتصال بالانترنت ( حتى لو بدون أخطاء عند الإتصال بسيرفر الموقع الذي يغذي النتيجة ) .. جزاكم الله كل الخير ، وأحسن إليك و لوالديك
×
×
  • اضف...

Important Information