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

كل الانشطه

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

  1. Today
  2. أشكرك جزيل الشكر أخي عبد الله قدور هذا هو المطلوب ، كما أشكر كل من ساهم وأبدى رأيه وقام بتقديم المساعدة ، وجزاكم الله خير جميعا كما أود أن أطلب من الأخ عبد الله طلب أخر وهو أنه عند إدخال تاريخ بداية الاشتراك يقوم تلقائياص بتعبئة خانة تاريخ انتهاء الاشتراك حسب المدة ، إذا ممكن تعملها على نفس النموذج ، ولك من جزيل الشكر .
  3. نعم ممكن استبدل كود الاخ جعفر بالتالي Dim I_am_Empty As String, Set_Focus_On_Me As Control Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox And ctl.Visible = True Then If Len(ctl.Value & "") = 0 Then I_am_Empty = I_am_Empty & vbCrLf & ctl.Controls.Item(0).Caption Set Set_Focus_On_Me = ctl End If End If Next ctl If Len(I_am_Empty & "") <> 0 Then Cancel = True MsgBox "رجاء تعبئة الحقول الفارغة التالية" & I_am_Empty Set_Focus_On_Me.SetFocus Set ctl = Nothing: Set Set_Focus_On_Me = Nothing Exit Sub End If طبعا التعديل في السطرين الرابع والسادس فقط وباقي الكود كما هو اخيرا ممكن اختصار الكود وكتابته بطريقة مختلفة ولكن الاستاذ شايب يكتفي بالتعديل اعلاه الملف مرفق اخونا الشايب user.accdb
  4. وعليكم السلام ورحمة الله وبركاته ممكن ترفق ملف للعمل عليه
  5. السلام عليكم.. انا عملت ملف اكسيل على الديسكتوب به جدول وبه حقل بيانات بها ارتباط تشعبي لصور في ملف على الهارد (دي) .وانا حاليا اريد ان انسخ منه نسخة على هارد اخر .. ولكن عند النسخ يفقد الارتباط التشعبي بالصور ..هل ممكن يوجد حل وابقاء الارتباط بالصور عند النسخ
  6. Yesterday
  7. السلام عليكم و رحمه الله و بركاته بعد الاطلاع على موضوع (عدم الحفظ عندما يكون الحقل فارغاً) و كان الكود للأخ @jjafferr مناسب جداً لتطبيقي ولكن تظهر الرسالة وقد جلبت الاسم البرمجي للكائن و كذلك اي كائن نصي مخفي لاي غرض يقوم الكود باظهار انه حقل مطلوب تعبئته و المطلوب : اظهار التسميه التوضيحة بدل الاسم البرمجي للكائن . و كذلك عدم اظهار اي اسم لكائن مخفي في النموذج . ولكم جــــــزيل الشكر user.accdb
  8. وعليكم السلام ورحمه الله وبركاته - حدد العمود الذي يحتوي على التواريخ في الجدول. - انقر بزر الماوس الأيمن داخل العمود المحدد. - اختر "تنسيق الخلية" من القائمة المنسدلة. - في نافذة "تنسيق الخلية", انتقل إلى علامة التبويب "عدد". - اختر "تاريخ" من القائمة على اليسار. - اختر التنسيق المطلوب للتواريخ أو قم بإنشاء تنسيق مخصص إذا لزم الأمر. - انقر على "موافق" لتطبيق التغييرات. بهذا، سيتم تطبيق التنسيق الجديد على جميع الخلايا في العمود الذي تم تحديده والذي يحتوي على التواريخ. جرب الخطوات دي وشوف إن شاءالله هتظبط معاك ولو مظبطتش لا قدر الله تفيدنا بالمرفق وإن شاء الله تتعمل علطول زي محضرتك عايز
  9. السلام عليكم ورحمه الله وبركاته انا حاولت اعمل الي حضرتك عايزه واتمني ان تجد المطلوب فى المديول الموجود وطبعا لانى معرفش مدى صحه الارقام اللي حضرتك كاتبه فعملت دالتين فى المديول هتلاقي كل ماكرو يشغل واحده منهم شوف ايه الانسب ليك عشان انت تقدر تراجع بياناتك بدقه عنى Smart_Search_function.accdb
  10. استاذى قرأت هذا الموضوع سابقا ورايت فيه فعلا روعة فى الاكواد والوحدات النمطية حضرتك ذكرت فى الشرح استخدام كلمة المرور لمليون نموذج سوف استفيد من هذه المعومة واستعيرها حتما فى بعض النماذج جزاك الله كل خير
  11. الإخوة الكرام .. السلام عليكم ورحمة الله وبركاته عندي جدول (BOOKS) فيه أحاديث كلها موجودة في الجدول الرئيسي (TAB) وأريد معرفة أماكنها في الجدول الرئيسي وربطها به عبر المفتاح الأساسي (MNO) وأريد دالة ذكية تسهل هذه المهمة إن أمكن والجيد في الأمر أنه ليس المطلوب هو البحث التقليدي: اختيار كلمة أو أكثر من الحديث في الجدول (BOOKS) والبحث عنها في الجدول الرئيسي (TAB) الأمر بحمد الله أسهل .. على الأقل في تصوري المطلوب من الدالة أن تبحث عن رقم معين بعد نص معين * مثلا: في هذا الحديث من جدول (BOOKS) : المطلوب من الدالة أن تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "مصنفات الحمامي" يليه الرقم (116)، واسم الكتاب من حقل (BookName)، والرقم من حقل (B_Hno) والحديث المطلوب هو في الجدول الرئيسي (TAB) ثم وضع الرقم (MNO) في جدول (BOOKS) وقد قمت أنا بوضع الأرقام الصحيحة المطلوبة في حقل (MNOX) * وغالبا ما يكون الرقم بعد اسم الكتاب مباشرة، ولكن قد يتأخر عنه في بعض المواضع، مثلا هذا الحديث في الجدول الرئيسي (TAB) فهذا الحديث موجود في جدول (BOOKS) في تسعة مواضع والدالة ستبحث انطلاقا من جدول (BOOKS) تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "فوائد تمام" يليه رقم (168) وتضع رقمه، ثم تبحث مرة أخرى عن "فوائد تمام" يليه رقم (169) .. وهكذا * مع ملاحظة البحث عن الرقم كاملا، حتى لا يحصل خلط بين: فوائد تمام (312) // فوائد تمام (1312) أرجو أن أكون قد وفقت في شرح المطلوب ثم أرجو أن يكون بالإمكان عمل ذلك في أكسس لأن ذلك سيوفر لي الكثير من الوقت Smart_Search.accdb
  12. اخواني الأعزاء بعد سلام الله عليكم ورحمة الله وبركاته محتاح اجمع الوان المواد بناء علي شرط النوع ( اللون1 - اللون2 - اللون3 - اللون4 - اللون5 - اللون6 - اللون 7 )mas_s.rar ملف العمل
  13. على سبيل المثال يا دكتور @الحلبي فى هذا الموضوع شوف المرفق الأول لا يعتمد على الوحدات نمطية بينما قمت بعمل المرفق الثانى والذى يعتمد على وحدات نمطية انظر الفرق فى الاكواد داخل النموذج وكيفية استدعاء الوظائف بسهولة وانظر الى روعة لو اردت تنفيذ نقس الوظيفة فى اكثر من نموذج بدلا من اعادة نسخ الاكواد لكل نموذج فقط سطر يستدعى الدوال ولو لمليون نموذج
  14. اولا اذا حضر الماء بطل التيمم من انا ليتم ذكر اسمى مع وبجوار اساتذتى العظماء الذين اتعلم وانهل من بحور علمهم واهيم فى ربوع افكارهم بارك الله لنا فيهم ورزقهم البركة فى العمر والعلم والعمل والاهل والولد انا عن نفسي افضل التعب في بلورة الأفكار حتى وان اخذت معي وقت وجهد كبيرين لانه لو تلاحظ احاول جاهدا وابدا ان تكون حلولى فى دوال و وظائف عامة حتى وان كان الكود معقد او كبير المهم ان التعب لن يكون الا فى المرة الاولى تخيل انه لا اريد حذف اى سجل او طباعة او فتح اى تقرير مهم الا بكلمة مرور فى كل مرة اكتب الاكود كلما احتجت عمل ذلك بينما الان فقط انقل نموذج كلمة المرور والوحدة النمطية وانفذ كل ما اريد بسطر واحد فى مليون تطبيق ومليون نموذج تحت أمر حضرتك طبعا تأمر وتتدلل
  15. 🌹 @ابو جودي مرفقك رائع استاذي 🥰 @Moosak اعتذر اضفة نموذج صاحب المكتبة العامرة ولكن ما لقية بمكتبتة مثل مرفقك 😂
  16. الله عليك يااستاذ محمد عصام ونعم الشرح والتوضيح وسوف يأخذ فى الاعتبار الملحوظة الثغنونةـ وبهذا الشرح المتقن لا يكون عندى اى عذر فى اطبق هذا الشرح على جميع اعمالى واسمح لى استاذ محمد (فكرتنى بايام المذاكرة) هذ الشرح يحتاج منى وقفة ودراسة لهذا الشرح وكما تعودت لا اترك كلمة والا قد فهمتها واذا توقف معى شئ سوف ارجع لك الان اصبح لدى ثلاث حلول حل الاستاذ @AlwaZeeR وحل شيخنا الجليل @ابوخليل وحل باشمهندسنا @ابو جودي جزاكم الله خيرا جميعا وزادكم الله علما نافعا واشكركم من كل قلبى واسمحوا لى اشكر الاستاذ/ محمد عصام ابو جودى على تعبه وهذا الشرح الذى سوف ياخذ منى وقت كبير بارك الله فيكم جميعا
  17. ما شاء الله بجد يا باش مهندسة @hanan_ms روعة تسلم ايدك وأفكار قمة في الابداع
  18. استاذ @أبو محمد سعيد وحشتنا . حسب مافهمت تفضل طلبك بالمرفق ووافني بالرد . DDTestFilter-Update.rar
  19. با نهار ابيض وجالك قلب تعدلى مرفقى بسهولة كده انتى بتهزرى يا باش مهندسة لا وبتقوليها فى وشى كمان تسلم ايدك بجد .. طبعا بهزر كل نرفقاتى ملك لاخوانى واخواتى الا شخص واحد الاستاذ @Moosak صاحب المكتبة العامرة جزاكم الله خيـــــــــرا وشرف لى يا باش مهندسة مشاركة حضرتك بجد والله
  20. 🌹🌹 عدلة مرفقك كان الخطأ عند\ تغير هوامش تغير حجم عرض الحقل في آخر اليمين فقط كود تحريك الحقول ان كان صفر فتتحرك سنتيمتر 8.2 واذا كانت 1 او 2 تقل سنتيمتر عرض التقريك بتحرك الحقل ليصل الى 7 او 6 او 5 فقط وتم اضافة الاطار لكل التقارير واماكنية تحجيم الاطار والغاء واضافة قائمة بكج التقارير ==================================================== هل يوجد دالة لتحجم آخر حقل لكل تقرير من الرأس الى تذليل الصفحة آخر اليمين ؟ (لتشغيل هوامش التقرير) في الوضع الحالي سأستخدم تقرير محجم بوضع التصميم للتشغيل الهوامش وتختلف التوسع بالحقل اذا كان التقرير بوضع الطولي او العرض (افقي ) @ابو جودي اشكر كثيرا استاذي 🌹❤️ Full Control Of Print Report التحكم في الطابعة وخصائصها طباعة التقارير.rar
  21. شكرا استاذنا Saleh Ahmed Rabie على تفاعلكم سلمت يداك
  22. استاذنا @Foksh متبقي ضهور المعالج الاسكانر في حالة انه موصل كما اخبرتك سابقاً
  23. وجزاكم مثله اخى الحمد لله الذي بنعمته تتم الصالحات
  24. على بركة الله وبسم الله ولكن انا سوف اشرح ما تم عمله طبقا للمرفق وبعد ذلك سوف اخبركم برأى فى الاخر اولا الموديول باسم : basFormControlStatus الاكواد بداخلة كالتالى Option Compare Database Option Explicit ' Enum: RecordStatusEnum ' Description: Defines possible control statuses for record status. Public Enum RecordStatusEnum LockedStatus NewRecordStatus EditRecordStatus CurrentRecordStatus SaveRecordStatus End Enum ' Sub: SetRecordStatus ' Description: Sets the status of records in a form. Public Sub SetRecordStatus(frm As Form, status As RecordStatusEnum) ' Disable all editable controls by default SetControlsEnabled frm, False ' Enable or disable controls based on the specified status Select Case status Case NewRecordStatus ' Enable editable controls and move to a new record if applicable SetControlsEnabled frm, True If frm.Recordset.RecordCount > 0 Then DoCmd.GoToRecord , , acNewRec End If Case CurrentRecordStatus ' Enable editable controls if there are no records or it's a new record If frm.Recordset.RecordCount = 0 Or frm.NewRecord Then SetControlsEnabled frm, True Else DoCmd.RunCommand acCmdSaveRecord End If Case EditRecordStatus ' Enable editable controls for editing SetControlsEnabled frm, True Case SaveRecordStatus ' Save the record and disable editable controls DoCmd.RunCommand acCmdSaveRecord End Select End Sub ' Function: SetControlsEnabled ' Description: Enables or disables all editable controls in the form. Private Sub SetControlsEnabled(frm As Form, isEnabled As Boolean) Dim control As control For Each control In frm.Controls If IsEditableControl(control) Then control.Enabled = isEnabled On Error Resume Next ' Ignore errors if control doesn't support Locked property If isEnabled Then control.Locked = False Else control.Locked = True End If On Error GoTo 0 ' Reset error handling End If Next control End Sub ' Function: IsEditableControl ' Description: Determines if a control is editable. Private Function IsEditableControl(ctrl As control) As Boolean Select Case ctrl.ControlType Case acTextBox, acComboBox, acCheckBox, acOptionGroup, acOptionButton, acToggleButton IsEditableControl = True Case Else IsEditableControl = False End Select End Function Option Compare Database: تحدد كيفية مقارنة السلاسل النصية. في هذا الحالة، المقارنة ستكون باستخدام إعدادات قاعدة البيانات Option Explicit: تفرض التصريح الصريح عن المتغيرات قبل استخدامها، مما يساعد على تجنب الأخطاء النحوية في الكود تعريف التعداد (Enum) RecordStatusEnum: تعداد يمثل الحالات المختلفة لسجلات النموذج الحالات هي: LockedStatus: السجل مقفل ولا يمكن تحريره NewRecordStatus: إضافة سجل جديد EditRecordStatus: تعديل سجل موجود CurrentRecordStatus: حالة السجل الحالي، والتي قد تكون جديدة أو قائمة SaveRecordStatus: حفظ السجل ببساطة وبدون تعقيد تمثل الاختيارات المتاحة للمصمم اثناء استدعاء الدالة وكأنها مربع تحرير وسرد الدالة الاولى إعداد حالة السجل (SetRecordStatus) SetRecordStatus: دالة لضبط حالة السجلات في النموذج تقوم بتعطيل جميع عناصر التحكم القابلة للتحرير افتراضيا ثم تمكن أو تعطل عناصر التحكم بناء على الحالة المحددة وفى رأس الدالة يتم التعامل مع براميترات من خلال المتغيرات الاتية frm As Form : لتعريف الدالة عند استدعائها على النموذج الذى سوق يتم التعامل من خلاله status As RecordStatusEnum حالة السجلات بناء على الحالات التى تم كتابتها فى التعداد Enum تم استدعاء دالة فرعية نأتى اليها لاحقا SetControlsEnabled frm, False يتم التعامل مع الحلات كما نريد من خلال الاكواد حسب الرغبة وهنا كانت الرغبة فى عمل الاتى لكل حالة من خلال Select Case NewRecordStatus: تمكين عناصر التحكم القابلة للتحرير الانتقال إلى سجل جديد إذا كانت هناك سجلات موجودة CurrentRecordStatus: تمكين عناصر التحكم إذا لم يكن هناك سجلات أو إذا كان السجل جديدا أو حفظ السجل إذا كان موجودا EditRecordStatus: تمكين عناصر التحكم لتحرير السجل SaveRecordStatus: حفظ السجل وتعطيل عناصر التحكم القابلة للتحرير ---------------------------------------- الان أتى للدالة SetControlsEnabled والتى تم استدعائها فى الدالة السابقة وظيفتها تمكين أو تعطيل جميع عناصر التحكم القابلة للتحرير في النموذج فى هذه الدالة تم عمل حلقة تكرارية للدوران على العناصر لتأمينها ان لم تكن مأمنه ونلاحظ انها تعتمد على دالة اخرى IsEditableControl حيث تقوم بالدوران على كل عنصر تحكم في النموذج وإذا كان عنصر التحكم قابلا للتحرير (بناء على نتيجة دالة IsEditableControl) فإنه يتم تمكينه أو تعطيله حسب الحالة المحددة ---------------------------------------- وهنا ننتقل الى دالة تحديد عناصر التحكم القابلة للتحرير (IsEditableControl) وهى دالة تقوم بتحديد ما إذا كان عنصر التحكم قابلا للتحرير بناء على نوعه فأنها تعيد القيمة True إذا كان نوع عنصر التحكم هو TextBox أو ComboBox أو CheckBox أو OptionGroup أو OptionButton أو ToggleButton وتعيد False لبقية الأنواع الأخرى طبعا تم اختيار العناصر فقط TextBox أو ComboBox أو CheckBox أو OptionGroup أو OptionButton أو ToggleButton دون غيرها لانها هى العناصر المستخدمة فى ادخال البيانات افتراضيا ويمكن للمصمم طبعا تغير ما يريرد وفق اهوائه الان طريقة الاستدعاء SetRecordStatus ثم me لتعريفها على النموذج الحالى , ثم اختيار الحالة وهنا تظهر روعة التعداد (Enum) حيث ان القيم الموجودة فيه تظهر ليتمكن المبرمج بسهولة من اختيار الحالة ------------- ومن تلقاء نفسي قمت باضافة الوحدة النمطية باسم : basPasswordPrompt واكواد هذه الوحدة Option Compare Database Option Explicit Public strPasswordPrompt As String Public boolPasswordPrompt As Boolean ' Enum for different password statuses Public Enum EnumPassword PasswordNull PasswordIncorrect PasswordCancelled Confirmation UnsupportedAction End Enum ' Enum for different actions that can be executed Public Enum RequiredAction OpenForm OpenQuery OpenReport PrintReport DeleteRecords RunSQL CallFunction CallFunctionByForm ' New case for calling functions from the current form End Enum ' Subroutine to execute actions based on input parameters ' Parameters: ' frm - Reference to the current form ' actionType - Type of action to be executed ' itemName - Name of the item (form, query, report, function) to be executed ' CORRECT_PASSWORD - The correct password to validate (optional) Public Sub ExecuteAction(ByVal actionType As RequiredAction, ByVal itemName As String, Optional ByVal CORRECT_PASSWORD As String = "", Optional ByVal frm As Access.Form) ' Loop until password prompt is resolved Do ' Open password prompt form DoCmd.OpenForm "frmPasswordPrompt", , , , , acDialog ' Check if password prompt is entered ' Determine action based on password prompt Select Case True Case boolPasswordPrompt Select Case True Case Nz(strPasswordPrompt, "") = "" MsgPasswordPrompt (PasswordNull) Case strPasswordPrompt <> CORRECT_PASSWORD MsgPasswordPrompt (PasswordIncorrect) Case Else ' Perform selected action based on the action type Select Case actionType Case RequiredAction.OpenForm DoCmd.OpenForm itemName Case RequiredAction.OpenQuery DoCmd.OpenQuery itemName Case RequiredAction.OpenReport DoCmd.OpenReport itemName, acViewNormal Case RequiredAction.PrintReport DoCmd.OpenReport itemName, acViewNormal ' Open report in preview mode DoCmd.PrintOut ' Print report Case RequiredAction.DeleteRecords DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM " & itemName DoCmd.SetWarnings True Case RequiredAction.RunSQL DoCmd.SetWarnings False DoCmd.RunSQL itemName DoCmd.SetWarnings True Case RequiredAction.CallFunction ' Call the function specified in itemName using Application.Run Application.Run itemName Case RequiredAction.CallFunctionByForm ' Call the function specified in itemName using CallByName CallByName frm, itemName, VbMethod Case Else MsgPasswordPrompt (UnsupportedAction) End Select Exit Do End Select Case Else MsgPasswordPrompt (PasswordCancelled) Exit Do End Select Loop Exit Sub ErrorHandler: ' Display error message if any MsgBox "Error: " & Err.Number & vbCrLf & "Description: " & Err.Description, vbCritical Debug.Print Err.Number & vbCrLf & "Description: " & Err.Description On Error GoTo 0 End Sub '' Function to show a message based on password prompt status '' Parameters: '' status - The password status to display the message for 'Public Sub MsgPasswordPrompt(status As EnumPassword) ' Select Case status ' Case PasswordNull ' MsgBox "Password cannot be empty.", vbExclamation ' Case PasswordIncorrect ' MsgBox "Incorrect password.", vbExclamation ' Case PasswordCancelled ' MsgBox "Password entry cancelled.", vbInformation ' Case Confirmation ' MsgBox "Password confirmed.", vbInformation ' Case UnsupportedAction ' MsgBox "Unsupported action type.", vbExclamation ' End Select 'End Sub ' Function to display password prompt messages based on status Sub MsgPasswordPrompt(Optional ByVal ConfirmationStatus As EnumPassword = Confirmation) ' Password prompt messages Dim MSG_ENTER_PASSWORD As String ' "Please enter your password." MSG_ENTER_PASSWORD = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1580") & ChrW("1575") & ChrW("1569") & ChrW("32") & ChrW("1573") & ChrW("1583") & ChrW("1582") & ChrW("1575") & ChrW("1604") & ChrW("32") & ChrW("1603") & ChrW("1604") & ChrW("1605") & ChrW("1577") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1587") & ChrW("1585") & ChrW("32") & ChrW("1604") & ChrW("1604") & ChrW("1605") & ChrW("1578") & ChrW("1575") & ChrW("1576") & ChrW("1593") & ChrW("1577") Dim MSG_INCORRECT_PASSWORD As String ' "Incorrect password. Please try again." MSG_INCORRECT_PASSWORD = ChrW("1603") & ChrW("1604") & ChrW("1605") & ChrW("1577") & ChrW("32") & ChrW("1587") & ChrW("1585") & ChrW("32") & ChrW("1582") & ChrW("1575") & ChrW("1591") & ChrW("1574") & ChrW("1577") & ChrW("46") & ChrW("32") & ChrW("1578") & ChrW("1605") & ChrW("32") & ChrW("1571") & ChrW("1604") & ChrW("1594") & ChrW("1575") & ChrW("1569") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1573") & ChrW("1580") & ChrW("1585") & ChrW("1575") & ChrW("1569") Dim MSG_OPERATION_CANCELED As String ' "Operation canceled" MSG_OPERATION_CANCELED = ChrW("1578") & ChrW("1605") & ChrW("32") & ChrW("1573") & ChrW("1604") & ChrW("1594") & ChrW("1575") & ChrW("1569") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1573") & ChrW("1580") & ChrW("1585") & ChrW("1575") & ChrW("1569") Dim UNSUPPORTED_ACTION As String ' "Unsupported action type" UNSUPPORTED_ACTION = ChrW("1573") & ChrW("1580") & ChrW("1585") & ChrW("1575") & ChrW("1569") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1605") & ChrW("1583") & ChrW("1593") & ChrW("1608") & ChrW("1605") ' "Password Prompt" Dim MSG_TITLE As String MSG_TITLE = ChrW("1605") & ChrW("1591") & ChrW("1575") & ChrW("1604") & ChrW("1576") & ChrW("1577") & ChrW("32") & ChrW("1603") & ChrW("1604") & ChrW("1605") & ChrW("1577") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1587") & ChrW("1585") ' Display appropriate message based on status Select Case Nz(ConfirmationStatus, "") Case Is = "": MsgBox MSG_ENTER_PASSWORD, vbExclamation, MSG_TITLE Case EnumPassword.PasswordNull: MsgBox MSG_ENTER_PASSWORD, vbMsgBoxRight + vbExclamation, MSG_TITLE Case EnumPassword.PasswordIncorrect: MsgBox MSG_INCORRECT_PASSWORD, vbMsgBoxRight + vbCritical, MSG_TITLE Case EnumPassword.PasswordCancelled: MsgBox MSG_OPERATION_CANCELED, vbMsgBoxRight, MSG_TITLE Case EnumPassword.UnsupportedAction: MsgBox UNSUPPORTED_ACTION, vbMsgBoxRight + vbExclamation, MSG_TITLE End Select End Sub تعريف المتغ رات العامة strPasswordPrompt: سلسلة نصية لتخزين كلمة المرور المدخلة boolPasswordPrompt: متغير منطقي (Boolean) لتحديد ما إذا تم إدخال كلمة المرور أم لا تعريف التعدادات (Enums) اولا : Enum Password: تعداد يمثل الحالات المختلفة لكلمة المرور PasswordNull: كلمة المرور غير مدخلة PasswordIncorrect: كلمة المرور غير صحيحة PasswordCancelled: تم إلغاء إدخال كلمة المرور Confirmation: تأكيد كلمة المرور UnsupportedAction: الإجراء غير مدعوم ثانيا : Enum RequiredAction: تعداد يمثل الإجراءات المختلفة التي يمكن تنفيذها OpenForm: فتح نموذج OpenQuery: فتح استعلام OpenReport: فتح تقرير PrintReport: طباعة تقرير DeleteRecords: حذف سجلات RunSQL: تنفيذ استعلام SQL CallFunction: استدعاء دالة عامة من موديول ( وحدة نمطية ) CallFunctionByForm: استدعاء دالة من النموذج الحالي الدالة الرئيسية تنفيذ الإجراءا (ExecuteAction) هى دالة تقوم بتنفيذ الإجراءات بناء على نوع الإجراء طبقا للتعداد ( Enum RequiredAction ) المدخل وكلمة المرور الصحيحة تقوم بفتح نموذج إدخال كلمة المرور (frmPasswordPrompt) بناء على إدخال كلمة المرور يتم التحقق من كلمة المرور المدخلة طبقا للتعداد ( Enum EnumPassword ) إذا كانت الكلمة فارغة تعرض رسالة بأن كلمة المرور غير مدخلة إذا كانت الكلمة غير صحيحة تعرض رسالة بأن كلمة المرور غير صحيحة إذا كانت الكلمة صحيحة يتم تنفيذ الإجراء المحدد بناء على نوعه في حالة أي خطأ تعرض رسالة خطأ نلاخظ انه تم استخدام وظيفية الاختيار Optional ByVal CORRECT_PASSWORD As String = "" فى راس الدالة وذلك حتى لا يتم استخدام كلمة مرور واحدة ووحيدة وثابته بذلك يكون هناك مرونة فى استخدام كلمات مرور مختلفة والاستدعاء تتم بالطريقة التالية : 1. فتح نموذج: ExecuteAction RequiredAction.OpenForm, "FormName", "YourPassword" 2. فتح استعلام: ExecuteAction RequiredAction.OpenQuery, "QueryName", "YourPassword" 3. فتح تقرير: ExecuteAction RequiredAction.OpenReport, "ReportName", "YourPassword" 4. طباعة تقرير: ExecuteAction RequiredAction.PrintReport, "ReportName", "YourPassword" 5. حذف سجلات: ExecuteAction RequiredAction.DeleteRecords, "TableName", "YourPassword" 6. تنفيذ استعلام SQL: ExecuteAction RequiredAction.RunSQL, "SQLStatement", "YourPassword" 7. استدعاء دالة عامة من وحدة نمطية: استبدل "FunctionName" باسم الدالة التي تريد استدعاءها ExecuteAction RequiredAction.CallFunction, "FunctionName", "YourPassword" 8. استدعاء دالة او حدث من النموذج الحالي: استبدل "FunctionNameInForm" باسم الدالة التي تريد استدعاءها ExecuteAction RequiredAction.CallFunctionByForm, "FunctionNameInForm", "YourPassword", Me وطبعا مع جميع ما سبق استبدل "YourPassword" بكلمة المرور التى تريد ممكن مثلا تستدعى الدالة لاكثر من نمورذج بالشكل التالى ExecuteAction RequiredAction.OpenForm, "frmA", "123" ExecuteAction RequiredAction.OpenForm, "frmB", "000" ExecuteAction RequiredAction.OpenForm, "frmC", "789" من خلال دالة واحدة تستطيع استكمال اجراء من خلال كلمات مرور مختلفة وليس كلمة واحدة مثل قتح اكثر من نموذج وكل واحد يحتاج الى كلمة مرور غير كلمة المرور المستخدمه مع غيره ملحوظة ثغنونه اثناء الشرح قمت بتعديل دالة كلمة المرور
  25. وعليكم السلام ورحمة الله وبركاته تفضل فصل الاسماء التي تحتوي على فاصل بينهم.xlsx
  1. أظهر المزيد
×
×
  • اضف...

Important Information