Retired programmer قام بنشر الثلاثاء at 08:53 قام بنشر الثلاثاء at 08:53 السلام عليكم ورحمة الله وبركاته اذا تكرمتم احبتي اريد كود يوضع على زر امر لعمل ضغط واصلاح لقاعدة البيانات جزاكم الله خيرا
Retired programmer قام بنشر الثلاثاء at 09:29 الكاتب قام بنشر الثلاثاء at 09:29 12 minutes ago, طاهر اوفيسنا said: موجود بالاكسس اخوي العزيز مستخدم البرنامج ليس خبير اكسس حتى يدخل على عرض التصميم اريد زر امر يوضع على الشاشة الرئيسية عند الخروج من البرنامج يعمل ضغط واصلاح للبرنامج اشكرك على المرور
تمت الإجابة Foksh قام بنشر الثلاثاء at 10:04 تمت الإجابة قام بنشر الثلاثاء at 10:04 منذ ساعه, Retired programmer said: اريد كود يوضع على زر امر لعمل ضغط واصلاح لقاعدة البيانات هذا سيعود عليك بمنافع ومضار في نفس الوقت ,, برأيي ان كثرة استخدام فكرة الضغط والإصلاح قد يؤدي الى تلف او فقدان البيانات أو قاعدة البيانات بشكل كامل . لذا عليك توظيف الفكرة بحيث تكون محكومة بمرة واحدة على الأقل في اليوم . طبعاً هو يعتمد ايضاً على ما اذا كانت قاعدة البيانات مقسمة أم لا ,,, جرب هذا الكود لضغط وإصلاح قاعدة البيانات الغير مقسمة ,, 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
Retired programmer قام بنشر الثلاثاء at 11:41 الكاتب قام بنشر الثلاثاء at 11:41 1 hour ago, Foksh said: هذا سيعود عليك بمنافع ومضار في نفس الوقت ,, برأيي ان كثرة استخدام فكرة الضغط والإصلاح قد يؤدي الى تلف او فقدان البيانات أو قاعدة البيانات بشكل كامل . لذا عليك توظيف الفكرة بحيث تكون محكومة بمرة واحدة على الأقل في اليوم . طبعاً هو يعتمد ايضاً على ما اذا كانت قاعدة البيانات مقسمة أم لا ,,, جرب هذا الكود لضغط وإصلاح قاعدة البيانات الغير مقسمة ,, 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 اشكرك اخي الكريم @Foksh الغاية الاساسية انه العميل يدخل بيانات خطا ويرجع يحذف هنا ينتج خطأ في الرقم التسلسلي المفتاح الاساسي الضغط والاصلاح ترجع القاعدة الى العد الصحيح والاستعمال يكون حسب الحاجة فقط جهودكم مشكورة ومقدرة عاليا 1
Foksh قام بنشر الثلاثاء at 12:00 قام بنشر الثلاثاء at 12:00 16 دقائق مضت, Retired programmer said: الضغط والاصلاح ترجع القاعدة الى العد الصحيح لا انصحك بهذه الخطوة أخي الكريم ، يعني لو العميل حذف السجل 150 من اصل السجلات 350 ، فسيكون الترتيب = 148 - 149 - 151 - 152 .... إلخ وللأسف لن يتم اضافة الرقم 150 !!!!!!!! 1
ابو جودي قام بنشر الثلاثاء at 18:16 قام بنشر الثلاثاء at 18:16 استاذى الجليل الاستاذ @Foksh تسمح لى اشارك باضافة صغيرة الى الكود لو القاعدة منقسمه وهناك عدة مستخدمين او ان القاعدة لازلت تعمل فى الخلفيه وحدث لها تعليق بالذاكرة لوم يتم انهاء الجلسة لها عند محاولة ضغط واصلاح سواء من خلال كود برمجى او من الاكسس بشكل صريح فالقاعدة سوف تكون معرضة بنسبه كبيرة جدا جدا الى التلف لذلك فى حالة وجود قاعدة منقسمه سفضل اولا ركل كل المستخدمين المتصلين اغلاق القاعدة حتى لا يستطيع احد الاتصال بها مرة أخرى عمل دوران على الجداول للتأكد من خلال كود بإغلاق كل الجداول اولا بعد ذلك تأتى عملية الضغط والاصلاح أخيرا فى حالة ان القاعدة غير منقسمة عمل دوران على كل الجداول اولا لاتأكد من اغلاق الجداول عمل الضغط والاصلاح وانصح فى كلتا الحالتين بكود عمل نسخة احتياطية تلقائية قبل الشروع فى عمل اى شئ وكذلك انصح بعمل اى كلمة مرور على محرر الاكواد لضمان عدم فقدان الاكواد لاى سبب تقبلوا تحياتى 6 ساعات مضت, Retired programmer said: الغاية الاساسية انه العميل يدخل بيانات خطا ويرجع يحذف هنا ينتج خطأ في الرقم التسلسلي المفتاح الاساسي الضغط والاصلاح ترجع القاعدة الى العد الصحيح والاستعمال يكون حسب الحاجة فقط اخى الحبيب اولا لا انصح بالاعتماد على حقول الترقيم التلقائ اعتبر انها غير موجوده بدلا من ذلك استخدما حقل انت تضع به الترقيم ومن خلال كود يتم عمل الترقيم تلقائيا لا انصح بكثرة عمل الضغط والاصلاح الا فى الضرورة القصوى بقدر المستطاع انصح قبل الشروع فى لعمل الضغط والاصلاح التأكد من الاحتفاظ بنسخة اجتياطيه وها هام جدا جدا جدا جدا قبل بدء عملية الضغط والاصلاح 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.