اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر
12 minutes ago, طاهر اوفيسنا said:

موجود بالاكسس30988776_.png.2e9933f520a6ea3143e3619ff8a3d52a.png

اخوي العزيز مستخدم البرنامج ليس خبير اكسس حتى يدخل على عرض التصميم

اريد زر امر يوضع على الشاشة الرئيسية عند الخروج من البرنامج يعمل ضغط واصلاح للبرنامج

اشكرك على المرور

  • تمت الإجابة
قام بنشر
منذ ساعه, 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

 

  • Moosak changed the title to كود يوضع على زر امر لعمل ضغط واصلاح لقاعدة البيانات COMPACT AND REPAIR
قام بنشر
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

الغاية الاساسية  انه العميل يدخل بيانات خطا ويرجع يحذف

هنا ينتج خطأ في الرقم التسلسلي  المفتاح الاساسي

الضغط والاصلاح ترجع القاعدة الى العد الصحيح

 

والاستعمال يكون حسب الحاجة فقط

جهودكم مشكورة ومقدرة عاليا

  • Thanks 1
قام بنشر
16 دقائق مضت, Retired programmer said:

الضغط والاصلاح ترجع القاعدة الى العد الصحيح

 

لا انصحك بهذه الخطوة أخي الكريم ،

يعني لو العميل حذف السجل 150 من اصل السجلات 350 ، فسيكون الترتيب = 148 - 149 - 151 - 152 .... إلخ وللأسف لن يتم اضافة الرقم 150 !!!!!!!!

  • Like 1
قام بنشر

استاذى الجليل الاستاذ @Foksh :fff:

تسمح لى اشارك باضافة صغيرة الى الكود
لو القاعدة منقسمه وهناك عدة مستخدمين او ان القاعدة لازلت تعمل فى الخلفيه وحدث لها تعليق بالذاكرة لوم يتم انهاء الجلسة لها عند محاولة ضغط واصلاح سواء من خلال كود برمجى او من الاكسس بشكل صريح فالقاعدة سوف تكون معرضة بنسبه كبيرة جدا جدا الى التلف 

لذلك فى حالة وجود قاعدة منقسمه سفضل اولا ركل كل المستخدمين المتصلين 
اغلاق القاعدة حتى لا يستطيع احد الاتصال بها مرة أخرى 
عمل دوران على الجداول للتأكد من خلال كود بإغلاق كل الجداول اولا 
بعد ذلك تأتى عملية الضغط والاصلاح أخيرا

فى حالة ان القاعدة غير منقسمة 
عمل دوران على كل الجداول اولا لاتأكد من اغلاق الجداول 
عمل الضغط والاصلاح

وانصح فى كلتا الحالتين بكود عمل نسخة احتياطية تلقائية قبل الشروع فى عمل اى شئ 

وكذلك انصح بعمل اى كلمة مرور على محرر الاكواد لضمان عدم فقدان الاكواد لاى سبب 

 

تقبلوا تحياتى 

6 ساعات مضت, Retired programmer said:

الغاية الاساسية  انه العميل يدخل بيانات خطا ويرجع يحذف

هنا ينتج خطأ في الرقم التسلسلي  المفتاح الاساسي

الضغط والاصلاح ترجع القاعدة الى العد الصحيح

 

والاستعمال يكون حسب الحاجة فقط

 

اخى الحبيب 

اولا لا انصح بالاعتماد على حقول الترقيم التلقائ اعتبر انها غير موجوده 

بدلا من ذلك استخدما حقل انت تضع به الترقيم ومن خلال كود يتم عمل الترقيم تلقائيا

لا انصح بكثرة عمل الضغط والاصلاح الا فى الضرورة القصوى بقدر المستطاع

انصح قبل الشروع فى لعمل الضغط والاصلاح التأكد من الاحتفاظ بنسخة اجتياطيه وها هام جدا جدا جدا جدا قبل بدء عملية الضغط والاصلاح

 

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information