-
Posts
6,830 -
تاريخ الانضمام
-
Days Won
186
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابو جودي
-
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
على بركة الله وبسم الله ولكن انا سوف اشرح ما تم عمله طبقا للمرفق وبعد ذلك سوف اخبركم برأى فى الاخر اولا الموديول باسم : 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" من خلال دالة واحدة تستطيع استكمال اجراء من خلال كلمات مرور مختلفة وليس كلمة واحدة مثل قتح اكثر من نموذج وكل واحد يحتاج الى كلمة مرور غير كلمة المرور المستخدمه مع غيره ملحوظة ثغنونه اثناء الشرح قمت بتعديل دالة كلمة المرور -
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
دكتور انا قمت بإضافة من تلقاء نفسي بما انك تريد اغلاق التعديل لابد من انك تريد حماية البيانات من التعديل عن طريق الخطأ وطبعا زر التعديل لن يقوم بهذه الوظيفة ان تم النقر عليه عن طريق الخطأ ومن اجل ذلك اضفت لكم هدية صغيرة والتي أتمني ان تلقي استحسانكم ورضاكم وتم التغلب على لون الحقول بل انتم الاجمل والاروع جزاكم الله خيـرا على دعواتكم الطيبة اهم شئ هل المرفق الان يلبى كل احتياجاتكم وتطلعاتكم كما اردتم يا دكتور حتى اقوم بالشرخ ام هناك فى نفسك حاجة ما تريد اضافتها او تعديلها ؟! -
ياريت هذا الموضوع فى الاكسس فقير جدا جدا جدا وكان الحل الافضل للتعامل مع الاسكانر من الاكسس برامج وسيطة من خلال Commanline خاص بها ولذلك الموضوع شبه معقد ونحن مجكومون فقط بما قد تقدمه لنا هذه البرامج الوسيطه بعكس مثلا التعامل مع الاسكانر من خلال ال vb.net يمكنك التحكم فى كل تفصيلة وكبيرة وصغيرة مباشرة من الاكواد
-
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
للتوضيح المرفق السابق بمجرد إضافة أي تقارير تظهر بطريقة الية ضمن قائمة التقارير وللأمانة العلمية والأخلاقية حتى يأخذ كل ذي حق حقه المرفق في الأساس اعتقد ان لم تخونني الذاكرة كان للأستاذة زهرة ام عهود بارك الله فيها وفى ذريتها والتي لم بسعدني الحظ بالتعرف عليها او التعامل معها شخصيا الا ان لها فضل كبير في ما تعلمته وهى غائبة اسال الله تعالى ان يرزقها وكل اساتذتنا الذين نتعلم منهم خير الجزاء وان يتقبل ما يقدمونه في موازين أعمالهم صدقة جارية وعلم ينتفع به اللهم امين امين امين انا فقط اضفت وقمت ببعض التعديلات ليتناسب مع النواتان 32,64 ولاضفاء مرونة اكبر والتى تناسب تطلعاتى وقتها -
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
واعتذر عن التأخير النور كان قاطع بعد اذن والدى الحبيب و معلمي الجليل و واستاذى القدير الاستاذ @ابوخليل اكمل ما بدأتـه وأضع المرفق الاتي تدلل يا دكتور @الحلبي و يا دكتور الشرح لكل تفصيله بعد التجربة حفظ وتعديل (2).accdb -
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
ممكن المرفق من فضلك علشان اقدر افهم بالليست بوكس بتاعك بالاكواد الاصلية وانا ان شاء الله هاضبط لك كل شئ يرضيك بامر الله -
عاوز نسخة مفتوحة لحسن هأعيط واخلى الناس تتلم عليك
-
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
جزاكم الله خيرا يا دكتور على دعواتكم الطيبة اسال الله تعالى ان يرزقكم فضلها اضعافا مضاعفة انتم ومن تحبون وكل المسلمون والمؤمنون يا دكتور الليست بوكس ده انا من قام باضافته للتأمد فقط فهو بدون اى اكواد لان حضرتك طلبت منع التعديل ولكن تفعيل الليست بوكس يعنى انت عاوز عند قتح النموذج يكون فى تعديل عادى واللا بس اللون اللى مزعلك علشان افهم وحضرتك تأمر يا دكتور س تحملنى فى نفس الوقت انت عارف انى صعيدى ومخى مقفل فواحدة واحدة على الله يرضى عليك -
ياريت يا استاذ @أبو علياء عاطف تقولى النتيجة بعد تجربة المرفق خد بالك علشان احنا صعايدة زى بعض بس انا قلت اجيب لك المرفق
-
قائمة ازرار ديناميكية شخابيط : طى وتوسيع قائمة الازرار
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
تم اضافة الاصدار الثانى فى الراس الموضوع ( المشاركة الاصلية) طبعا على طريقة المعقدين امثالى با استاذ @Moosak لانه لم نحصل حتى الان على الحلول البسيطة السهلة بتاعة الناس الرايقة التى لا تستخدم السلاسل الطويلة وياريت لو تتكرم يا استاذ @Moosak بعمل تصوير gif من واقع تجربة المرفق الثانى لكل من النموذجين وترفقهم برأس الموضوع لان جهازى يختضر -
الحل هنا سيدى بدون تعب فقط افتح القاعدة المرفقة واضغط على زر امر اظهار وتفعيل ورقة الخصائص وادخل الى وضع التصميم property sheet visible or not _ UP V2.mdb
-
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
باش مهندسة @hanan_ms والدكتورة @safaa salem5 اتفضلو المرفق ده Full Control Of Print Report التحكم في الطابعة وخصائصها طباعة التقارير.mdb -
فكرة الساعات بصراحة هى اللى تعبتنى حبتين ولكن يا استاذى الجليل كنتم السبب فيها بوضعكم لصورة تخيلية عن الموضوع بشكل الساعات وانا تعلمتم على ايديكم ولازلت اتعلم منكم وكل اساتذتى العظماء جزاكم الله عنا كل خير
- 7 replies
-
- 1
-
- التوقيت العالمي الموحد (utc)
- (utc)
- (و7 أكثر)
-
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
اتفضل يا دكتور تدلل قم بعمل موديول جديد واعطه مصلا الاسم : 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 -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
بصى يا باش مهندسة حنان خلينا نتفق على شئ الاكسس لا يتعامل بمقياس السنتيمتر فى القياسات ولكن يتعامل بالـ Twips يعنى الرقم اللى حضرتك ناوية تسجليه فى الجدول هيكون بالسنتميتر وطبعا ده كان وفقا لطلب الدكتورة سلمى اللى لازم تطلع عنينا بطلباتها لانها عاوزة تسجل الهوامش بالسنتميتر طيبا علشان نحول من انا كتبت الدالة دى Public Function CmToTwips(cm As Double) As Long CmToTwips = cm * 567 End Function فطبيعيى ان حضرتك لو كتبتى ارقام غير منطقية تحصلى على نتيجة غير منطقية لذلك انا افضل فكرة حضرتك DoCmd.RunCommand acCmdPageSetup -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
لا شكر على واجب تحت امرك يا دكتور -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
اهلا بيكى يا افندم وفكرة حضرتك حلوة جدا فكرتنى بشئ انتظروا وسوف اوافيكم بأفكار رائعة ان شاء الله -
زر لحفظ بيانات النموذج ولا يمكن التعديل عليه وزر للتعديل عليه
ابو جودي replied to الحلبي's topic in قسم الأكسيس Access
والله يا دكتور انا كنت بأجهز فكرة -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
اتفضلى يا استاذة @safaa salem5 المرفق هوامش التقارير.accdb -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
هأرفع المرفق حالا ادينى دقايق اسف النور كان قاطع -
ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
هو مش بيطلبهم من حضرتك ولا حاجة حضرتك عامل ان التقرير مصدر سجلاته الجدول افتحى التقرير فى وضع التصميم هتلاقى مصدر بيانات مربعات النص مش مظبوظ علشان كده بتحثل مع حصرتك المشكلة دى -
ايت المرفق . نظريا اعمل استعلامين الاول استعلام ضافة لنسخ القيم نت حقول الجدول الاول الى الجدول الثانى بعذ ذلك اعمل استعلام حذف للبيانات من الجدول الاول طبعا لازم يكون فى شرط والا راح تتنسخ كل البيانات وتنحذف كل البيانات انتبه
-
طيب المرفق 3 الطريقة التقليدية العادية المرفق 4 بطريقة الدالة التى قمت بشرحها قبل قليل اولا يجب تعديل مصدر بيانات مربع السرد ليحتوى على قيم الاشتراك test (3) .accdb test (4) .accdb
-
شوف يا سيدى انا كتبت دالة فى مودبول يعنى فى وحدة نمطية علشان نقدر نستخدمها فى اى مكان وبكل سهولة معلش يبدو انه عند التعامل معى من الوهلة تعتبرنى معقد ولكن انا اتعب قلبلا فى البداية عند بلورة الفكرة واثناء كتابتها ولكن النتيجة بعد ذلك تاتى بافضل الثمار لقد قمت بكتابة هذه الدالة Option Compare Database Option Explicit ' This function automatically fills a text box based on the value of a combo box. ' Parameters: ' form: Reference to the form containing the controls. ' comboBoxName: Name of the combo box control. ' Optional textBoxName: Name of the text box control to be filled automatically. Default is "TextBoxName". ' Optional multiSelect: Boolean to indicate if the combo box allows multiple selections. Default is False. ' Optional columnIndex: Index of the column to be used if the combo box has multiple columns. Default is 0. Public Sub FillTextBoxFromComboBox(Form As Form, comboBoxName As String, Optional textBoxName As String = "TextBoxName", Optional multiSelect As Boolean = False, Optional columnIndex As Integer = 0) ' On Error GoTo ErrorHandler ' Reference to the combo box control Dim comboBox As comboBox Set comboBox = Form.Controls(comboBoxName) ' Reference to the text box control Dim textBox As textBox Set textBox = Form.Controls(textBoxName) ' Check if the combo box contains items If comboBox.ListCount > 0 Then ' Single column case If comboBox.ColumnCount = 1 Then ' Check if multi-select is enabled If Not multiSelect Then ' Single value textBox.Value = comboBox.Value Else ' Multi-value Dim selectedItems As String Dim i As Integer For i = 0 To comboBox.ItemsSelected.Count - 1 selectedItems = selectedItems & comboBox.ItemData(comboBox.ItemsSelected(i)) & "; " Next i ' Remove the trailing semicolon If Len(selectedItems) > 2 Then selectedItems = Left(selectedItems, Len(selectedItems) - 2) Else selectedItems = "" End If textBox.Value = selectedItems End If ' Multiple columns case ElseIf comboBox.ColumnCount > 1 Then ' Check if multi-select is enabled If Not multiSelect Then ' Single value textBox.Value = comboBox.Column(columnIndex) ' Adjust the column index here as needed Else ' Multi-value For i = 0 To comboBox.ItemsSelected.Count - 1 selectedItems = selectedItems & comboBox.Column(columnIndex, comboBox.ItemsSelected(i)) & "; " ' Adjust the column index here as needed Next i ' Remove the trailing semicolon If Len(selectedItems) > 2 Then selectedItems = Left(selectedItems, Len(selectedItems) - 2) Else selectedItems = "" End If textBox.Value = selectedItems End If End If End If ' Exit Sub ' 'ErrorHandler: ' Select Case Err.Number ' Case 5 ' MsgBox "Error 5: Invalid procedure call or argument. Check if the selectedItems length is valid.", vbExclamation, "Error in FillTextBoxFromComboBox" ' Case 13 ' MsgBox "Error 13: Type mismatch. Ensure the correct data types are used.", vbExclamation, "Error in FillTextBoxFromComboBox" ' Case 91 ' MsgBox "Error 91: Object variable or With block variable not set. Ensure all controls are properly referenced.", vbExclamation, "Error in FillTextBoxFromComboBox" ' Case 424 ' MsgBox "Error 424: Object required. Ensure all controls exist on the form.", vbExclamation, "Error in FillTextBoxFromComboBox" ' Case Else ' MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "Error in FillTextBoxFromComboBox" ' End Select End Sub على ان يتم استدعاء الدالة بالشكل التالى ' Replace "ComboBoxName" and "TextBoxName" with the actual names of your controls ' Call FillTextBoxFromComboBox(Me, "ComboBoxName", "TextBoxName", False, 1) ' Adjust parameters as needed فى اى نموذج ومع اى مربع تحرير وسرد وع اى مربع نص مهما كانت الاسماء من خلال الكود المناسب تبعا للحالات التى شرحتها لك قبل قليل حسب مربع التحرير والسرد كل ما عليك فقط تغيير اسم ComboBoxName فى اكواد الاستدعاء باسم مربع السرد الذى تريد التعامل معه باحضار بياناته وكذلك تغيير اسم TextBoxName باسم مربع النص ' Single Column, Single Value: Call FillTextBoxFromComboBox(Me, "ComboBoxName") ' Single Column, Multi-Value: Call FillTextBoxFromComboBox(Me, "ComboBoxName", "TextBoxName", True) ' Multiple Columns, Single Value: Call FillTextBoxFromComboBox(Me, "ComboBoxName", "TextBoxName", False, 1) ' Column index 1 ' Multiple Columns, Multi - Value: Call FillTextBoxFromComboBox(Me, "ComboBoxName", "TextBoxName", True, 1) ' Column index 1 مرفق للتجربة Get Value Combo Box Multi Select.accdb