الحلبي قام بنشر مايو 27 قام بنشر مايو 27 السلام عليكم معلش انا راسى مشغوله جدا بالعمل مرفق مثال : المطلوب فقط عند الضغط على زر الحفظ ـ تحفظ البيانات المدخلة ولايمكن التعديل عليها (طالما ضغطنا زر الحفظ) عند الضغط على زر التعديل يمكننا ان نعدل على بيانات النموذج وبعد عملية التعديل نضغط حفظ لحفظ التعديل وعند الضغط على زر جديد يفتح لنا سجل جديد ويمكننا ان ندخل بيانات فى النموذج ونضغط حفظ لحفظ البيانات ولا يمكن التعديد عليها جزاكم الله خيرا حفظ وتعديل.accdb
الحلبي قام بنشر مايو 27 الكاتب قام بنشر مايو 27 33 دقائق مضت, AlwaZeeR said: عليكم السلام ورحمة الله وبركاته مرحبا بك الاستاذ الفاضل / @AlwaZeeR تمام الله يفتح عيك ويرحم والديك فى الدنيا والاخرة هذا جميل جدا جدا جدا جدا جدا وبه افكار جميلة جدا هذا كان مثال مصغر ولكن فى البرنامج الاصلى يوجد مربع list box كما تراه فى المرفقات وهذا الليست بوكس الغرض منه ان يفلتر النموذج على كود الصنف عند الاختيار من الليست بوكس وانا لا اعرف كيف يفلتر فى هذا المثال وعند التطبيق فى برنامجى توقف عمل الليست بوكس اسف واعذرنى كما ادعو حضرتك لمشاهدة المرفق جزاك الله خير حفظ وتعديل.accdb اسف لقد اخطأت فى المرفق حفظ وتعديل (1).accdb
AlwaZeeR قام بنشر مايو 27 قام بنشر مايو 27 لاحظ اننا منعنا التعديل الا بعد الضغط على تعديل للبحث عن صنف من قائمة لست بوكس لازم تضغط تعديل ليتم تفعيل تعديل النموذج حفظ وتعديل (1).accdb
الحلبي قام بنشر مايو 27 الكاتب قام بنشر مايو 27 1 ساعه مضت, AlwaZeeR said: لاحظ اننا منعنا التعديل الا بعد الضغط على تعديل طب ايه رايك فى هذا الحل فهو مأخوذ من اكواد حضرتك حفظ وتعديل (1) (1).accdb
AlwaZeeR قام بنشر مايو 27 قام بنشر مايو 27 تقصد بالحل: انه عند الضغط على القائمة يبقى التعديل مغلقا؟ وعند نقل المؤشر الى مربع النص يصبح مفعل؟ اذا هذا الامر يماشى مع تقوم به فلا بأس يمكنك جعل الاكواد في وحدة نمطية واستخدامها اكثر من مرة بدل تكرارها
الحلبي قام بنشر مايو 27 الكاتب قام بنشر مايو 27 منذ ساعه, AlwaZeeR said: قصد بالحل: انه عند الضغط على القائمة يبقى التعديل مغلقا؟ وعند نقل المؤشر الى مربع النص يصبح مفعل؟ نعم اقصد ذلك ياريت يااستاذ تعمل لى الوحدة النمطية هذا اكون شاكرا لحضرتك 1
ابو جودي قام بنشر مايو 30 قام بنشر مايو 30 في 27/5/2024 at 20:21, الحلبي said: الوحدة النمطية والله يا دكتور انا كنت بأجهز فكرة
الحلبي قام بنشر مايو 30 الكاتب قام بنشر مايو 30 منذ ساعه, ابو جودي said: والله يا دكتور انا كنت بأجهز فكرة اهلا بك معلمى واستاذى الفاضل ماشى ياباشمهندس انا معاك ومع افكارك الجميلة كلها عبقرية وتنفعنى كثيرا جزاك الله خير
ابو جودي قام بنشر مايو 30 قام بنشر مايو 30 اتفضل يا دكتور تدلل قم بعمل موديول جديد واعطه مصلا الاسم : basFormControlStatus الاكواد داخل الموديول Option Compare Database Option Explicit ' Description: This module contains functions related to managing record statuses in forms. Public Enum RecordStatusEnum LockedStatus NewRecordStatus EditRecordStatus CurrentRecordStatus SaveRecordStatus End Enum ' Enum: RecordStatusEnum ' Description: Defines possible control statuses for record status. ' Description: This module contains functions related to managing record statuses in forms. Public Sub SetRecordStatus(frm As Form, status As RecordStatusEnum) ' Description: Sets the status of records in a form. Dim ctl As Control ' Disable all controls by default For Each ctl In frm.Controls If IsEditableControl(ctl) Then ctl.Enabled = False End If Next ctl ' 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 For Each ctl In frm.Controls If IsEditableControl(ctl) Then ctl.Enabled = True End If Next ctl ' If there are existing records, move to a new record If frm.Recordset.RecordCount > 0 Then DoCmd.GoToRecord , , acNewRec End If Case CurrentRecordStatus ' If no records exist or if it's a new record, enable editable controls; ' otherwise, save the record and disable editable controls. If frm.Recordset.RecordCount = 0 Or frm.NewRecord Then For Each ctl In frm.Controls If IsEditableControl(ctl) Then ctl.Enabled = True End If Next ctl Else DoCmd.RunCommand acCmdSaveRecord End If Case EditRecordStatus ' Enable editable controls for editing For Each ctl In frm.Controls If IsEditableControl(ctl) Then ctl.Enabled = True End If Next ctl Case SaveRecordStatus ' Save the record and disable editable controls DoCmd.RunCommand acCmdSaveRecord End Select End Sub Private Function IsEditableControl(ctrl As Control) As Boolean ' Description: Determines if a control is editable. Select Case ctrl.ControlType Case acTextBox, acComboBox, acCheckBox, acOptionGroup, acOptionButton, acToggleButton IsEditableControl = True Case Else IsEditableControl = False End Select End Function طريفة الاستدعاء : تبعا لوظيفة كل زر باسهل ما يكون Private Sub Form_Load() ' Set the form status to Locked when the form is loaded SetRecordStatus Me, LockedStatus End Sub Private Sub btnAddNew_Click() ' Set the form status to NewRecord when the New button is clicked SetRecordStatus Me, NewRecordStatus End Sub Private Sub btnSave_Click() ' Save the current record and set the form status to Locked when the Save button is clicked SetRecordStatus Me, SaveRecordStatus End Sub Private Sub BtnEdit_Click() ' Set the form status to EditRecord when the Edit button is clicked SetRecordStatus Me, EditRecordStatus End Sub المرفق حفظ وتعديل.accdb
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 2 ساعات مضت, ابو جودي said: تبعا لوظيفة كل زر باسهل ما يكون واللة يابشمهندس ابدعت وجزاك الله كل خير وبارك الله فى اسرتك ولى بعض الملاحظات الصغيرة وهذا لا يقلل من عبقرية الموديول اولا عند الضغط على الليست بوكس لا يظهر على اليسار اسم هذا الصنف وبياناته ثانيا : ياريت عند فتح النموذج لا يكون كل الحقول غير ممكنة (بضم الميم) يعنى لونها قاتم اشكرك استاذى ومعلمى انا ياما دللت وانت المستجيب كل الاحترام والتقدير
ابو جودي قام بنشر مايو 31 قام بنشر مايو 31 جزاكم الله خيرا يا دكتور على دعواتكم الطيبة اسال الله تعالى ان يرزقكم فضلها اضعافا مضاعفة انتم ومن تحبون وكل المسلمون والمؤمنون 3 دقائق مضت, الحلبي said: اولا عند الضغط على الليست بوكس لا يظهر على اليسار اسم هذا الصنف وبياناته يا دكتور الليست بوكس ده انا من قام باضافته للتأمد فقط فهو بدون اى اكواد لان حضرتك طلبت منع التعديل ولكن تفعيل الليست بوكس 5 دقائق مضت, الحلبي said: ثانيا : ياريت عند فتح النموذج لا يكون كل الحقول غير ممكنة (بضم الميم) يعنى لونها قاتم يعنى انت عاوز عند قتح النموذج يكون فى تعديل عادى واللا بس اللون اللى مزعلك علشان افهم وحضرتك تأمر يا دكتور س تحملنى فى نفس الوقت انت عارف انى صعيدى ومخى مقفل فواحدة واحدة على الله يرضى عليك
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 11 ساعات مضت, ابو جودي said: وحضرتك تأمر يا دكتور س تحملنى الله يرضى عنك يابشمهندس انا عملت عند الضغط على الليست بوكس تظهر بيانات الصنف على اليسار بالنسبة للون الحقول خلاص انا تقبلتها بنفس اللون عشان يكمل الكود واخيرا لايسعنى الا ان اقول لك بارك الله فى علمك وجعلك خير مساعد لنا خلى بالك انا صعيدى بحت والصعايدة مخهم واسع ومدرك لمظاهر الحياة بس هى العصبية شوية عندهم جزاك الله كل خير
ابو جودي قام بنشر مايو 31 قام بنشر مايو 31 2 دقائق مضت, الحلبي said: انا عملت عند الضغط على الليست بوكس تظهر بيانات الصنف على اليسار ممكن المرفق من فضلك علشان اقدر افهم بالليست بوكس بتاعك بالاكواد الاصلية وانا ان شاء الله هاضبط لك كل شئ يرضيك بامر الله
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 5 دقائق مضت, ابو جودي said: ممكن المرفق من فضلك علشان اقدر افهم بالليست بوكس بتاعك بالاكواد الاصلية استاذى الفاضل المرفق موجود عند حضرتك فى خامس مشاركة لى والاستاذ / الوزير اتم عملية الفلترة للتسكت بوكس وانا قمت ببعض التعلايلات عشا النموذج بعد عملية الحفظ لايقبل التعديل وبعد الضغط على زر التعديل نتمكن من التعديل على النموذج والمرفق هذا مصغر جدا لانى طبعا النموذج الاصلى كبير وبه كثير من الجداول والاستعلامات والازرار اشكرك على الاهتمام والحرض على تلاميذك الصغار
ابوخليل قام بنشر مايو 31 قام بنشر مايو 31 السلام عليكم مشكلتك الحقيقية في الاكواد والاجراء الذي يتم عند تحميل النموذج اليك حل بسيط ومحكم فقط التعامل يتم مع الحقول وليس مع النموذج اذا الحقول كثيرة جدا لديك .. يمكن التعامل معها بعمل لوب حفظ وتعديل4.rar 1
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 (معدل) 19 دقائق مضت, ابوخليل said: ذا الحقول كثيرة جدا لديك .. يمكن التعامل معها بعمل لوب ياسلام عليك يا معملنا واستادنا الجليل ابو خليل فعلا هذا حل بسيط ومحكم وجميل جدا وكمان عند التعديل يلزم ادخال كلمة مرور الله الله عليك سلمت يمنيك نعم الحقول كثيرة عندى فكيف يتم عمل اللوب واذا كانت المسألة صعبه فأنى اكتفى بذلك كل الاخترام لشخكم الكريم وجعلكم دائما خير مساعدا لنا تم تعديل مايو 31 بواسطه الحلبي
ابوخليل قام بنشر مايو 31 قام بنشر مايو 31 تفضل Dim intControlType As Integer For Each ctl In Me.Controls intControlType = ctl.ControlType If (intControlType = acCheckBox) Or (intControlType = acComboBox) Or (intControlType = acTextBox) Then If isEditing = False Then ctl.Locked = False Else ctl.Locked = True End If End If Next ctl حفظ وتعديل5.rar
ابو جودي قام بنشر مايو 31 قام بنشر مايو 31 واعتذر عن التأخير النور كان قاطع بعد اذن والدى الحبيب و معلمي الجليل و واستاذى القدير الاستاذ @ابوخليل اكمل ما بدأتـه وأضع المرفق الاتي تدلل يا دكتور @الحلبي و يا دكتور الشرح لكل تفصيله بعد التجربة حفظ وتعديل (2).accdb
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 20 دقائق مضت, ابو جودي said: و يا دكتور الشرح لكل تفصيله بعد التجربة حبيبى ابو جودي ايه ده تنسيق ولا اروع تنسيق جميل جدا انا مش مصدق كل هذه الديكورات نعم نعم نعم تسليم يمنيك وربنا يبارك لك فى ابناءك وتشوفهم يارب دكاترة يمكن اكون فهمت شوية حضرتك انت قمت بتجزئ الوديول الى قسمين وعند التنفيذ وضعت الكود الخاص به حاجة جميلة بجد باشمندسنا الله ينور عليك بجد انا جربت وشوفت حاجات وعبقرية مفيش كده 26 دقائق مضت, ابو جودي said: و يا دكتور الشرح لكل تفصيله بعد التجربة ان قدرت وكان لديك متسع من الوقت تشرح لى باختصار ما تم عمله لانى تقريبا حسب علمى انا فمت
ابو جودي قام بنشر مايو 31 قام بنشر مايو 31 دكتور انا قمت بإضافة من تلقاء نفسي بما انك تريد اغلاق التعديل لابد من انك تريد حماية البيانات من التعديل عن طريق الخطأ وطبعا زر التعديل لن يقوم بهذه الوظيفة ان تم النقر عليه عن طريق الخطأ ومن اجل ذلك اضفت لكم هدية صغيرة والتي أتمني ان تلقي استحسانكم ورضاكم وتم التغلب على لون الحقول 6 دقائق مضت, الحلبي said: ايه ده تنسيق ولا اروع تنسيق بل انتم الاجمل والاروع 6 دقائق مضت, الحلبي said: وربنا يبارك لك فى ابناءك وتشوفهم يارب دكاترة جزاكم الله خيـرا على دعواتكم الطيبة 6 دقائق مضت, الحلبي said: انا جربت وشوفت حاجات وعبقرية اهم شئ هل المرفق الان يلبى كل احتياجاتكم وتطلعاتكم كما اردتم يا دكتور حتى اقوم بالشرخ ام هناك فى نفسك حاجة ما تريد اضافتها او تعديلها ؟!
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 16 دقائق مضت, ابو جودي said: م هناك فى نفسك حاجة ما تريد اضافتها او تعديلها ؟! انا والله العظيم نفسى ربنا يجزيك كل خير ومش عارف اقولك ايه على حرصك الشديد بان يكون العمل كامل لا يابشمهندس انا منتظر الشرح 1
ابو جودي قام بنشر مايو 31 قام بنشر مايو 31 على بركة الله وبسم الله ولكن انا سوف اشرح ما تم عمله طبقا للمرفق وبعد ذلك سوف اخبركم برأى فى الاخر اولا الموديول باسم : 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" من خلال دالة واحدة تستطيع استكمال اجراء من خلال كلمات مرور مختلفة وليس كلمة واحدة مثل قتح اكثر من نموذج وكل واحد يحتاج الى كلمة مرور غير كلمة المرور المستخدمه مع غيره ملحوظة ثغنونه اثناء الشرح قمت بتعديل دالة كلمة المرور
الحلبي قام بنشر مايو 31 الكاتب قام بنشر مايو 31 منذ ساعه, ابو جودي said: ملحوظة ثغنونه اثناء الشرح قمت بتعديل دالة كلمة المرور الله عليك يااستاذ محمد عصام ونعم الشرح والتوضيح وسوف يأخذ فى الاعتبار الملحوظة الثغنونةـ وبهذا الشرح المتقن لا يكون عندى اى عذر فى اطبق هذا الشرح على جميع اعمالى واسمح لى استاذ محمد (فكرتنى بايام المذاكرة) هذ الشرح يحتاج منى وقفة ودراسة لهذا الشرح وكما تعودت لا اترك كلمة والا قد فهمتها واذا توقف معى شئ سوف ارجع لك الان اصبح لدى ثلاث حلول حل الاستاذ @AlwaZeeR وحل شيخنا الجليل @ابوخليل وحل باشمهندسنا @ابو جودي جزاكم الله خيرا جميعا وزادكم الله علما نافعا واشكركم من كل قلبى واسمحوا لى اشكر الاستاذ/ محمد عصام ابو جودى على تعبه وهذا الشرح الذى سوف ياخذ منى وقت كبير بارك الله فيكم جميعا 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.