اذهب الي المحتوي
أوفيسنا

Foksh

أوفيسنا
  • Posts

    4011
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    167

كل منشورات العضو Foksh

  1. صديقي العزيز أستاذ عمر ، 🥰 أجمعين يا رب العالمين 🤲 يسعدني ويشرفني مرورك 🤗
  2. جرب هذا الإتجاه في الحل ، أعتقد أفضل من فكرة أن تجعل جميع القيم في التنسيق الشرطي ( من وجهة نظري ) tamer.accdb
  3. زي كده !! New Microsoft Access Database (2).accdb
  4. أستاذنا الغالي @Moosak ، نورتني بكلامك الجميل ، بصراحة حبيت يكون الموضوع مختلف عما قد يخطر في البال ، ومن جهة التعديل سيكون الأمر أسهل من خارج قاعدة البيانات . وبالنسبة للمستك السحرية ، فبارك الله فيك ، وهكذا زاد الجميل جمالاً بالنسبة لي مع تصحيح اسم الدالة RestartAccess أخت صفاء ، للأسف لم أقم بتطوير الفكرة لهذا الحد ؛ ومن وجهة نظري أعتقد أن لها تبعات أخرى ومشاكل بالنسبة لموضوع الإرتساء للكائنات .
  5. نعم تتبع 100 % في الاكواد يوجد ملاحظات لم اتطرق لها ، تركتها محور نقاش لأساتذتي
  6. السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) اليوم جئتكم بفكرة جديدة وأعتقد أنه لم يسبقني أحد بهذا الطريق ؛ وهو إضافة اختيار واجهة اللغة إلى تطبيقات وبرامج ومشاريع الآكسيس بطريقة جديدة وتقدروا تقولوا 2024 في البداية سأقوم بشرح المطلوب داخل القاعدة التي سيتم التطبيق عليها ، أولاً :- جدول واحد فقط يحتوي على حقل واحد فقط أيضاً وسنسميه بـ SettingsTable ، والحقل الذي بداخله هو Language من نوع نصي ( Text ) . ثانياً :- نموذج Settings وهو طبعاً ليس له مصدر سجلات . وبداخله كومبوبوكس Combo box سيكون اسمه cboLanguage نوع مصدر بياناته Value List ؛ ومصدر بياناته القيم التالية ( "العربية";"English" ) . ثالثاً :- بجانب قاعدة البيانات سنقوم بإنشاء مجلد جديد وسيتم تسميته بـ Language . الآن خطوات العمل :- الموديول Module :- قم بإنشاء Module جديد وسمه بـ Set_Language ؛ وهو مفتاح العمل والذي من خلاله سنعتمد على جلب الترجمة من الملفات التي سنقوم بإنشائها لاحقاً . وهذا الكود مع الشرح الكامل له بين السطور . Option Compare Database Option Explicit ' المتغير العام لتخزين اللغة الحالية Public CurrentLanguage As String ' تحديث اللغة الحالية Public Sub UpdateLanguage() On Error Resume Next ' احصل على اللغة المحددة من جدول الإعدادات CurrentLanguage = DLookup("Language", "SettingsTable") ' قم بتحديث العلامات في جميع النماذج UpdateLabelsInAllForms End Sub ' تحديث العلامات في جميع النماذج Private Sub UpdateLabelsInAllForms() Dim frm As AccessObject ' تحديث العلامات في جميع النماذج المحملة For Each frm In CurrentProject.AllForms If frm.IsLoaded Then UpdateLabelsInForm Forms(frm.Name) End If Next frm End Sub ' تحديث العلامات في نموذج محدد Private Sub UpdateLabelsInForm(frm As Object) Dim arFile As String, enFile As String Dim arLabels() As String, enLabels() As String Dim i As Integer ' احصل على ملف اللغة العربية واللغة الإنجليزية arFile = GetLanguageFilePath("Arabic.txt") enFile = GetLanguageFilePath("English.txt") ' اقرأ الملفات واملأ المصفوفات بالنصوص المترجمة arLabels = Split(ReadFile(arFile), vbCrLf, -1) enLabels = Split(ReadFile(enFile), vbCrLf, -1) ' قم بتحديث العلامات في النموذج For i = 0 To UBound(arLabels) UpdateLabel frm, "Label" & CStr(i + 1), arLabels(i), enLabels(i) UpdateLabel frm, "Command" & CStr(i + 1), arLabels(i), enLabels(i) Next i End Sub ' احصل على مسار قاعدة البيانات الحالية Private Function GetDatabasePath() As String Dim dbPath As String dbPath = CurrentDb.Name GetDatabasePath = Left(dbPath, InStrRev(dbPath, "\")) End Function ' احصل على مسار ملف اللغة Private Function GetLanguageFilePath(fileName As String) As String GetLanguageFilePath = GetDatabasePath() & "Language\" & fileName End Function ' اقرأ ملف النص وارجع النص كنص نصي Private Function ReadFile(filePath As String) As String Dim fileNumber As Integer fileNumber = FreeFile Open filePath For Input As fileNumber ReadFile = Input$(LOF(fileNumber), fileNumber) Close fileNumber End Function ' تحديث علامة محددة في النموذج بناءً على اللغة الحالية Private Sub UpdateLabel(frm As Object, labelName As String, arabicText As String, englishText As String) On Error Resume Next ' قم بتحديث العلامة بناءً على اللغة الحالية frm.Controls(labelName).Caption = IIf(CurrentLanguage = "العربية", arabicText, englishText) On Error GoTo 0 End Sub * ملاحظة :- سنعتمد هنا على طريق بسيط جداً وهو المسميات في النماذج ، فمثلاً لو انشأنا زر في نموذج ما وكانت تسميته Caption هي حفظ وكان اسم الزر Command1 ؛ فعند الترجمة سيصبح كل زر في البرنامج باسم Command1 هو بمثابة زر الحفظ وستكون ترجمته Save ؛ لذا سنعتمد طريقة توحيد المسميات في النماذج وهذا سيجعل الأمر سهلاً جداً للصيانة ، وطبعاً لا يمكن أن يكون لعنصرين ( كائنين ) في النموذج لهما نفس الإسم . رابعاً :- العودة إلى نموذج Settings الذي تم التحدث عنه في النقطة ( ثانياً ) ؛ سنقوم بدايةً باستكمال إنشاء الأكواد الخاصة بتغيير اللغة ، قبل الأحداث للـ Combo Box والنموذج . سنقوم بإدراج هذه الأكواد الثلاثة البسيطة :- ' تحديث العناصر في النموذج بناءً على اللغة المختارة Private Sub UpdateLanguageForControls() On Error Resume Next Dim ctrl As AccessObject For Each ctrl In Me.Controls ' يمكنك هنا إضافة العناصر الأخرى التي تريد تحديثها بناءً على اللغة ' مثلا: If TypeOf ctrl Is ComboBox Then Next ctrl End Sub ' حفظ اختيار اللغة في جدول SettingsTable Private Sub SaveLanguageChoice() CurrentDb.Execute "UPDATE SettingsTable SET Language='" & Me.cboLanguage & "'" End Sub ' تغيير اللغة وتحديث العناصر ذات الصلة Private Sub ChangeLanguage(selectedLanguage As String) CurrentDb.Execute "UPDATE SettingsTable SET Language='" & selectedLanguage & "'" UpdateLanguageForControls End Sub وفي حدث عند الفتح للنموذج سنقوم بإدراج هذا الكود :- ' حدث يتم تنفيذه عند فتح النموذج Private Sub Form_Open(Cancel As Integer) UpdateLanguage End Sub وفي حدث عند التحديث للكومبوبوكس سندرج الكود التالي :- ' حدث يتم تنفيذه بعد تحديث اختيار اللغة من ComboBox Private Sub cboLanguage_AfterUpdate() Dim response As VbMsgBoxResult Dim Language As String ' احصل على اللغة المحددة من ComboBox Language = Me.cboLanguage.Value ' قم بتحديد الرسالة بناءً على اللغة المختارة If Language = "العربية" Then response = MsgBox("هل ترغب في تغيير اللغة إلى العربية؟", vbQuestion + vbYesNo, "التأكيد") ElseIf Language = "English" Then response = MsgBox("Do you want to change the language to English?", vbQuestion + vbYesNo, "Confirmation") End If ' قم باتخاذ الإجراء المناسب بناءً على رد المستخدم If response = vbYes Then SaveLanguageChoice Application.Quit Else SaveLanguageChoice DoCmd.Close End If End Sub الآن نأتي لأهم نقطة في هذا الموضوع ، ألا وهي . أين ستكون الترجمة ؟ طبعاً قمنا سابقاً بإنشاء المجلد Language بجانب قاعدة البيانات ، الآن سنذهب إليه وسنقوم بإنشاء ملفين نصيين Text الأول Arabic.txt ، والثاني English.txt . في الأعلى افترضنا انه لدينا في النموذج زر اسمه Command1 والـ Caption له كانت حفظ ، الآن سنقوم بكتابة المسمى بالعربي وهو حفظ في ملف النص Arabic ، وفي الملف الثاني English سنكتب Save وهو أول أمر قمنا به كتجربة ( لاحظ أن Command يتبعها الرقم 1 ) وعليه فأن أي مسمى Command1 في أي نموذج سيكون اسمه حفظ أو Save عند اختيار الإنجليزية . وفي النهاية سأترك مرفق يحتوي تطبيق لما تحدثنا به سابقاً . والمتابعة لأي استفسار أو توضيح Change Language.zip
  7. استخدم الدالة DCount في مصدر اي مربع نص تريد التعداد فيه . =DCount("*", "اسم_الجدول") فقط قم بتغيير اسم الجدول حسب حاجتك .
  8. بسيطة اخوي ، قم بإضافة شرط التاريخ مثل استعلامك الى استعلامي ، وأعطيني النتيجة
  9. سطر أو سطرين ، الله يسامحك 😅 اذا بالسطور تقدر تخليه سطر واحد وهو إنك تحط السطور جنب بعضها وتفصل بينهم بعلامة نقطتين : ، وإذا الفكرة بتغيير المنهج اللي انت متبعه ، فجرب هذا الكود Select Case Me.commanfaz Case "منفذ1" ShowControls True Me.txtID.Enabled = False Me.txtitems.Enabled = False Me.txtmag.Enabled = False Case "منفذ2" ShowControls True Me.txt2.Visible = True Me.txtm2.Visible = True Me.txtID.Enabled = False Me.txtitems.Enabled = False Me.txtmag.Enabled = False Case "منفذ3" ShowControls True Me.txt3.Visible = True Me.txtm3.Visible = True Me.txtID.Enabled = False Me.txtitems.Enabled = False Me.txtmag.Enabled = False Case Else ShowControls False End Select Sub ShowControls(visibility As Boolean) Me.txt1.Visible = visibility Me.txtm1.Visible = visibility Me.txt2.Visible = visibility Me.txtm2.Visible = visibility Me.txt3.Visible = visibility Me.txtm3.Visible = visibility Me.txt4.Visible = visibility Me.txtm4.Visible = visibility Me.txt5.Visible = visibility Me.txtm5.Visible = visibility Me.txt6.Visible = visibility Me.txtm6.Visible = visibility Me.txt7.Visible = visibility Me.txtm7.Visible = visibility Me.txt8.Visible = visibility Me.txtm8.Visible = visibility Me.txtmst.Visible = visibility Me.txtstrorag.Visible = visibility End Sub
  10. تفضل اخي @gavan 1.accdb
  11. انتظرني غداً إن شاء الله بموضوع تغيير اللغة بطريقة جميلة وإن شاء الله تسمح الظروف بذلك 😉
  12. لعلك قمت بحذف جداول النظام المخفية في القاعدة
  13. ولا يهمك أخي الكريم @figo82eg ، في منتدانا إن شاء الله تجد الحل لأي مشكلة قد تواجهك . أهلا وسهلاً بك
  14. اخي الكريم سبب ماذا ؟ مساحة ماذا ؟؟ تحويل ماذا ؟؟
  15. تفضل أخي @salah.sarea . لديك طريقتين للنسخ الإحتياطي لقاعدة البيانات المقسمة ، وتم انشاء كود جديد للإستعادة . بيانات.zip
  16. تفضل محاولتي أخي الكريم @figo82eg . New Microsoft Access Database.accdb
  17. تم التعديل بطريقة أخرى ,, Private Sub Text26_BeforeUpdate(Cancel As Integer) Dim inputValue As String Dim validCharacters As String Dim i As Integer validCharacters = "RAFBDIQ0123456789" inputValue = Nz(Me.Text26.Value, "") For i = 1 To Len(inputValue) If InStr(validCharacters, Mid(inputValue, i, 1)) = 0 Then MsgBox "ÅÏÎÇá ÍÑæÝ ÛíÑ ÕÍíÍ", vbExclamation, "Error" Cancel = True Exit Sub End If Next i End Sub حيث Text26 اسم مربع النص في نموذجك
  18. ممكن التوضيح أكثر 🤔 وإن كنت قد فهمت من حديثك ما تصورته ، فجرب هذا الكود Private Sub YourTextbox_KeyPress(KeyAscii As Integer) ' تحقق من أن الحرف المكتوب هو أحد الأحرف "RAFBDIQ" أو إحدى الأرقام من 0 إلى 9 If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) And _ Not (KeyAscii >= Asc("A") And KeyAscii <= Asc("Z")) And _ Not (KeyAscii >= Asc("a") And KeyAscii <= Asc("z")) Then ' إلغاء الحرف إذا لم يكن مسموحًا KeyAscii = 0 End If End Sub يقوم هذا الكود بمنع إدخال أي حرف غير مسموح به من قبل المستخدم ، وذلك عن طريق إلغاء الحرف إذا لم يكن أحد الأحرف "RAFBDIQ" أو إحدى الأرقام من 0 إلى 9.
×
×
  • اضف...

Important Information