salah_2024 قام بنشر April 27 قام بنشر April 27 السلام عليكم ورحمة الله وبركاته حياكم الله جميعا وكل عام وانتم بخير وعافية عندي قاعدة بيانات اكسس مقسمة واريد زر في قاعدة البيانات ( b ) ينفذ امر ضغط واصلاح قاعدة البيانات ( b_be ) علما ان قاعدة البيانات عليها كلمة مرور . ملاحظة / كلمة المرور ( 123 ) نرجوا المساعدة جزاكم الله خير bbe.rar
Foksh قام بنشر April 27 قام بنشر April 27 وعليكم السلام ورحمة الله وبركاته اخي @salah.sarea . ضع هذا الكود في حدث عند النقر لزر الإصلاح ، مع تحديد مسار قاعدة البيانات B_Be حسب ما تريد . Private Sub btnRepair_Click() Dim strConnect As String Dim strPassword As String strPassword = "123" strConnect = "MS Access;PWD=" & strPassword & ";DATABASE=path_to_b_be.accdb" Application.CompactRepair SourceFile:="path_to_b_be.accdb", DestinationFile:="path_to_b_be.accdb", _ Password:=strPassword MsgBox "تم إصلاح قاعدة البيانات بنجاح!", vbInformation End Sub طبعا على افتراض أن اسم الزر btnRepair. 2 1
kamelnet5 قام بنشر April 27 قام بنشر April 27 السلام عليكم ورحمة الله وبركاته في حال عدم وجود كلمة سر لقاعدة البيانات ... كيف يكون الكود جزاكم الله الخير 1
salah_2024 قام بنشر April 27 الكاتب قام بنشر April 27 حياك الله يا اخ Foksh انت قلت تحديد المسار .. اين احدد المسار في هذا الكود
Foksh قام بنشر April 28 قام بنشر April 28 أعتذر عن التأخير والمتابعة بسبب ظرف صحي . أخي @salah.sarea و الأخ @kamelnet5 على العموم يا صديقي بعد التركيز في مشاركتي السابقة يبدو أنني قد توجهت بشكل خاطئ للمطلوب . القاعدة المقسمة والمرتبطة بقاعدة بيانات الواجهة الرئيسية ( الأمامية ) لا بد من أنها ترتبط مع الجداول دون أن تقوم بإدخال الباسوورد بشكل يدوي كل مرة هل هذا صحيح ؟؟ وعليه وإن كان / أو لم يكن هناك كلمة مرور لقاعدة بيانات الجداول جرب هذا المرفق يعمل معي بكفاءة . وهذا كود الدالة :- Public Function compactDb(ByVal mydb As String, ByVal mypass As String, Optional openIt As Boolean = False) Dim f As Integer Dim filenoext As String, extension As String, Access As String Access = """" & SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE""" filenoext = Left(mydb, InStrRev(mydb, ".")) extension = Right(mydb, Len(mydb) - InStrRev(mydb, ".")) f = FreeFile Open CurrentProject.Path & "\compact.bat" For Output As f Print #f, "CHCP 1256" Print #f, ":checkldb1" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb1" Print #f, Access & " """ & mydb & """" & mypass & " /compact" If openIt Then Print #f, ":checkldb2" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb2" Print #f, Access & " """ & mydb & """" Else Print #f, "del ""%~f0""" End If Close f End Function Public Function CopactMyDb() On Error Resume Next Dim Mypath As String Mypath = CurrentProject.Path & "\" & CurrentProject.Name Call compactDb(Mypath, "", True) Shell """" & Left(Mypath, InStrRev(Mypath, "\")) & "\compact.bat""", 0 DoCmd.Quit acQuitSaveAll End Function ويتم الإستدعاء في أي زر = CopactMyDb Compact.accdb 1
kamelnet5 قام بنشر April 28 قام بنشر April 28 (معدل) 2 ساعات مضت, Foksh said: وعليه وإن كان / أو لم يكن هناك كلمة مرور لقاعدة بيانات الجداول جرب هذا المرفق يعمل معي بكفاءة . وهذا كود الدالة :- اشكرك اخي على رحابة صدرك ... ولكن هل ينبغي أن نضع مسار ملف الجداول المرتبطة حتى يعمل الكود بصراحة حاولت ولكن يقوم بأغلاق قاعدة البيانات وفتحها دون أي تغيير ... واكتشف انها تقوم باصلاح قاعدة البيانات المفتوحة فقط ولا تصليح ملف الجداول المرتبطة... ان احاول تصفير الترقيم التلقائي في احدى الجداول لأنه يسبب لي بعض المشاكل عندما يصل الترقيم إلى رقم كبير مع الشكر تم تعديل April 28 بواسطه kamelnet5 1
Foksh قام بنشر April 28 قام بنشر April 28 4 ساعات مضت, kamelnet5 said: اشكرك اخي على رحابة صدرك ... ولكن هل ينبغي أن نضع مسار ملف الجداول المرتبطة حتى يعمل الكود بصراحة حاولت ولكن يقوم بأغلاق قاعدة البيانات وفتحها دون أي تغيير ... واكتشف انها تقوم باصلاح قاعدة البيانات المفتوحة فقط ولا تصليح ملف الجداول المرتبطة... ان احاول تصفير الترقيم التلقائي في احدى الجداول لأنه يسبب لي بعض المشاكل عندما يصل الترقيم إلى رقم كبير مع الشكر تم تعديل الكود والتأكد منه وتجربته . انسخه إلى مديول جديد ، واستدعيه بالأمر : ( CopactMyDb ) فقط حدد اسم قاعدة البيانات الخلفية التي بجانب القاعدة الرئيسية . Public Function compactDb(ByVal mydb As String, ByVal mydbb As String, ByVal mypass As String, Optional openIt As Boolean = False) Dim f As Integer Dim filenoext As String, extension As String, Access As String Access = """" & SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE""" filenoext = Left(mydb, InStrRev(mydb, ".")) extension = Right(mydb, Len(mydb) - InStrRev(mydb, ".")) f = FreeFile Open CurrentProject.Path & "\compact.bat" For Output As f Print #f, "CHCP 1256" Print #f, ":checkldb1" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb1" Print #f, Access & " """ & mydbb & """" & mypass & " /compact" If openIt Then Print #f, ":checkldb2" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb2" Print #f, Access & " """ & mydb & """" Else Print #f, "del ""%~f0""" End If Close f End Function Public Function CopactMyDb() On Error Resume Next Dim Mypath, CurrDB, BEndTBL As String BEndTBL = "B-TBL.accdb" 'اسم قاعدة البيانات الخلفية CurrDB = CurrentProject.Path & "\" & CurrentProject.Name Mypath = CurrentProject.Path & "\" & BEndTBL Call compactDb(CurrDB, Mypath, "", True) Shell """" & Left(Mypath, InStrRev(Mypath, "\")) & "\compact.bat""", 0 DoCmd.Quit acQuitSaveAll End Function Desktop.zip 2
salah_2024 قام بنشر April 29 الكاتب قام بنشر April 29 جزاك الله خير اخي الكريم Foksh بيض الله وجهك .. فيه ملاحظة بسيطة وهي اذا كانت القاعدة لها كلمة مرور فكيف يكون العمل علما ان طريقتك يتم فيها الضغط والاصلاح لكن يطلب منك كلمة المرور والذي اريده ان لا يطلب مني كلمة المرور على كل عملية ضغط واصلاح بل تتم المعالجة اوتوماتيكي بدون الرجوع الي ... جزاك الله خير وتحملنا شوي 🤗 1
kamelnet5 قام بنشر April 29 قام بنشر April 29 14 ساعات مضت, Foksh said: فقط حدد اسم قاعدة البيانات الخلفية التي بجانب القاعدة الرئيسية . الف شكر يا استاذنا نفعنا الله بك وزادك من علمه 1
Foksh قام بنشر April 29 قام بنشر April 29 14 ساعات مضت, Foksh said: Call compactDb(CurrDB, Mypath, "", True) ضع كلمة المرور بين علامتي التنصيص ، جرب وبانتظار ردك 🤗 1
kamelnet5 قام بنشر April 29 قام بنشر April 29 17 ساعات مضت, Moosak said: تابع هذا الموضوع سيفيدك إن شاء الله 🙂 اشكرك على الاهتمام استاذ @Moosak يبدو ان الموضوع الذي نصحتني به شيق ومفيد جزاك الله خيرا 1
salah_2024 قام بنشر April 29 الكاتب قام بنشر April 29 حياك الله يا مهندس Foksh وسامحنا اذا كثرناها عليك ما ضبط معي 5 ساعات مضت, Foksh said: ضع كلمة المرور بين علامتي التنصيص ، جرب وبانتظار ردك 🤗 حياك الله يا مهندس Foksh وسامحنا اذا كثرناها عليك ما ضبط معي
أفضل إجابة kkhalifa1960 قام بنشر April 30 أفضل إجابة قام بنشر April 30 مشاركةً مع اساتذتي تفضل استاذ @salah.sarea محاولتي . 1- ضغط واصلاح القاعدة الخلفية للقاعدة الحالية (القاعدة الخلفية محمية بكلمة مرور) . 2- ضغط واصلاح اي قاعدة تختارها (القاعدة محمية بكلمة مرور) . 3- ضغط واصلاح اي قاعدة تختارها (القاعدة غير محمية ) . ووافني بالرد . compact and repair.rar 1 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.