-
Posts
4255 -
تاريخ الانضمام
-
Days Won
180
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
اعتذر عن التأخير ، إن شاء الله حال وصولي للكمبيوتر 🤗
-
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته.. اذا ليس هناك داعي للفترة الثالثة ؟؟ ننتظر ابداعك وتميزك معلمي الفاضل 🤗 -
مشكلتك اخي الكريم في نسخة الأوفيس نفسها. كل الشكر والتقدير للأستاذ @kkhalifa1960 على مساندته بتحويل النسخة للـ 2003 💐
-
وعليكم السلام ورحمة الله وبركاته .. أعجبتني الفكرة كثيراً بان يكون هناك مرونة وليونة في نص محتوى الشهادة .. فخطر ببالي فكرة أود مشاركتكم ثمارها في الصورة الموضحة تالياً قبل ارفاق الملف .
-
وعليكم السلام ورحمة الله وبركاته .. صديقي بشار ، سأقوم بإرفاق الدالة التي استعملتها هنا إن شاء الله ، حال توفري أمام كمبيوتري
-
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
ما الفائدة من البرنامج إن كان أيضاً الخطأ بشرياً بعدم تسجيل الحضور !!!!! برمجياً وُجد التطبيق لتنظيم الحضور والإنصراف ، خلاف ذلك سيتوجب عليك إظهار تنبيه بعدد الموظفين الذين لم يسجلو حضوراً في هذا اليوم .......... وسيتشعب الموضوع إلى وضع ضوابط كثيرة جداً . لا أشجع على جدولين ، كما أشار معلمي الفاضل @ابوخليل ، فستضطر لخوض معارك كثيرة مع الاستعلامات لتحصل على الفرق في ظل الأخطاء البشرية التي قد تحصل . هذه وجهة نظري الغير ملزمة طبعاً -
ليس بالضرورة ان تكون هناك طابعة موصولة !! فالطابعة الإفتراضية في ويندوز لها أيضاً تعريف 😉 .
-
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
امممم 🤔 هل يستوجب هذا الأمر وجود مراقب برمجي يقوم بإغلاق دوام الموظفين الغير مسجل لهم انصراف ( في حالات النسيان مثلاً ) ، من خلال زر مثلاً !!! -
انظر لملفك بعد التعديل . حاول أن تقوم بتغيير اي قيمة في أي جدول تريده . ثم شغل النموذج واختر الجدول 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
-
وجب التنبيه بأن هذه الحركة غير صحيحة أبداً ، بأنك جعلت جميع حقول التاريخ والارقام = حقول نصية .
-
وعليكم السلام ورحمة الله وبركاته ,, تم إضافة الملف المرفق من الموضوع المكرر ، والسبب أن الملف المرفق في هذه المشاركة لم يعمل . ولكن وحسب ما فهمت ، جرب استخدام الأداة التالية في هذا الموضوع :-
-
وعليكم السلام ورحمة الله وبركاته .. طلبك غريب وغير مفهوم بتاتاً .. أخي الكريم لا تبخل على نفسك في الكتابة والتوضيح للمطلوب .
-
يا سلااااااااااام عليك .. خطوة جميلة ومفيدة جداً .. أحسن الله إليك مهندسنا الغالي .. يبقى الأمر مرهون بالاتصال بالانترنت ( حتى لو بدون أخطاء عند الإتصال بسيرفر الموقع الذي يغذي النتيجة ) .. جزاكم الله كل الخير ، وأحسن إليك و لوالديك
-
وعليكم السلام ورحمة الله وبركاته.. قد مررت بهذه المشكلة سابقاً ، ووجدت ان مقاسات التقرير اختلفت بين جهازي وجهاز العميل . ما اضطرني للبحث والإستفسار لأحد أساتذتي في الدراسة ، فكانت الإجابة بكل وضوح هي أن اختلاف تعريف الطابعة في الجهازين هو السبب . ايضاً كانت الملاحظات تتعلق بدقة البكسل في حجم الورقة A4 - رغم أن المساحة واحدة - ولكن أقصد دقة البكسل الواحد في هذه المساحة . جرب كما كانت إحدى تجاربي ، أنني جعلت من خصائص التقرير:- Auto Resize = لا Auto Center = لا Fit to Page = لا
-
ما عليك سوى استبدال أسماء مربعات النص التي سيتم البحث والفلترة من خلالها ، واسم الحقل المستهدف البحث فيه .. ثم أن الدالة عبارة عن جملتين شرطيتين فقط لا غير 😅 .
-
وعليكم السلام ورحمة الله وبركاته .. لدي دالة تجلب جميع أرقام الهارد ديسك ( القرص الصلب ) حتى لو كان لديك أكثر من هارد موصول على نفس الكمبيوتر .. 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
-
مشاركة مع تنفيذ فكرة أستاذنا @kkhalifa1960 ، وبدلاً من الإعتماد على نموذج فرعي للقائمة الفرعية ، هذا تعديل على الفكرة التي تم طرحها سابقاً ، بحيث تم تطبيقها وكأنها Navigation Form .. الملف المرفق :- Menu Navigations.zip
-
وعليكم السلام ورحمة الله وبركاته .. بما أنك تريد الفلترة على فلترة أخرى أو بدونها . خطر ببالي فكرة كالآتي ، لمنع التكرار في الحدثين لمربعي النص ، قمت بدمج الفكرة في دالة استعلام بسيط ، واستخدام الدالة 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
-
لايتم ادراج صفوف مع ترقيم تلقائي في حال كانت الورقة محمية . هل من حل؟
Foksh replied to سك بابك's topic in منتدى الاكسيل Excel
وعليكم السلام ورحمة الله وبركاته.. لم أطلع على المرفق ، ولكن خطر ببالي استخدام التالي للسماح للماكرو او المعادلة بالاستمرار بالترقيم وعدم السماح بالتعديل من خلال:- UserInterfaceOnly:=True -
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 ومع ذلك لم أفهم شرطك أو المطلوب .
-
وعليكم السلام ورحمة الله وبركاته .. كمطلب أول :- جرب هذا الإستعلام .. 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)=[أدخل قيمة للفلترة]));
-
شكراً للمشاركة الخفيفة .. ولي تعليقان ، قد يكون الأول سهواً أو خطأ مطبعي . وهو أن الإستدعاء ليس صحيحاً باسم الدالة المرفقة . ثانياً الدالة ستقوم بفتح التقرير ، ولكن ليس هناك أي أمر طباعة . وأفترض أنه قد يكون التعديل الصحيح للفكرة :- Public Function PrintMultipleCopies(strReportName As String, _ bytNumberOfCopies As Byte) Dim i As Integer For i = 1 To bytNumberOfCopies DoCmd.OpenReport strReportName, acViewNormal Next i End Function والإستدعاء :- Call PrintMultipleCopies("اسم التقرير", 2) حيث هنا عدد النسخ المطلوب طباعتها = 2
-
أخي الكريم بداية ، أهلاً بك مرة أخرى في المنتدى ،، ثانياً لتلافي حذف أي موضوع ، ليس عليك تكرار فتحه بموضوع جديد مستقل ، بل يكفي ان تستخدم اسلوب النداء "للرفع" أو "Up" . ثالثاً ، ولضيق الوقت ، سأرفق لك ملف من مكتبتي ، جربته ولعله تستفيد منه بالشكل الصحيح . Menu-1.zip
-
Private Sub detaché_AfterUpdate() On Error GoTo Err_detaché_Click If IsNull(Me.TxtMonth) Then MsgBox "اختر الشهر" Exit Sub End If Dim Titles1 As Variant Dim Titles2 As Variant Titles1 = Array("مصالح البلدية", "متعاقدين 8 سا", "عمال متعاقدين 5 سا", "حراس متعاقدين 5 سا", "اعوان النظافة والتطهير") Titles2 = Array("للعمال الموظفين", "للعمال المتعاقدين بالتوقيت الكامل", "للعمال المتعاقدين بالتوقيت الجزئي", "للحراس المتعاقدين بالتوقيت الجزئي", "للعمال اعوان النظافة والتطهير") Dim idx As Long idx = Me.detaché.ListIndex If idx < 0 Then Exit Sub Me.Reporte_Title.Visible = False Me.Reporte_Title = Titles1(idx) Me.Report_Title = Titles2(idx) Dim Copies As Long Copies = 3 ' يمكن ربطه بمربع نص في النموذج أو وضع رقم ثابت DoCmd.OpenReport "rptDiscount", acPreview, , , , "qry_rptD|" & Copies Exit Sub Err_detaché_Click: If Err.Number = 2501 Then Resume Next End Sub واعتذر عن المتابعة ، لأسباب صحية
-
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
Foksh replied to ابوخليل's topic in قسم الأكسيس Access
فشلت محاولتي في ضبط الوقت والتاريخ الآلي من خلال آكسيس ، فالأفكار التي كانت لدي تعتمد على تشغيل آكسيس كمسؤول . وهذا ما لا يمكن تقييد المستخدم به . سأحاول بطريقة أخرى