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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    180

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

  1. وعليكم السلام ورحمة الله وبركاته .. قم بإضافة زر إلى نموذج (مثلاً : btnRestore) اجعل الكود التالي كتجربة ( بما انك لم تقم بارفاق قاعدتا البيانات للتجربة ) فيحدث عند النقر للزر السابق :- Private Sub btnRestore_Click() Dim dbPath As String Dim backupPath As String Dim fso As Object Dim fd As FileDialog dbPath = CurrentProject.FullName Set fd = Application.FileDialog(3) With fd .Title = "اختر ملف النسخة الاحتياطية" .Filters.Clear .Filters.Add "ملفات Access", "*.accdb;*.mdb" .AllowMultiSelect = False If .Show = -1 Then backupPath = .SelectedItems(1) Else MsgBox "لم يتم تحديد أي ملف!", vbExclamation + vbMsgBoxRight, "إلغاء العملية" Exit Sub End If End With If Dir(backupPath) = "" Then MsgBox "الملف المحدد غير موجود", vbExclamation + vbMsgBoxRight, "خطأ" Exit Sub End If DoCmd.Close acForm, "اسم_النموذج", acSaveYes DoCmd.Close acReport, "اسم_التقرير", acSaveYes DoCmd.Close acTable, "اسم_الجدول", acSaveYes DoCmd.Close acQuery, "اسم_الاستعلام", acSaveYes Set fso = CreateObject("Scripting.FileSystemObject") fso.DeleteFile dbPath, True fso.CopyFile backupPath, dbPath MsgBox "تم استعادة النسخة الاحتياطية بنجاح ! قد تحتاج إعادة تشغيل البرنامج", vbInformation + vbMsgBoxRight, "نجاح" End Sub يجب توافر المكتبة Microsoft Office XX.0 Object Library
  2. وعليكم السلام ورحمة الله وبركاته .. جرب هذا التعديل بالاستعلام التالي :- SELECT D.Cood, IIf([D].[Percent]*100 <= 60 Or [S].[natio] = 'S', "خارج", [S].[Tans]) AS Expr1 FROM S INNER JOIN D ON S.Cood = D.Cood; جرب الاستعلام وأخبرني بالنتيجة !! 😊
  3. وعليكم السلام ورحمة الله وبركاته .. جرب فكرتي البسيطة .. Private Sub NameEmployee_AfterUpdate() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strEmpName As String Dim arrName() As String Dim lastName As String Dim relation As String Dim empID As Integer Dim found As Boolean Set db = CurrentDb() strEmpName = Me.NameEmployee arrName = Split(strEmpName, " ") If UBound(arrName) >= 2 Then lastName = arrName(UBound(arrName)) Else MsgBox "يجب إدخال الاسم ثلاثيًا على الأقل.", vbExclamation, "تنبيه" Exit Sub End If Set rs = db.OpenRecordset("SELECT IDeMP, NameEmployee FROM DatEmp WHERE NameEmployee Like '*" & lastName & "' AND IDeMP <> " & Me.IDeMP) found = False Do While Not rs.EOF If InStr(rs!NameEmployee, lastName) > 0 Then If InStr(rs!NameEmployee, arrName(0)) > 0 Then relation = "ابن" ElseIf InStr(rs!NameEmployee, arrName(1)) > 0 Then relation = "أخ" Else relation = "أخت" End If Me.EntityEmployee = relation Me.NameVerificationEmployee = rs!NameEmployee found = True Exit Do End If rs.MoveNext Loop If Not found Then Me.EntityEmployee = "" Me.NameVerificationEmployee = "" End If rs.Close Set rs = Nothing Set db = Nothing End Sub emp.7z
  4. لم اقم بتحميل المرفق ، ولكن جرب التالي بتصحيح بعض الأخطاء .. Private Sub txt_AfterUpdate() Dim selectedYear As Integer If IsNumeric(Me.txt.Value) Then selectedYear = CInt(Me.txt.Value) Else MsgBox "الرجاء إدخال سنة صحيحة", vbExclamation Exit Sub End If Me.Filter = "[totalshy] = 0 OR ([yearshy] <> " & selectedYear & " AND [totalshy] <> 0)" Me.FilterOn = True End Sub
  5. نفس النتيجة للأسف ، يبدو أن جهازك مصاب بفايروس لذلك لا تظهر المشكلة في جهازك يا صديقي 🤗,
  6. عمل جميل جداً ، وجزاك الله كل خير على مجهودك .. وتقبل الله طاعاتكم وصيامكم وقيامكم ،، وهنأكم بإفطاركم بهذا الشهر الفضيل .. لي مداخلة بسيطة وهي أن معظم ( 90% ) من مصممي البرامج يتوجهون الى ان تكون الرسائل باللغة العربية ؛ على الأقل ليسهل فهمها للمستخدم وللوصول الى حل المشكلة التي ظهرت له . هل يمكن تنفيذ الفكرة ???
  7. وعليكم السلام ورحمة الله وبركاته ,, المرفق غير سليم ،،
  8. وعليكم السلام ورحمة الله وبركاته .. بدايةً لن أنصحك بالإعتماد على كود تخطي الأخطاء هذا بشكل أساسي في مشاريعك ، لأنه قد يترتب عليه تخطي خطأ باكمال معلومة أو معادلة أو إجراء أو نتيجة ستكون قد بنيت عليها إجراءات أخرى ، وعليه تقع في مشاكل .. - على العموم استخدم الكود في حدث عند التحميل للنموذج ، وسيبقى مفعلاً لكل الأكواد الأخرى داخل النموذج طالما لم يتم تغييره في أي إجراء آخر . - أولاً لم أقم بتجربتها ، جرب استعماله في حدث On Error للنموذج كإجراء عام .
  9. وعليكم السلام ورحمة الله تعالى وبركاته.. يبدو انني لم أقم بتوصيل المعلومة جيداً.. جدول العملاء والسيارات لا غنى عنهم ( ولا اختلاف في ذلك ). جدول العقول هو ذلك المقصود بأن يكون الجدول الموحد. فمثلاً جدول العقود سيضم حقل رقم العميل ( الفريد ) ورقم السيارة ( الفريد أيضاً ) . وباقي الحقول الخاصة بهما سيتم جلبه حسب الرقم الفريد ، أما بيانات العقد وهي الغير ثابتة ( التواريخ ، العدادات ، المبالغ ، ..... إلخ ) ستكون في جدول العقود الموحد . أي بمعنى أصح كأنه جدول الحركات ، وسأقوم بتطبيق فكرتي بشكل مصغر على مقصدي حال وصولي للكمبيوتر 🤗 إن شاء الله..
  10. مشاركة مع الإخوة والأساتذة ، جرب استعلام التوحيد Query1 التالي :- SELECT tip.ID, tip.nam, '2024' AS MissedYear FROM tip WHERE tip.ID NOT IN (SELECT Tshy.id FROM Tshy WHERE Tshy.yearshy = '2024') UNION SELECT tip.ID, tip.nam, '2025' AS MissedYear FROM tip WHERE tip.ID NOT IN (SELECT Tshy.id FROM Tshy WHERE Tshy.yearshy = '2025'); سيعرض لك السنة التي لم يدفع فيها العميل قسطه السنوي .. جرب وأخبرنا بالنتيجة ,, test.accdb
  11. هذا يعني أن السجل 1 ، دفع في 2024,2025 على سبيل المثال ، صحيح ؟؟؟؟ أعتقد ان طريقة بنية الجدول والسجلات ستربك لاحقاً الاستعلام عند كثرة السجلات وزيادة البيانات 😵 !!!!
  12. مشاركة مع أخي الأستاذ @ناقل ، هذه مشاركتي بحيث لو كانت المسافات بداية أو نهاية النص ، وليس فقط بداية النص :- Me.FADD = Trim(Me.FADD)
  13. وباعتقادي ان الحل المقترح من الأستاذ @Moosak ، هو الأنسب لك ولمشكلتك ، بغض النظر عن اتجاه النص ( لا اعتقد انه يمثل مشكلة كبيرة ) الا اذا اردت الإستغناء عن مربعات النص بصورة لكل حقل بحيث تكتب صورة وترفقها في التقرير بدلاً من المربع النصي !!!
  14. اختلف الموضوع بين تطبيقات نفس الشركة ، ففي اكسل يوجد في الطباعة ميزة اعادة التحجيم ، بينما في اكسيس غير موجودة ، وكذلك وورد . قد توجد ميزات تختلف فيما بينها.
  15. 🔆 فكرة لامعة وجميلة فعلاً ، وتخيل انها غابت عن بال من مر من هنا وأولهم العبد الفقير الى الله
  16. طيب ما رأيك بفكرة لم اقم بتأكيد نجاحها ، ولكنها قد تكون بداية الوصول الى حل ،، استخدم الكود التالي في زر ، وشاهد النتيجة على سبيل المثال بحفظ الملف بصيغة PDF ؟؟؟؟ Private Sub Command483_Click() Dim strReport As String Dim strFilePath As String Dim strDBPath As String Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object strReport = "rapt" strDBPath = CurrentProject.Path strFilePath = strDBPath & "\rapt_report.xls" DoCmd.OutputTo acOutputReport, strReport, acFormatXLS, strFilePath, False Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(strFilePath) Set xlSheet = xlBook.Sheets(1) xlSheet.PageSetup.Orientation = 2 xlSheet.PageSetup.Zoom = False xlSheet.PageSetup.FitToPagesWide = 1 xlSheet.PageSetup.FitToPagesTall = False xlSheet.PageSetup.ScaleWithDocHeaderFooter = True xlSheet.PageSetup.PrintQuality = 600 xlBook.PrintOut xlBook.Close False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub rapt_report.pdf
  17. أحيانا ما يجعل الأمر أشبه بالمستحيل هو التمسك بفكرة وعدم التخلي عنها أو البحث عن طريقة أخرى تؤدي الى حل ,, مقصدي هو قد تكون مشكلتك في التقرير نفسه وليس في فكرة تنقيذ مطلبك !!! حاول البحث عن آلية لتصميم التقرير من جديد بفكرة مختلفة تساعدك في تحقيق طلبك ، فعد الحقول كبير جداً وانت تحاول ضغطها في ورقة A4
  18. التصدير الى PDF يتعامل مع التقرير وكإنه في حالة ( الفتح لعرض الطباعة ) ، أي سيتم تصديره كما هو معروض ، والفكرة التي تبحث عنها اعتقد انها لن تفي بالغرض بهذا الشكل . * وجهة نظر
  19. ما شاء الله عليك ، أبدعت أخي @طاهر اوفيسنا . المتبقي بسيط ان شاء الله ، هل هذا طلبك ؟ BAR_A(5.3.2025).mdb.zip
  20. حال وصولي للكمبيوتر بإذن الله تعالى 😇
  21. الفكرة العامة واضحة أخي الكريم.. أعتقد هناك طريقة افضل ، ولكن دعنا نتفق على آلية جديدة للسير في طريق صحيح .. 1. لا أنصحك باستخدام أسماء مركبة من مقطعين ( يفصل بينها فراغ ) كأسماء الجداول أو الحقول أو الاستعلامات .... إلخ . السبب أنك ستواجه مشكلة كبيرة في كتابة الأكواد والإستدعاء لعنصر داخل الـ VBA ( على سبيل المثال ) . 2. استخدم فكرة جدول العقود والمرتبط بجدولي العملاء والسيارات ( فكرة الجدول الواحد ) 3. كيف تختار في تصميمك اسم الزبون ( العميل ) ؟؟؟ من كمبيوبوكس أم تقوم بكتابة الاسم بشكل يدوي ؟؟ اذا كان من خلال كومبوبوكس فهو حتماً سيكون موجود مسبقاً في جدول العملاء ، صحيح ؟؟ إذا ما الحاجة لادخال البيانات في جدول العملاء (اقتباساً من كلامك ) :- اذاً عدنا للحاجة الى ادخال البيانات في جدول واحد فقط وليس 3 جداول والأمر نفسه ينطبق على جدول السيارات أيضاً ، صحيح !!!!! أتمنى أن أكون قد وُفقت في توضيح فكرتي والتي أعتقد أنها ستوفر عليك الكثير من الجهد و الوقت .
  22. ممتاز .. هل لك ان ترفق ملفك بعد هذه الإضافة المهمة ، واعتقد انه يجب ان لا تتقيد بالقيم الموجودة في الكومبوبوكس Etar كأنها Value list ، والأصح بالنسبة لي هو ان يكون لها جدول مستقل لإضافتها وتحريرها مستقبلاً ( هذه الفكرة إختياري وليس إجباري طبعاً ) . بانتظار ملفك المعدّل
  23. طريقة تعامل اكسيس مع استعلامات الغير قابلة للتحديث قد تكون مختلفة بين الإصدارات القديمة والحديثة , * وجهة نظر
  24. وعليكم السلام ورحمة الله وبركاته .. مصدر سجلات النموذج استعلام ، وللأسف الإستعلام غير قابل للتحديث بإضافة سجل جديد .
×
×
  • اضف...

Important Information