salah_2024 قام بنشر April 27 مشاركة قام بنشر April 27 السلام عليكم ورحمة الله وبركاته حياكم الله جميعا وكل عام وانتم بخير وعافية عندي قاعدة بيانات اكسس مقسمة واريد زر في قاعدة البيانات ( b ) ينفذ امر ضغط واصلاح قاعدة البيانات ( b_be ) علما ان قاعدة البيانات عليها كلمة مرور . ملاحظة / كلمة المرور ( 123 ) نرجوا المساعدة جزاكم الله خير bbe.rar رابط هذا التعليق شارك More sharing options...
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 رابط هذا التعليق شارك More sharing options...
kamelnet5 قام بنشر April 27 مشاركة قام بنشر April 27 السلام عليكم ورحمة الله وبركاته في حال عدم وجود كلمة سر لقاعدة البيانات ... كيف يكون الكود جزاكم الله الخير 1 رابط هذا التعليق شارك More sharing options...
salah_2024 قام بنشر April 27 الكاتب مشاركة قام بنشر April 27 حياك الله يا اخ Foksh انت قلت تحديد المسار .. اين احدد المسار في هذا الكود رابط هذا التعليق شارك More sharing options...
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 رابط هذا التعليق شارك More sharing options...
kamelnet5 قام بنشر April 28 مشاركة قام بنشر April 28 (معدل) 2 ساعات مضت, Foksh said: وعليه وإن كان / أو لم يكن هناك كلمة مرور لقاعدة بيانات الجداول جرب هذا المرفق يعمل معي بكفاءة . وهذا كود الدالة :- اشكرك اخي على رحابة صدرك ... ولكن هل ينبغي أن نضع مسار ملف الجداول المرتبطة حتى يعمل الكود بصراحة حاولت ولكن يقوم بأغلاق قاعدة البيانات وفتحها دون أي تغيير ... واكتشف انها تقوم باصلاح قاعدة البيانات المفتوحة فقط ولا تصليح ملف الجداول المرتبطة... ان احاول تصفير الترقيم التلقائي في احدى الجداول لأنه يسبب لي بعض المشاكل عندما يصل الترقيم إلى رقم كبير مع الشكر تم تعديل April 28 بواسطه kamelnet5 1 رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر April 28 مشاركة قام بنشر April 28 تابع هذا الموضوع سيفيدك إن شاء الله 🙂 1 رابط هذا التعليق شارك More sharing options...
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 رابط هذا التعليق شارك More sharing options...
salah_2024 قام بنشر April 29 الكاتب مشاركة قام بنشر April 29 جزاك الله خير اخي الكريم Foksh بيض الله وجهك .. فيه ملاحظة بسيطة وهي اذا كانت القاعدة لها كلمة مرور فكيف يكون العمل علما ان طريقتك يتم فيها الضغط والاصلاح لكن يطلب منك كلمة المرور والذي اريده ان لا يطلب مني كلمة المرور على كل عملية ضغط واصلاح بل تتم المعالجة اوتوماتيكي بدون الرجوع الي ... جزاك الله خير وتحملنا شوي 🤗 1 رابط هذا التعليق شارك More sharing options...
kamelnet5 قام بنشر April 29 مشاركة قام بنشر April 29 14 ساعات مضت, Foksh said: فقط حدد اسم قاعدة البيانات الخلفية التي بجانب القاعدة الرئيسية . الف شكر يا استاذنا نفعنا الله بك وزادك من علمه 1 رابط هذا التعليق شارك More sharing options...
Foksh قام بنشر April 29 مشاركة قام بنشر April 29 14 ساعات مضت, Foksh said: Call compactDb(CurrDB, Mypath, "", True) ضع كلمة المرور بين علامتي التنصيص ، جرب وبانتظار ردك 🤗 1 رابط هذا التعليق شارك More sharing options...
kamelnet5 قام بنشر April 29 مشاركة قام بنشر April 29 17 ساعات مضت, Moosak said: تابع هذا الموضوع سيفيدك إن شاء الله 🙂 اشكرك على الاهتمام استاذ @Moosak يبدو ان الموضوع الذي نصحتني به شيق ومفيد جزاك الله خيرا 1 رابط هذا التعليق شارك More sharing options...
salah_2024 قام بنشر April 29 الكاتب مشاركة قام بنشر April 29 حياك الله يا مهندس Foksh وسامحنا اذا كثرناها عليك ما ضبط معي 5 ساعات مضت, Foksh said: ضع كلمة المرور بين علامتي التنصيص ، جرب وبانتظار ردك 🤗 حياك الله يا مهندس Foksh وسامحنا اذا كثرناها عليك ما ضبط معي رابط هذا التعليق شارك More sharing options...
أفضل إجابة kkhalifa1960 قام بنشر April 30 أفضل إجابة مشاركة قام بنشر April 30 مشاركةً مع اساتذتي تفضل استاذ @salah.sarea محاولتي . 1- ضغط واصلاح القاعدة الخلفية للقاعدة الحالية (القاعدة الخلفية محمية بكلمة مرور) . 2- ضغط واصلاح اي قاعدة تختارها (القاعدة محمية بكلمة مرور) . 3- ضغط واصلاح اي قاعدة تختارها (القاعدة غير محمية ) . ووافني بالرد . compact and repair.rar 1 2 رابط هذا التعليق شارك More sharing options...
abouelhassan قام بنشر April 30 مشاركة قام بنشر April 30 مشكوررر اخى خليفة 1 رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان