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

Foksh

الخبراء
  • Posts

    2,155
  • تاريخ الانضمام

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

  • Days Won

    78

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

  1. تفضل أخي الكريم ، موضوع جديد وحل لمشكلتك من الأستاذ الفاضل @ابوخليل ، في هذه المشاركة أدناه . عرض حقول محددة في التقرير حسب الاختيار
  2. أحسنت وأبدعت معلمنا @ابوخليل ، هذه الفكرة تقريباً مشابهة لإحدى أفكارك سابقاً التي تقوم بعرض اعمدة محددة في النموذج حسب المستخدم ، ولكن هذه المرة في التقارير . وهذا يجعل الأمر متكاملاً جزاك الله كل الخير لما صنعت
  3. أخي @HaniMoursi لضيق الوقت في العمل ، تأكد بداية من المجاميع ان كانت صحيحة وأخبرني ، للمتابعة بأقرب فرصة . قيمه (1).accdb
  4. تفضل أخي @سامر محمود . أولا تم اضافة استعلام تحديث بسيط ، وتمت بعض التعديلات . Investi.accdb
  5. في الواقع لم أقم بالتأكد من المجموع ، ولكني اكتشفت انني لم اقم بتعديل التاريخ في الاستعلام أثناء التجارب ، تم التعديل ، تفضل 🥰 وأتمنى ان تتأكد من النتيجة ، وأخبرنا إن كان هناك ملاحظات. قيمه.accdb
  6. اخي @سامر محمود انشىء قاعدة بيانات جديدة وقم باستيراد المكونات الى القاعدة الجديدة ، مع اضافة المكتبات في محرر VBA وإن شاء الله ستعمل معك بشكل طبيعي 😊 متابع معك 😊
  7. يسعدني كلامك 🤗 لا تنسَ إغلاق الموضوع باختيار أفضل إجابة 😀
  8. ظنك في محله يا صديقي ، ولكن ما رأيك لو جعلنا المجلدات الفرعية التي تريد عرض محتوياتها ان تكون داخل مجلد واحد رئيسي بجانب قاعدة بيانات ؟؟ او حدد لي فكرتك وإن شاء الله بتتنفذ.
  9. أخي الكريم غير المسار الرئيسي فقط . حيث أن هذا المسار "C:\Users\Golden\Desktop\مثال أكسس\" هو مسار المجلد في جهازي ، فقط استبدله بمسار المجلد في جهازك .,
  10. تفضل أخي التعديل بسيط ، ولكن حسب طلبك مثال أكسس.zip
  11. أخي الكريم @Bshar .. في الحالتين سيتم فتح سجل جديد عند Yes أو No ، لذا انقل مكان السطر المسؤول عن فتح سجل جديد لما قبل فتح MS4 On Error Resume Next If [Forms]![recept_a_q]![w1]![n3] <> 0 Then DoCmd.OpenForm "ms3" Me.Undo Else DoCmd.GoToRecord , , acNewRec DoCmd.OpenForm "ms4" Me.mtzn = 1 Me.save = 1 Msg = " ؟ هل تريد طباعة القيد" Style = vbYesNo Title = "رسالة تنبيه" result = MsgBox(Msg, Style, Title) If result = vbYes Then DoCmd.OpenReport "recept_qaid", acViewPreview Else Me.mtzn = 1 Me.save = 1 DoCmd.GoToRecord , , acNewRec End If End If End Sub
  12. وهذه أيضاً مشاركة مع الأستاذ @محمد احمد لطفى Dim reportName As String Dim message As String Dim response As VbMsgBoxResult reportName = Application.CurrentObjectName message = "? " & reportName & " هل ترغب في طباعة ألتقرير " response = MsgBox(message, vbQuestion + vbYesNo, "سؤال") If response = vbYes Then MsgBox "سيتم طباعة التقرير" Else MsgBox "لم يتم طباعة التقرير" End If
  13. تفضل أخي ، هذه طريقتين لعرض المحتوى مثال أكسس.zip
  14. صديقي العزيز أستاذ عمر ، 🥰 أجمعين يا رب العالمين 🤲 يسعدني ويشرفني مرورك 🤗
  15. جرب هذا الإتجاه في الحل ، أعتقد أفضل من فكرة أن تجعل جميع القيم في التنسيق الشرطي ( من وجهة نظري ) tamer.accdb
  16. زي كده !! New Microsoft Access Database (2).accdb
  17. أستاذنا الغالي @Moosak ، نورتني بكلامك الجميل ، بصراحة حبيت يكون الموضوع مختلف عما قد يخطر في البال ، ومن جهة التعديل سيكون الأمر أسهل من خارج قاعدة البيانات . وبالنسبة للمستك السحرية ، فبارك الله فيك ، وهكذا زاد الجميل جمالاً بالنسبة لي مع تصحيح اسم الدالة RestartAccess أخت صفاء ، للأسف لم أقم بتطوير الفكرة لهذا الحد ؛ ومن وجهة نظري أعتقد أن لها تبعات أخرى ومشاكل بالنسبة لموضوع الإرتساء للكائنات .
  18. نعم تتبع 100 % في الاكواد يوجد ملاحظات لم اتطرق لها ، تركتها محور نقاش لأساتذتي
  19. السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) اليوم جئتكم بفكرة جديدة وأعتقد أنه لم يسبقني أحد بهذا الطريق ؛ وهو إضافة اختيار واجهة اللغة إلى تطبيقات وبرامج ومشاريع الآكسيس بطريقة جديدة وتقدروا تقولوا 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
×
×
  • اضف...

Important Information