samisalim قام بنشر يناير 22, 2022 الكاتب قام بنشر يناير 22, 2022 (معدل) 10 ساعات مضت, ابوخليل said: تمام اخوي سامي اعتقد اننا استوفينا حركة العهد بالكامل ، واختزلناها في واجهة واحدة واصبحت اكثر احكاما واتقانا 80% من العمل سيكون على هذا النموذج نعم وهذا بفضل الله ثم بفضلكم 10 ساعات مضت, ابوخليل said: هل لاحظت اننا لم نعمل او نحتاج لأي استعلام خارجي نعم استاذ خليل وبهذا الطريقة نجعل البرنامج اخف واسرع 10 ساعات مضت, ابوخليل said: يمكننا ايضا ان نختزل النماذج المساعدة ( المتشابههة في عدد الحقول) ذكرت لك هذا لاني رأيتك طالب علم شغف بالتعلم مثال على ذلك الجداول التالية معرف نوع الجهاز-الماركة-الموديل-المورد نختزلهن في جدول واحد. اشكرك استاذ أبو خليل على ثقتك الدائمة وتشجيعك المستمر واتمنى أكون على حسن الظن وبارك الله فيكم بما تقدموه من تسهيلات في تعلم البرمجة. تم تعديل يناير 22, 2022 بواسطه samisalim
ابوخليل قام بنشر يناير 22, 2022 قام بنشر يناير 22, 2022 بالنسبة للجداول لن تتغير ابدا وايضا النماذج لا يمكننا توحيدها الآن لاننا جعلنا مصدر بيانات النموذج استعلام داخلي يشتمل على معيار الحذف .. الذي هو في الحقيقة اخفاء لو جعلنا الحذف حقيقي ( واصبح المصدر حر بدون معيار) لأمكن دمج النماذج المتشابهة مع بعضها كنموذج واحد . لهذا عملت لك تجميع المتشابه ضمن مكان واحد .. انظر فورم frmBasicInformation ويمكن اضاقة نماذج اخرى داخله حسب الرغبة . فاختر ما يناسبك او تبقى على الوضع الحالي بحيث تنادي كل نموذج بزر يخصه بعد ان تقرر ما الذي يناسبك في التوضيح اعلاه يتبقى من النماذج اثنان او ثلاثة وجدول جديد 0- جدول للمستخدمين 1- نموذج الدخول بكلمة مرور فقط 2- نموذج لتغيير كلمة المرور وهي نفسها لتسجيل مستخدم جديد 3 - نموذج بداية ويشتمل على ازرار التنقل بالنسبة لصلاحية الدخول اذا تريد بيانات تاريخية للمستخدم الذي قام بعمليات الحركة من استلام وتسليم واعارة فنحن بحاجة الى اضافة حقل للمستخدم في جدول التفاصيل وحيث ان مشروعنا صغير ومحصور فيمكننا حصر الصلاحية بين مدير ومستخدم ، ونعمل على حجب النماذج المساعدة عن المستخدم .. بحيث يشاهد فقط نموذج الحركة والتقارير devicesdb12.rar
samisalim قام بنشر يناير 22, 2022 الكاتب قام بنشر يناير 22, 2022 7 ساعات مضت, ابوخليل said: بالنسبة للجداول لن تتغير ابدا وايضا النماذج لا يمكننا توحيدها الآن لاننا جعلنا مصدر بيانات النموذج استعلام داخلي يشتمل على معيار الحذف .. الذي هو في الحقيقة اخفاء لو جعلنا الحذف حقيقي ( واصبح المصدر حر بدون معيار) لأمكن دمج النماذج المتشابهة مع بعضها كنموذج واحد . لهذا عملت لك تجميع المتشابه ضمن مكان واحد .. انظر فورم frmBasicInformation ويمكن اضاقة نماذج اخرى داخله حسب الرغبة . فاختر ما يناسبك او تبقى على الوضع الحالي بحيث تنادي كل نموذج بزر يخصه بعد ان تقرر ما الذي يناسبك في التوضيح اعلاه يتبقى من النماذج اثنان او ثلاثة وجدول جديد 0- جدول للمستخدمين 1- نموذج الدخول بكلمة مرور فقط 2- نموذج لتغيير كلمة المرور وهي نفسها لتسجيل مستخدم جديد 3 - نموذج بداية ويشتمل على ازرار التنقل بالنسبة لصلاحية الدخول اذا تريد بيانات تاريخية للمستخدم الذي قام بعمليات الحركة من استلام وتسليم واعارة فنحن بحاجة الى اضافة حقل للمستخدم في جدول التفاصيل وحيث ان مشروعنا صغير ومحصور فيمكننا حصر الصلاحية بين مدير ومستخدم ، ونعمل على حجب النماذج المساعدة عن المستخدم .. بحيث يشاهد فقط نموذج الحركة والتقارير devicesdb12.rar 89.92 kB · 4 downloads أحسنت استاذ أبو خليل وفكرة ممتازة في تجمبع النماذج طرأت على بالي فكرة في دمج حقول جدولي القسم والدائرة في جدول اسم المستخدم بعدهها نتخلص من جدولين ونموذجهما بحيث يكون ادخال البيانات عن طريق نموذج الموظفين مع استخدام خاصيةSELECT DISTINCT في حقلي الدائرة والقسم. هل ياتراه سوف تنجح الفكرة أو الاحسن في نظرك نحط الجدولي كما هما للخدمة.
ابوخليل قام بنشر يناير 23, 2022 قام بنشر يناير 23, 2022 اعجبتك فكرة الدمج الجداول المساعدة ليس لها تأثير على قاعدة البيانات مهما زادت .. فرأيي ان تبقى كما هي بل بقاؤها افضل فيما لو احتجنا اليها داخل الاستعلامات .. حيث لو اردنا ادراج معايير فستكون العملية افضل . انا مع الدمج اذا تحقق شرط الدمج .. وهو الاتفاق في المعنى الذي وجد من اجله فمثلا الموظفون والمدارس والمستعيرون والمستودع يشملهم معنى واحد وهو اشتراكهم باستلام الاجهزة وتسجيلها كعهدة عندهم . القسم والدائرة ينتسب لها الموظف او المستعير الذي الجهاز في عهدته اذا تسجيل العهدة يتم باسم القسم والدائرة ليس شخصا بعينه فالدمج جائز ومتاح
samisalim قام بنشر يناير 23, 2022 الكاتب قام بنشر يناير 23, 2022 5 ساعات مضت, ابوخليل said: اعجبتك فكرة الدمج الجداول المساعدة ليس لها تأثير على قاعدة البيانات مهما زادت .. فرأيي ان تبقى كما هي بل بقاؤها افضل فيما لو احتجنا اليها داخل الاستعلامات .. حيث لو اردنا ادراج معايير فستكون العملية افضل . انا مع الدمج اذا تحقق شرط الدمج .. وهو الاتفاق في المعنى الذي وجد من اجله فمثلا الموظفون والمدارس والمستعيرون والمستودع يشملهم معنى واحد وهو اشتراكهم باستلام الاجهزة وتسجيلها كعهدة عندهم . القسم والدائرة ينتسب لها الموظف او المستعير الذي الجهاز في عهدته اذا تسجيل العهدة يتم باسم القسم والدائرة ليس شخصا بعينه فالدمج جائز ومتاح نعم استاذ أبو خليل ما هي المرحلة القادمة هل ادمج النماذج المتبقية مثل ما انت قمت بعمله لكي نعمل في ملف واحد
ابوخليل قام بنشر يناير 23, 2022 قام بنشر يناير 23, 2022 اعمل ما يحلو لك .. حسب ما تراه مناسبا اذا اكتملت النماذج لديك ؛ ادخل بيانات متنوعة كاملة وابدأ في تصميم تقاريرك ملحوظة : ارى ان تؤجل عمل نموذج البداية والصلاحيات الى انتهاء البرنامج
samisalim قام بنشر يناير 23, 2022 الكاتب قام بنشر يناير 23, 2022 3 دقائق مضت, ابوخليل said: اعمل ما يحلو لك .. حسب ما تراه مناسبا اذا اكتملت النماذج لديك ؛ ادخل بيانات متنوعة كاملة وابدأ في تصميم تقاريرك ملحوظة : ارى ان تؤجل عمل نموذج البداية والصلاحيات الى انتهاء البرنامج بإذن الله تعالى جزاك الله خيرا أخي ومعلمي الغالي أبو خليل في ميزان حسناتكم على كل ما تقدموه من علم ينتفع به
samisalim قام بنشر فبراير 2, 2022 الكاتب قام بنشر فبراير 2, 2022 السلام عليكم ورحمة الله وبركاته تم إضافة جداول مساعدة (للولاية - القرية - معالج الجهاز ) تم إضافة في جدول نوع المستخدم سجل (الإحلال والأقسام) تم إضافة نماذج (المستودع - معالج الجهاز) تم إضافة نموذج خاص لإضافة جهة التي سوف يتم صرف الأجهزة التعليمة عند صرف الاجهزة التعليمية مثل الطابعة - وآلة النسخ وتصوير - وغيرها ) إلى قسم معين تم دمج النماذج (بيانات الأجهزة - نوع الجهاز - الماركة - الموديل - نظام التشغيل - المعالج - المورد ) في نموذج واحد بأسم frmBasicDeviceInfrmation تم دمج النماذج (الموظفين - المدارس - اسم المستعير - الدوائر - الأقسام - القسم / المرفق المدرسي) في نموذج واحد بأسم frmBasicUserInfrmation تم إضافة التقارير التالية حصر بيانات أجهزة الحاسب الآلي بمكاتب المديرية(rptComputerDataInDirectorateOffices) حصر بيانات أجهزة الحاسب الآلي بمكاتب المدرسية(rptComputerDataInSechoolOffices) حصر بيانات الأجهزة التعليمية المديرية والمدرسية(rptEducationalDevicesDataInSechoolAndDirectorate ) استاذ @ابوخليلواجهتني مشكلة عند إرجاع جهاز أو مناقلة جهاز بين الموظفين أو المدارس أو الأقسام يظهر أكثر من سجل للجهاز في التقرير فما الحل لتفادي عملية التكرار . devicesdb12 -6.rar
ابوخليل قام بنشر فبراير 2, 2022 قام بنشر فبراير 2, 2022 52 دقائق مضت, samisalim said: استاذ @ابوخليلواجهتني مشكلة عند إرجاع جهاز أو مناقلة جهاز بين الموظفين أو المدارس أو الأقسام يظهر أكثر من سجل للجهاز في التقرير فما الحل لتفادي عملية التكرار . تحتاج الى معيار يضبط العملية المعيار على ارض الواقع ان الذي سجل له تاريخ تسليم الجهاز لا يظهر وانما الذي يظهر هو من سجل له تاريخ استلام فقط ولم يسجل له تاريخ تسليم هنا في استعلام التقرير تدرج حقل تاريخ التسليم من جدول الحركات وتضع له المعيار التالي Is Null 1
samisalim قام بنشر فبراير 2, 2022 الكاتب قام بنشر فبراير 2, 2022 7 ساعات مضت, ابوخليل said: تحتاج الى معيار يضبط العملية المعيار على ارض الواقع ان الذي سجل له تاريخ تسليم الجهاز لا يظهر وانما الذي يظهر هو من سجل له تاريخ استلام فقط ولم يسجل له تاريخ تسليم هنا في استعلام التقرير تدرج حقل تاريخ التسليم من جدول الحركات وتضع له المعيار التالي Is Null جزاك الله خير استاذ ابو خليل جربت المعيار والامور طيبة
jjafferr قام بنشر فبراير 5, 2022 قام بنشر فبراير 5, 2022 السلام عليكم 🙂 اخوي ابوخليل ، الله يعطيك الصحة والعافية ، شغل جميل وخفيف 🙂 اخوي سامي ، طبعا هذه ملاحظات عامة ، واهميتها هي لتسريع عمل البرنامج ، وتجنب الاخطاء 🙂 تركت ملاحظتي سابقا في ٨/١/٢٠٢٢ at 13:34, jjafferr said: اما فهرست الحقول ، فهذا يتم على خطوتين: عند عمل علاقات بين الجداول ، ثم لاحقا ، لكل حقل نعمل له فرز ، او تصفية (بمعيار) ، سواء في الاستعلام او الكود 🙂 والآن الى التفاصيل من واقع مرفقك في مشاركتك الاخيرة اعلاه ، وبدون ترتيب: الكود : 1. كل مكان عندك الامر Dcount ، مثل DCount("aaa","ttt") او DCount("aaa","ttt","ccc="& ddd) ، احذف aaa واستعمل النجمة * ، يعني Dcount("*","ttt") هذا يعطيك نفس النتيجة ، ولكنه اسرع ، لأنه يطلب عدد السجلات دون ان يعمل فرز لإسم الحقل وحساب عدد سجلاته. 2. كل مكان عندك الامر DCount("aaa","ttt","ccc="& ddd) ، الحقل ccc يجب ان يكون مفرس في الجدول (تسمح بالتكرار او لا ، يعتمد على دور الحقل في الجدول) ، وهذا ينطبق على الاوامر Dlookup و Dmax وووو ، فالمثال التالي ، الحقل ename يجب ان يكون مفهرس DCount("ename", "tblUsersName", "[ename]= '" & Trim(Me.ename) & "'") 3. في كل مكان في الكود ، اذا كنت ستستخدم اسم احد حقول النموذج ، فاستخدم كلمة .Me او !Me قبل الاسم ، حتى بعد سنين لما ترجع للكود ، تعرف ان هذا ليس متغير وانما هو اسم حقل. 4. في راس كل صفحة الكود استخدم السطرين Option Compare Database Option Explicit حتى تضطر ان تصرح عن المتغير المستعمل عن طريق Dim ، حتى يعمل الكود بطريقة اسرع ، وانت تعرف نوع المتغير وتعرف مكان الخطأ. 5. عند كتابة الكود ، وبين كل فترة واخرى استعمل Debug>Compile ، حتى ترى اذا كان الكود فيه اخطاء (انا عملت اختصار له في القائمة) ، انظر احد الاخطاء الموجود عندك مثلا: . 6. من الجميل عمل تنسيق الكود ، حتى تعرف من رؤيته ، بداية ونهاية الحلقات ، مثلا ، بدلا عن Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub اكتب Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub 7. اختصر الكلمات الطويلة ، حتى تستطيع ان تقرأها بسهولة : فبدلا عن Forms!frmdevDetails!frmDetails!userType.Enabled = False Forms!frmdevDetails!frmDetails!users.Enabled = False Forms!frmdevDetails!frmDetails!receiveDate.Enabled = False Forms!frmdevDetails!frmDetails!idOffice.Enabled = False Forms!frmdevDetails!frmDetails!dateHireEnd.Enabled = False Forms!frmdevDetails!frmDetails!returnDate.Enabled = True استخدم with Forms!frmdevDetails!frmDetails !userType.Enabled = False !users.Enabled = False !receiveDate.Enabled = False !idOffice.Enabled = False !dateHireEnd.Enabled = False !returnDate.Enabled = True end with وبدلا عن Private Sub zerClose_Click() If IsNull(Forms!frmdevDetails!frmDetails!receiveDate) And Not IsNull(Forms!frmdevDetails!frmDetails!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf Forms!frmdevDetails!frmDetails!userType = 4 And IsNull(Forms!frmdevDetails!frmDetails!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(Forms!frmdevDetails!frmDetails!userType) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(Forms!frmdevDetails!frmDetails!users) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If End Sub استخدم Private Sub zerClose_Click() with Forms!frmdevDetails!frmDetails If IsNull(!receiveDate) And Not IsNull(!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf !userType = 4 And IsNull(!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(!userType) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(!users) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If end with End sub 8. لا تستعمل الكلمات المحجوزة للأكسس في تسمية اي كائنات او متغيرات ، واذا اضطررت ان تستعملها: مثلا: لا تستعمل Me.section ، وانما استعمل Me![section] الاستعلامات : 9. كل مرة نستخدم معيار او فرز ، وفي اي مكان في البرنامج ، يجب فهرست الحقل ، مثل : . وحتى في مربع القائمة المنسدلة : . الحقل UsrType يجب ان يكون مفهرس . 10. لما تربط النموذج الرئيسي بالنموذج الفرعي ، فيجب ان يكون بينهما علاقة ، وكلا الحقلين يجب ان يكونا مفهرسين : . 11. الصور في البرنامج ، ولحفظ حجم البرنامج صغيرا ، يجب ان تكون الصور موجودة في مجلد في الكمبيوتر ، وليست في الجداول ولا مضمنه في النماذج والتقارير ، وانا استعمل المجلدات بهذه الطريقة ، فحتى لما تنقلها لكمبيوتر آخر ، كل شيء يشتغل بدون مشاكل: . وقد عملت نسخة من الصور الثلاث الموجودة في التقارير ، ووضعتها في المجلد images ، وفي التقارير ، تعمل تغيير في الاعدادات ، بدلا عن Embedded ، نعملها Linked : . حجم ملفك الاصل بعد الضغط والاصلاح: . ثم لربط الصور بالتقارير ، انظر الصور موجودة في اي قسم من التقرير ، وهنا نرى انها في رأس التقرير Report Header ، فنستخدم حدث "عند التنسيق" لهذا القسم: انقر على الخط المكتوب عليه Report Header ، ثم استعمل حدث "عند التنسيق" ، والكود سيكون : Private Sub ReportHeaderSection_Format(Cancel As Integer, FormatCount As Integer) On Error GoTo err_ReportHeaderSection_Format Me.img_Ministry_of_Education.Picture = Application.CurrentProject.Path & "\images\Ministry_of_Education.jpg" Me.img_Oman_Vision_2040.Picture = Application.CurrentProject.Path & "\images\Oman_Vision_2040.jpg" Me.img_Quality_Management_System.Picture = Application.CurrentProject.Path & "\images\Quality_Management_System.jpg" Exit_ReportHeaderSection_Format: Exit Sub err_ReportHeaderSection_Format: If Err.Number = 2220 Then 'image not found Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_ReportHeaderSection_Format End If End Sub . عليه اصبح حجم الملف ، حوالي النصف : . 12. لما تكون عندك علاقة في الاستعلام بين الجداول ، بهذه الطريقة مثلا : . ففعلا انت محتاج الى عمل علاقة بين الجداول (خارج الاستعلام) ، والتي ستجبرك على عمل فهرسة مسبقا لحقل من جانب واحد ، او عمل فهرسة للجانبين ، بمعنى: اذا عملت فهرسة لحقل في جدول واحد ، ثم عملت علاقة بين هذا الحقل A وحقل B في جدول آخر ، فيمكنك ان لا تفهرس الحقل B في الجدول ، لأن العلاقة تلقائيا تجعله مفهرسا ، والاكسس يفهم هذا. بعض الملاحظات اعلاه تقدر تقوم بها مباشرة الآن ، ولكن لا تعمل العلاقات إلا بعد ان يعطيك اخوي ابوخليل الضوء الاخضر 🙂 جعفر 1 1
ابوخليل قام بنشر فبراير 5, 2022 قام بنشر فبراير 5, 2022 شكرا جزيلا اخوي جعفر على هذه الملاحظات الهامة والتي تعتبر عصارة خبرة طويلة مع اكسس وسوف تكون مرجعا هاما لكل من مر من هنا بالنسبة للعلاقات فرأيي ان الأخ سامي طالب علم يحسب خطواته فنتركه على سجيته يعمل ما يشاء ، فالتعلم بالبحث والاكتشاف ارسخ 2
jjafferr قام بنشر فبراير 5, 2022 قام بنشر فبراير 5, 2022 18 دقائق مضت, ابوخليل said: فنتركه على سجيته يعمل ما يشاء ، فالتعلم بالبحث والاكتشاف ارسخ بالبحث والاستكشاف لساعات ، ياما نلتفت ، واذا بعمود الفجر قد ظهر 🙂 جعفر 1
samisalim قام بنشر فبراير 6, 2022 الكاتب قام بنشر فبراير 6, 2022 23 ساعات مضت, jjafferr said: السلام عليكم 🙂 اخوي ابوخليل ، الله يعطيك الصحة والعافية ، شغل جميل وخفيف 🙂 اخوي سامي ، طبعا هذه ملاحظات عامة ، واهميتها هي لتسريع عمل البرنامج ، وتجنب الاخطاء 🙂 تركت ملاحظتي سابقا والآن الى التفاصيل من واقع مرفقك في مشاركتك الاخيرة اعلاه ، وبدون ترتيب: الكود : 1. كل مكان عندك الامر Dcount ، مثل DCount("aaa","ttt") او DCount("aaa","ttt","ccc="& ddd) ، احذف aaa واستعمل النجمة * ، يعني Dcount("*","ttt") هذا يعطيك نفس النتيجة ، ولكنه اسرع ، لأنه يطلب عدد السجلات دون ان يعمل فرز لإسم الحقل وحساب عدد سجلاته. 2. كل مكان عندك الامر DCount("aaa","ttt","ccc="& ddd) ، الحقل ccc يجب ان يكون مفرس في الجدول (تسمح بالتكرار او لا ، يعتمد على دور الحقل في الجدول) ، وهذا ينطبق على الاوامر Dlookup و Dmax وووو ، فالمثال التالي ، الحقل ename يجب ان يكون مفهرس DCount("ename", "tblUsersName", "[ename]= '" & Trim(Me.ename) & "'") 3. في كل مكان في الكود ، اذا كنت ستستخدم اسم احد حقول النموذج ، فاستخدم كلمة .Me او !Me قبل الاسم ، حتى بعد سنين لما ترجع للكود ، تعرف ان هذا ليس متغير وانما هو اسم حقل. 4. في راس كل صفحة الكود استخدم السطرين Option Compare Database Option Explicit حتى تضطر ان تصرح عن المتغير المستعمل عن طريق Dim ، حتى يعمل الكود بطريقة اسرع ، وانت تعرف نوع المتغير وتعرف مكان الخطأ. 5. عند كتابة الكود ، وبين كل فترة واخرى استعمل Debug>Compile ، حتى ترى اذا كان الكود فيه اخطاء (انا عملت اختصار له في القائمة) ، انظر احد الاخطاء الموجود عندك مثلا: . 6. من الجميل عمل تنسيق الكود ، حتى تعرف من رؤيته ، بداية ونهاية الحلقات ، مثلا ، بدلا عن Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub اكتب Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub 7. اختصر الكلمات الطويلة ، حتى تستطيع ان تقرأها بسهولة : فبدلا عن Forms!frmdevDetails!frmDetails!userType.Enabled = False Forms!frmdevDetails!frmDetails!users.Enabled = False Forms!frmdevDetails!frmDetails!receiveDate.Enabled = False Forms!frmdevDetails!frmDetails!idOffice.Enabled = False Forms!frmdevDetails!frmDetails!dateHireEnd.Enabled = False Forms!frmdevDetails!frmDetails!returnDate.Enabled = True استخدم with Forms!frmdevDetails!frmDetails !userType.Enabled = False !users.Enabled = False !receiveDate.Enabled = False !idOffice.Enabled = False !dateHireEnd.Enabled = False !returnDate.Enabled = True end with وبدلا عن Private Sub zerClose_Click() If IsNull(Forms!frmdevDetails!frmDetails!receiveDate) And Not IsNull(Forms!frmdevDetails!frmDetails!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf Forms!frmdevDetails!frmDetails!userType = 4 And IsNull(Forms!frmdevDetails!frmDetails!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(Forms!frmdevDetails!frmDetails!userType) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(Forms!frmdevDetails!frmDetails!users) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If End Sub استخدم Private Sub zerClose_Click() with Forms!frmdevDetails!frmDetails If IsNull(!receiveDate) And Not IsNull(!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf !userType = 4 And IsNull(!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(!userType) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(!users) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If end with End sub 8. لا تستعمل الكلمات المحجوزة للأكسس في تسمية اي كائنات او متغيرات ، واذا اضطررت ان تستعملها: مثلا: لا تستعمل Me.section ، وانما استعمل Me![section] الاستعلامات : 9. كل مرة نستخدم معيار او فرز ، وفي اي مكان في البرنامج ، يجب فهرست الحقل ، مثل : . وحتى في مربع القائمة المنسدلة : . الحقل UsrType يجب ان يكون مفهرس . 10. لما تربط النموذج الرئيسي بالنموذج الفرعي ، فيجب ان يكون بينهما علاقة ، وكلا الحقلين يجب ان يكونا مفهرسين : . 11. الصور في البرنامج ، ولحفظ حجم البرنامج صغيرا ، يجب ان تكون الصور موجودة في مجلد في الكمبيوتر ، وليست في الجداول ولا مضمنه في النماذج والتقارير ، وانا استعمل المجلدات بهذه الطريقة ، فحتى لما تنقلها لكمبيوتر آخر ، كل شيء يشتغل بدون مشاكل: . وقد عملت نسخة من الصور الثلاث الموجودة في التقارير ، ووضعتها في المجلد images ، وفي التقارير ، تعمل تغيير في الاعدادات ، بدلا عن Embedded ، نعملها Linked : . حجم ملفك الاصل بعد الضغط والاصلاح: . ثم لربط الصور بالتقارير ، انظر الصور موجودة في اي قسم من التقرير ، وهنا نرى انها في رأس التقرير Report Header ، فنستخدم حدث "عند التنسيق" لهذا القسم: انقر على الخط المكتوب عليه Report Header ، ثم استعمل حدث "عند التنسيق" ، والكود سيكون : Private Sub ReportHeaderSection_Format(Cancel As Integer, FormatCount As Integer) On Error GoTo err_ReportHeaderSection_Format Me.img_Ministry_of_Education.Picture = Application.CurrentProject.Path & "\images\Ministry_of_Education.jpg" Me.img_Oman_Vision_2040.Picture = Application.CurrentProject.Path & "\images\Oman_Vision_2040.jpg" Me.img_Quality_Management_System.Picture = Application.CurrentProject.Path & "\images\Quality_Management_System.jpg" Exit_ReportHeaderSection_Format: Exit Sub err_ReportHeaderSection_Format: If Err.Number = 2220 Then 'image not found Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_ReportHeaderSection_Format End If End Sub . عليه اصبح حجم الملف ، حوالي النصف : . 12. لما تكون عندك علاقة في الاستعلام بين الجداول ، بهذه الطريقة مثلا : . ففعلا انت محتاج الى عمل علاقة بين الجداول (خارج الاستعلام) ، والتي ستجبرك على عمل فهرسة مسبقا لحقل من جانب واحد ، او عمل فهرسة للجانبين ، بمعنى: اذا عملت فهرسة لحقل في جدول واحد ، ثم عملت علاقة بين هذا الحقل A وحقل B في جدول آخر ، فيمكنك ان لا تفهرس الحقل B في الجدول ، لأن العلاقة تلقائيا تجعله مفهرسا ، والاكسس يفهم هذا. بعض الملاحظات اعلاه تقدر تقوم بها مباشرة الآن ، ولكن لا تعمل العلاقات إلا بعد ان يعطيك اخوي ابوخليل الضوء الاخضر 🙂 جعفر وعليكم السلام ورحمة الله وبركاته اشكرك استاذ جعفر على النصائح والملاحظات ورح اتبع التعليمات خطوة بخطوة واقوم بالتعديلات الفورية على البرنامج واذا شيء استفسار ارح اخبركم بارك الله فيكم على جهودكم الجبارة في خدمة طالب العلم 23 ساعات مضت, ابوخليل said: شكرا جزيلا اخوي جعفر على هذه الملاحظات الهامة والتي تعتبر عصارة خبرة طويلة مع اكسس وسوف تكون مرجعا هاما لكل من مر من هنا بالنسبة للعلاقات فرأيي ان الأخ سامي طالب علم يحسب خطواته فنتركه على سجيته يعمل ما يشاء ، فالتعلم بالبحث والاكتشاف ارسخ جزاك الله خيرا استاذ ابو خليل على متابعتك المستمرة وبإذن الله اكون على حسن الظن
samisalim قام بنشر فبراير 7, 2022 الكاتب قام بنشر فبراير 7, 2022 في 5/2/2022 at 22:53, jjafferr said: السلام عليكم 🙂 اخوي ابوخليل ، الله يعطيك الصحة والعافية ، شغل جميل وخفيف 🙂 اخوي سامي ، طبعا هذه ملاحظات عامة ، واهميتها هي لتسريع عمل البرنامج ، وتجنب الاخطاء 🙂 تركت ملاحظتي سابقا والآن الى التفاصيل من واقع مرفقك في مشاركتك الاخيرة اعلاه ، وبدون ترتيب: الكود : 1. كل مكان عندك الامر Dcount ، مثل DCount("aaa","ttt") او DCount("aaa","ttt","ccc="& ddd) ، احذف aaa واستعمل النجمة * ، يعني Dcount("*","ttt") هذا يعطيك نفس النتيجة ، ولكنه اسرع ، لأنه يطلب عدد السجلات دون ان يعمل فرز لإسم الحقل وحساب عدد سجلاته. 2. كل مكان عندك الامر DCount("aaa","ttt","ccc="& ddd) ، الحقل ccc يجب ان يكون مفرس في الجدول (تسمح بالتكرار او لا ، يعتمد على دور الحقل في الجدول) ، وهذا ينطبق على الاوامر Dlookup و Dmax وووو ، فالمثال التالي ، الحقل ename يجب ان يكون مفهرس DCount("ename", "tblUsersName", "[ename]= '" & Trim(Me.ename) & "'") 3. في كل مكان في الكود ، اذا كنت ستستخدم اسم احد حقول النموذج ، فاستخدم كلمة .Me او !Me قبل الاسم ، حتى بعد سنين لما ترجع للكود ، تعرف ان هذا ليس متغير وانما هو اسم حقل. 4. في راس كل صفحة الكود استخدم السطرين Option Compare Database Option Explicit حتى تضطر ان تصرح عن المتغير المستعمل عن طريق Dim ، حتى يعمل الكود بطريقة اسرع ، وانت تعرف نوع المتغير وتعرف مكان الخطأ. 5. عند كتابة الكود ، وبين كل فترة واخرى استعمل Debug>Compile ، حتى ترى اذا كان الكود فيه اخطاء (انا عملت اختصار له في القائمة) ، انظر احد الاخطاء الموجود عندك مثلا: . 6. من الجميل عمل تنسيق الكود ، حتى تعرف من رؤيته ، بداية ونهاية الحلقات ، مثلا ، بدلا عن Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub اكتب Private Sub cmdremove_Click() If MsgBox("هل تريد حذف السجل?", _ vbExclamation + vbOKCancel, _ "warning") = vbOK Then Me.deleteBox = True Else Exit Sub End If Me.Requery End Sub 7. اختصر الكلمات الطويلة ، حتى تستطيع ان تقرأها بسهولة : فبدلا عن Forms!frmdevDetails!frmDetails!userType.Enabled = False Forms!frmdevDetails!frmDetails!users.Enabled = False Forms!frmdevDetails!frmDetails!receiveDate.Enabled = False Forms!frmdevDetails!frmDetails!idOffice.Enabled = False Forms!frmdevDetails!frmDetails!dateHireEnd.Enabled = False Forms!frmdevDetails!frmDetails!returnDate.Enabled = True استخدم with Forms!frmdevDetails!frmDetails !userType.Enabled = False !users.Enabled = False !receiveDate.Enabled = False !idOffice.Enabled = False !dateHireEnd.Enabled = False !returnDate.Enabled = True end with وبدلا عن Private Sub zerClose_Click() If IsNull(Forms!frmdevDetails!frmDetails!receiveDate) And Not IsNull(Forms!frmdevDetails!frmDetails!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf Forms!frmdevDetails!frmDetails!userType = 4 And IsNull(Forms!frmdevDetails!frmDetails!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(Forms!frmdevDetails!frmDetails!userType) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(Forms!frmdevDetails!frmDetails!users) And Not IsNull(Forms!frmdevDetails!frmDetails!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If End Sub استخدم Private Sub zerClose_Click() with Forms!frmdevDetails!frmDetails If IsNull(!receiveDate) And Not IsNull(!users) Then MsgBox "لطفاً أدخل تاريخ التسليم" ElseIf !userType = 4 And IsNull(!dateHireEnd) Then MsgBox "لطفاً أدخل تاريخ نهايةالإعارة" ElseIf IsNull(!userType) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل نوع المستخدم" ElseIf IsNull(!users) And Not IsNull(!receiveDate) Then MsgBox "لطفاً أدخل المستخدم" Exit Sub Else DoCmd.Close End If end with End sub 8. لا تستعمل الكلمات المحجوزة للأكسس في تسمية اي كائنات او متغيرات ، واذا اضطررت ان تستعملها: مثلا: لا تستعمل Me.section ، وانما استعمل Me![section] الاستعلامات : 9. كل مرة نستخدم معيار او فرز ، وفي اي مكان في البرنامج ، يجب فهرست الحقل ، مثل : . وحتى في مربع القائمة المنسدلة : . الحقل UsrType يجب ان يكون مفهرس . 10. لما تربط النموذج الرئيسي بالنموذج الفرعي ، فيجب ان يكون بينهما علاقة ، وكلا الحقلين يجب ان يكونا مفهرسين : . 11. الصور في البرنامج ، ولحفظ حجم البرنامج صغيرا ، يجب ان تكون الصور موجودة في مجلد في الكمبيوتر ، وليست في الجداول ولا مضمنه في النماذج والتقارير ، وانا استعمل المجلدات بهذه الطريقة ، فحتى لما تنقلها لكمبيوتر آخر ، كل شيء يشتغل بدون مشاكل: . وقد عملت نسخة من الصور الثلاث الموجودة في التقارير ، ووضعتها في المجلد images ، وفي التقارير ، تعمل تغيير في الاعدادات ، بدلا عن Embedded ، نعملها Linked : . حجم ملفك الاصل بعد الضغط والاصلاح: . ثم لربط الصور بالتقارير ، انظر الصور موجودة في اي قسم من التقرير ، وهنا نرى انها في رأس التقرير Report Header ، فنستخدم حدث "عند التنسيق" لهذا القسم: انقر على الخط المكتوب عليه Report Header ، ثم استعمل حدث "عند التنسيق" ، والكود سيكون : Private Sub ReportHeaderSection_Format(Cancel As Integer, FormatCount As Integer) On Error GoTo err_ReportHeaderSection_Format Me.img_Ministry_of_Education.Picture = Application.CurrentProject.Path & "\images\Ministry_of_Education.jpg" Me.img_Oman_Vision_2040.Picture = Application.CurrentProject.Path & "\images\Oman_Vision_2040.jpg" Me.img_Quality_Management_System.Picture = Application.CurrentProject.Path & "\images\Quality_Management_System.jpg" Exit_ReportHeaderSection_Format: Exit Sub err_ReportHeaderSection_Format: If Err.Number = 2220 Then 'image not found Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_ReportHeaderSection_Format End If End Sub . عليه اصبح حجم الملف ، حوالي النصف : . 12. لما تكون عندك علاقة في الاستعلام بين الجداول ، بهذه الطريقة مثلا : . ففعلا انت محتاج الى عمل علاقة بين الجداول (خارج الاستعلام) ، والتي ستجبرك على عمل فهرسة مسبقا لحقل من جانب واحد ، او عمل فهرسة للجانبين ، بمعنى: اذا عملت فهرسة لحقل في جدول واحد ، ثم عملت علاقة بين هذا الحقل A وحقل B في جدول آخر ، فيمكنك ان لا تفهرس الحقل B في الجدول ، لأن العلاقة تلقائيا تجعله مفهرسا ، والاكسس يفهم هذا. بعض الملاحظات اعلاه تقدر تقوم بها مباشرة الآن ، ولكن لا تعمل العلاقات إلا بعد ان يعطيك اخوي ابوخليل الضوء الاخضر 🙂 جعفر السلام عليكم @jjafferr استاذ جعفر عسى اكون قد وفقت في حل الواجب😃وإي ملاحظات أنا مستعد لتعديلها مرفق لكم ملف التعديل devicesdb12 -9.rar
jjafferr قام بنشر فبراير 11, 2022 قام بنشر فبراير 11, 2022 وعليكم السلام اخوي سامي 🙂 نظرت في الملف بشكل عام ، ومثل ما قال اخونا العود ابوخليل : في ١٣/١/٢٠٢٢ at 15:29, ابوخليل said: تمام .. عمل جميل .. والى الاحتراف جعفر 1
samisalim قام بنشر مارس 3, 2022 الكاتب قام بنشر مارس 3, 2022 السلام عليكم 😇 أستاذ ابو خليل والاستاذ جعفر غبت عنكم كثيرا ورجعت بعد العمل على البرنامج الرجاء منكم إبداء رايكم اتمنى النظر في نموذج FrmSubFilterSchool هل طريقتي صحيحة في عمل استعلام وكيف يتم تصفية السجلات وطباعتهن مرفق لكم البرنامج devicesdb12 -9.7z
samisalim قام بنشر مارس 4, 2022 الكاتب قام بنشر مارس 4, 2022 16 ساعات مضت, samisalim said: اتمنى النظر في نموذج FrmSubFilterSchool هل طريقتي صحيحة في عمل استعلام وكيف يتم تصفية السجلات وطباعتهن devicesdb12 -9.7z 808.33 kB · 7 downloads الحمدلله تم ربط قائمة المنسدلة مع نموذج الفرعي احاول الحين في عرض التقرير وطباعته
samisalim قام بنشر مارس 4, 2022 الكاتب قام بنشر مارس 4, 2022 (معدل) 21 ساعات مضت, samisalim said: السلام عليكم 😇 أستاذ ابو خليل والاستاذ جعفر غبت عنكم كثيرا ورجعت بعد العمل على البرنامج الرجاء منكم إبداء رايكم اتمنى النظر في نموذج FrmSubFilterSchool هل طريقتي صحيحة في عمل استعلام وكيف يتم تصفية السجلات وطباعتهن مرفق لكم البرنامج مرفق لكم آخر تعديل للبرنامج devicesdb12 -9.7z تم تعديل مارس 4, 2022 بواسطه samisalim
ابوخليل قام بنشر مارس 4, 2022 قام بنشر مارس 4, 2022 عمل جميل خاصة الشاشة الرئيسية النتيجة النهائية هي اخراج التقارير ‘ وقد وصلت اليه يمكنك اخراج العديد منها . مثلا : احصائية بعدد الاجهزة قيد الاستخدام حسب النوع والموديل حسب الادارة او الجهة نافذة استعلام عن حالة جهاز محدد وغيرها مما ترى انك بحاجة اليه .. التقارير هي زبدة المشاريع ، اتمنى لك مزيدا من الابداع والاحتراف 1
samisalim قام بنشر مارس 5, 2022 الكاتب قام بنشر مارس 5, 2022 14 ساعات مضت, ابوخليل said: عمل جميل خاصة الشاشة الرئيسية النتيجة النهائية هي اخراج التقارير ‘ وقد وصلت اليه يمكنك اخراج العديد منها . مثلا : احصائية بعدد الاجهزة قيد الاستخدام حسب النوع والموديل حسب الادارة او الجهة نافذة استعلام عن حالة جهاز محدد وغيرها مما ترى انك بحاجة اليه .. التقارير هي زبدة المشاريع ، اتمنى لك مزيدا من الابداع والاحتراف جزاك الله خيرا استاذي الجليل ابو خليل على دعمك المستمر لطلاب العلم بوركت جهودكم الجبارة بإذن الله تعالى سوف استمر على هذا النهج...
jjafferr قام بنشر مارس 5, 2022 قام بنشر مارس 5, 2022 وعليكم السلام 🙂 1. لازلت تستخدم بعض الصور المضمنه ، بدل ان تربطها عند حدث تحميل النموذج ، 2. هناك نموذج لا توجد طريقة لإغلاقة ، 3. الالوان وحجم الخط والوان الخط ، مو مناسبين لي (يا اخي انا حر في مزاجي 😁) ، 4. لما تفتح نموذج ، ويكون امام نموذج آخر ، فيكون فيه تلاحم وتخالط في الالوان ، بينما احب ان يكون النموذج ظاهر وواضح بشخصيته ، 5. النموذج frmReceive&Return ، اسمه غلط ، فلا يجب استعمال علامة & في الاسم ، وكذلك فيه اخطاء ، فإذا ما كنت تريده ، احذفه او اعمل على الاسم علامة مثل frmReceive&Return_OLD وبالتالي تعرف انك استبدلته بنموذج آخر ، وانك تحتفظ به مؤقتا ، 6. صحيح تقدر تستعمل Me.Filter ، ولكن تجربتي جعلتني انتقل الى فلتر/تصفية الاستعلام ، والسبب انك يجب ان تتأكد ان Me.Filter فارغ وقت فتح النموذج ، بينما اذا كان عندك Filter ثم فتحت النموذج في وضع Layout ، فان الاكسس يحفظ معلومات الفلتر ضمن النموذج (نفس الشيء بالنسبة للصور كذلك) ، ويجب عليك حذفه وحفظ النموذج مرة اخرى ، 7. انا مو من محبي Set fso = CreateObject("scripting.filesystemobject") إلا في حالات نادرة (مثل لمعرفة مسار سطح المكتب) ، لأنك تضيف اوامر خارجية على الاكسس ، بينما هناك اوامر من الاكسس نفسه لمعظم اوامر fso (لا تنسى ، كل امر في الكود يستهلك قوة من المعالج CPU ويأخذ حيز من الذاكرة المؤقته RAM ، فلماذا هذه الاضافة) ، 8. اذا بتجعل هذا البرنامج في شبكة ، ويكون فيه واجهة على كل كمبيوتر ، وتكون الجداول على السيرفر/الشبكة ، ففي نفس السيرفر او مسار الجداول نضع مجلد الصور ، فعليه الامر Application.CurrentProject.Path يعطيك مسار الواجهة وليس الجداول ، وللحصول على مسار الجداول ، انظر هنا : جعفر 1
ابوخليل قام بنشر مارس 5, 2022 قام بنشر مارس 5, 2022 7 ساعات مضت, jjafferr said: 2. هناك نموذج لا توجد طريقة لإغلاقة ، 3. الالوان وحجم الخط والوان الخط ، مو مناسبين لي (يا اخي انا حر في مزاجي 😁) ، 4. لما تفتح نموذج ، ويكون امام نموذج آخر ، فيكون فيه تلاحم وتخالط في الالوان ، بينما احب ان يكون النموذج ظاهر وواضح بشخصيته ، شديد يابو عبدالله .. تصدق الوان النموذج مريحة هادئة لا تشغل البصر النقطة 4 انا اختلف .. واوجه دوما بان يكون تصميم النماذج متجانس تماما بكل شيء ، بشرط ان يكون المفتوح له الصدارة . بحيث يكون هناك اطار محدد ثابت للنماذج المنبثقة لتمييزها عن النموذج الرئيس ، وان كان لا بد اختلاف فيكون على الرئيس فقط .. ملاحظتي على التصميم .. انه عطل عنصر تحكم الاطارات بحيث عطل زر الاغلاق والافضل اخفاء زر الاغلاق و يكون زر الاغلاق المصنوع متشابه في جميع النماذج من حيث النوع والمكان ملاحظات الاستاذ جعفر وملاحظاتي هي وجهة نظر محب ، ولا تنقص من قيمة العمل والجهد الذي بذل في سبيله . 1
jjafferr قام بنشر مارس 6, 2022 قام بنشر مارس 6, 2022 هلا والله اخوي ابوخليل 🙂 انا وياك متفقين دائما ان شاء الله 🙂 بالنسبة للنقطة 4 ، فنعم لو فيه برواز للنموذج الامامي ، فستكون محتويات النموذج واضحة بانتمائها لهذا النموذج ، وبالنسبة للالوان ، فلون الخط الازرق الفاتح ، يحتاج معالجة شوي ، وطبعا اتفق معاك ان يكون لجميع النماذج طابع واحد ، من مكان قفل النموذج ، الى سجل جديد ، ووو واما شديد ، فظاهره الشدة وداخله اللين 🙂 8 ساعات مضت, ابوخليل said: ملاحظات الاستاذ جعفر وملاحظاتي هي وجهة نظر محب ، ولا تنقص من قيمة العمل والجهد الذي بذل في سبيله راحت الشدة ، واختربت القضية ، الآن اخونا سامي بيلعب على كيفه ، وخلينا نحسب كم هدف بيجيب 😁 جعفر 1
samisalim قام بنشر مارس 6, 2022 الكاتب قام بنشر مارس 6, 2022 22 ساعات مضت, jjafferr said: وعليكم السلام 🙂 1. لازلت تستخدم بعض الصور المضمنه ، بدل ان تربطها عند حدث تحميل النموذج ، 2. هناك نموذج لا توجد طريقة لإغلاقة ، 3. الالوان وحجم الخط والوان الخط ، مو مناسبين لي (يا اخي انا حر في مزاجي 😁) ، 4. لما تفتح نموذج ، ويكون امام نموذج آخر ، فيكون فيه تلاحم وتخالط في الالوان ، بينما احب ان يكون النموذج ظاهر وواضح بشخصيته ، 5. النموذج frmReceive&Return ، اسمه غلط ، فلا يجب استعمال علامة & في الاسم ، وكذلك فيه اخطاء ، فإذا ما كنت تريده ، احذفه او اعمل على الاسم علامة مثل frmReceive&Return_OLD وبالتالي تعرف انك استبدلته بنموذج آخر ، وانك تحتفظ به مؤقتا ، 6. صحيح تقدر تستعمل Me.Filter ، ولكن تجربتي جعلتني انتقل الى فلتر/تصفية الاستعلام ، والسبب انك يجب ان تتأكد ان Me.Filter فارغ وقت فتح النموذج ، بينما اذا كان عندك Filter ثم فتحت النموذج في وضع Layout ، فان الاكسس يحفظ معلومات الفلتر ضمن النموذج (نفس الشيء بالنسبة للصور كذلك) ، ويجب عليك حذفه وحفظ النموذج مرة اخرى ، 7. انا مو من محبي Set fso = CreateObject("scripting.filesystemobject") إلا في حالات نادرة (مثل لمعرفة مسار سطح المكتب) ، لأنك تضيف اوامر خارجية على الاكسس ، بينما هناك اوامر من الاكسس نفسه لمعظم اوامر fso (لا تنسى ، كل امر في الكود يستهلك قوة من المعالج CPU ويأخذ حيز من الذاكرة المؤقته RAM ، فلماذا هذه الاضافة) ، 8. اذا بتجعل هذا البرنامج في شبكة ، ويكون فيه واجهة على كل كمبيوتر ، وتكون الجداول على السيرفر/الشبكة ، ففي نفس السيرفر او مسار الجداول نضع مجلد الصور ، فعليه الامر Application.CurrentProject.Path يعطيك مسار الواجهة وليس الجداول ، وللحصول على مسار الجداول ، انظر هنا : جعفر ياهلا بمعلنا الجليل جعفر احببت ملاحظاتك للبرنامج وانا مطيع لمعلمي 1- بالفعل واعتذر منك عن هذا السهو واشكرك مرارا وتكرارا على هذا التنبيه وأنا استخدمت نفس الكود الذي أنت وضعته في صور التقارير . Private Sub Form_Load() On Error GoTo err_Form_Load Me.cmdDevDetails.Picture = Application.CurrentProject.Path & "\images\Device_barcode.png" Me.cmdBasic.Picture = Application.CurrentProject.Path & "\images\Information.png" Me.cmdReport.Picture = Application.CurrentProject.Path & "\images\Report.png" Me.cmdSearch.Picture = Application.CurrentProject.Path & "\images\Search.png" Me.cmdSetting.Picture = Application.CurrentProject.Path & "\images\Setting.png" Exit_Form_Load: Exit Sub err_Form_Load: If Err.NUMBER = 2220 Then 'image not found Resume Next Else MsgBox Err.NUMBER & vbCrLf & Err.Description Resume Exit_Form_Load: End If لكن لاحظت عدم تغير حجم البرنامج هل يحتاج انقله إلى قاعدة بيانات جديدة او ماذا افعل؟؟ 2- بحثت عن النموذج الذي لا يمكن اغلاقه ولم احصله هل ممكن اسم النموذج 3- بإذن الله سوف اقوم بتنسيقه فيما بعد. 4- بإذن الله سوف احاول تضبيطه آخر شيء. 5- تم التعديل اسم النموذج frmReceive&Return إلى frmReceiveReturn مع تعديل مشكلته وهذا النموذج لطباعة استمارات استلام وتسليم الأجهزة ويوجد زر في نموذج حركة الأجهزة 6- هل تقصد هذا الكود Private Sub cmbAlwilaya_AfterUpdate() Me.cmbSchool.Requery ' ابحث عن السجل الذي يطابق عنصر التحكم. Dim strFilter As String If Not IsNull(Me.cmbAlwilaya) Or Me.cmbAlwilaya <> "" Then Me.frmSubSchool.Form.Filter = "[Alwilayas]=" & "'" & Me.cmbAlwilaya & "'" Me.frmSubSchool.Form.FilterOn = True Else Me.frmSubSchool.Form.FilterOn = False ما هو الكود الذي اقدر استبدله أو طريقة انتقل الى فلتر/تصفية الاستعلام اذا ممكتن تطبق في ملف البرنامج لاني حاولت ولم انجح في الفلترة والتصفية 7 تم حذف الكود وسوف اضيف كود آخر بعد الانتهاء من تقسيم قاعدة البيانات في حدث الاغلاق 8- جميل جدا هذا يلي احتاجه بإذن الله سوف اقوم بتغير مسار البرنامج بعد تقسيمه وتحميله على السيرفر أشكركم أستاذ جعفر على ملاحظاتكم وتعاونكم معنا اتمنى تستحملني قليلا واستغل وقتك الثمين راح اعدل في البرنامج وارفقه لكم
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.