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

الضغط والاصلاح لقاعدة البيانات


علي كعبي

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

في ٢٥‏/١١‏/٢٠١٧ at 22:07, علي كعبي said:

في المثال المرفق تحت قائمة ادوات ادارية يوجد مفتاح ضغط واصلاح كيف اجعلة يعمل مع اعطاء رسالة بعملية الضغط والاصلاح

MyPRG.rar

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

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم اخي علي:smile:

 

عدم وجود الاجابة لأن الموضوع مو بالسهولة ، وشيء لا يتم تداوله يوميا:blink:

الجواب بإختصار وحسب قرآتي ، لا يمكن عمل الضغط والاصلاح على البرنامج الذي تعمل عليه.

 

تحذير ، انا لم اجرب اي من هذه الطرق ، فرجاء التجربة على نسخة من برنامجك.

 

هناك طريقتين لعمل الضغط والاصلاح على البرنامج الذي تعمل عليه:

1. كود يجعل البرنامج يضغط ويصلح عند اغلاق البرنامج:

Application.SetOption "Auto compact", True

او للإصدارات السابقة

  Dim control As Office.CommandBarControl
  Set control = CommandBars.FindControl( Id:=2071 )
  control.accDoDefaultAction

2. كود :

أ. يقوم بعمل برنامج صغير خارج برنامجك ،

ب. هذا البرنامج الصغير فيه امر ان يقوم بعمل الضغط والاصلاح لبرنامجك ،

ج. هذا البرنامج ينتظر 5-10 ثواني (حسب برمجتك) ، او يراقب الملف ldb.  او laccdb. حتى اختفائه (هذا المرفق يغلق تلقائيا لما تغلق قاعدة بيانات الاكسس) ، وبعدها يصدر الامر اعلاه (ب) ،

د. ثم الكود يغلق برنامجك مباشرة بعد عمل البرنامج الصغير ،

هـ. وعندها يقوم البرنامج الصغير بالامر ،

و. وتستطيع ان تطلب من البرنامج الصغير ان يفتح قاعدة البيانات عند انتهاء عمله:

Public Function CompactDB()

    Dim strWindowTitle As String

    On Error GoTo err_Handler

    strWindowTitle = Application.Name & " - " & Left(Application.CurrentProject.Name, Len(Application.CurrentProject.Name) - 4)
    strTempDir = Environ("Temp")
    strScriptPath = strTempDir & "\compact.vbs"
    strCmd = "wscript " & """" & strScriptPath & """"

    Open strScriptPath For Output As #1
    Print #1, "Set WshShell = WScript.CreateObject(""WScript.Shell"")"
    Print #1, "WScript.Sleep 1000"
    Print #1, "WshShell.AppActivate " & """" & strWindowTitle & """"
    Print #1, "WScript.Sleep 500"
    Print #1, "WshShell.SendKeys ""%yc"""
    Close #1

    Shell strCmd, vbHide
    Exit Function

    err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description
    Close #1

End Function

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

في ٢٨‏/١١‏/٢٠١٧ at 19:49, jjafferr said:

السلام عليكم اخي علي:smile:

 

عدم وجود الاجابة لأن الموضوع مو بالسهولة ، وشيء لا يتم تداوله يوميا:blink:

الجواب بإختصار وحسب قرآتي ، لا يمكن عمل الضغط والاصلاح على البرنامج الذي تعمل عليه.

 

تحذير ، انا لم اجرب اي من هذه الطرق ، فرجاء التجربة على نسخة من برنامجك.

 

هناك طريقتين لعمل الضغط والاصلاح على البرنامج الذي تعمل عليه:

1. كود يجعل البرنامج يضغط ويصلح عند اغلاق البرنامج:


Application.SetOption "Auto compact", True

او للإصدارات السابقة

  Dim control As Office.CommandBarControl
  Set control = CommandBars.FindControl( Id:=2071 )
  control.accDoDefaultAction

2. كود :

أ. يقوم بعمل برنامج صغير خارج برنامجك ،

ب. هذا البرنامج الصغير فيه امر ان يقوم بعمل الضغط والاصلاح لبرنامجك ،

ج. هذا البرنامج ينتظر 5-10 ثواني (حسب برمجتك) ، او يراقب الملف ldb.  او laccdb. حتى اختفائه (هذا المرفق يغلق تلقائيا لما تغلق قاعدة بيانات الاكسس) ، وبعدها يصدر الامر اعلاه (ب) ،

د. ثم الكود يغلق برنامجك مباشرة بعد عمل البرنامج الصغير ،

هـ. وعندها يقوم البرنامج الصغير بالامر ،

و. وتستطيع ان تطلب من البرنامج الصغير ان يفتح قاعدة البيانات عند انتهاء عمله:


Public Function CompactDB()

    Dim strWindowTitle As String

    On Error GoTo err_Handler

    strWindowTitle = Application.Name & " - " & Left(Application.CurrentProject.Name, Len(Application.CurrentProject.Name) - 4)
    strTempDir = Environ("Temp")
    strScriptPath = strTempDir & "\compact.vbs"
    strCmd = "wscript " & """" & strScriptPath & """"

    Open strScriptPath For Output As #1
    Print #1, "Set WshShell = WScript.CreateObject(""WScript.Shell"")"
    Print #1, "WScript.Sleep 1000"
    Print #1, "WshShell.AppActivate " & """" & strWindowTitle & """"
    Print #1, "WScript.Sleep 500"
    Print #1, "WshShell.SendKeys ""%yc"""
    Close #1

    Shell strCmd, vbHide
    Exit Function

    err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description
    Close #1

End Function

 

جعفر

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

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

رابط هذا التعليق
شارك

5 دقائق مضت, علي كعبي said:

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

:blink:

وبعدين اذا ما تعرف ، اخوي شفان :fff: ما يسمح لي ان اعمل الاشياء الصغيرة البسيطة:smile:

 

الله يسلمك هاي تقدر تعملها بالخطوات التالية:

1. احفظ الكود الطويل اللي في مشاركتي السابقة في وحدو نمطية ،

2. اكتب الكود التالي علشان يشغل الوحدة النمطية ويغلق البرنامج:

call CompactDB
docmd.quit

 

والسلام:smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

في ٢٨‏/١١‏/٢٠١٧ at 20:09, jjafferr said:

:blink:

وبعدين اذا ما تعرف ، اخوي شفان :fff: ما يسمح لي ان اعمل الاشياء الصغيرة البسيطة:smile:

 

الله يسلمك هاي تقدر تعملها بالخطوات التالية:

1. احفظ الكود الطويل اللي في مشاركتي السابقة في وحدو نمطية ،

2. اكتب الكود التالي علشان يشغل الوحدة النمطية ويغلق البرنامج:


call CompactDB
docmd.quit

 

والسلام:smile:

 

جعفر

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

تم تعديل بواسطه علي كعبي
اضافة
رابط هذا التعليق
شارك

في ٢٨‏/١١‏/٢٠١٧ at 22:58, jjafferr said:

الى الصباح خير ان شاء الله ،

ولكن انزل هذا المرفق ، وفيه كل الكود اللي تريده ان شاء الله:smile:

http://blog.nkadesign.com/wp-content/uploads/2008/05/DatabaseRestart.zip

 

جعفر

لم توضح لي الفكره اذا ممكن تطبق الفكرة على المثال المرفق

رابط هذا التعليق
شارك

السلام عليكم:smile:

 

لم اعرف كيف اجعل برنامجك يفتح النموذج FormTest عند اختيار "فهرسة" ،

الظاهر يجب ان تضيفه الى قائمة النماذج في احد جداولك ، وتعطيه الصلاحية

 

جعفر

765.MyPRG.mdb.zip

رابط هذا التعليق
شارك

في ٢٩‏/١١‏/٢٠١٧ at 15:21, jjafferr said:

السلام عليكم:smile:

 

لم اعرف كيف اجعل برنامجك يفتح النموذج FormTest عند اختيار "فهرسة" ،

الظاهر يجب ان تضيفه الى قائمة النماذج في احد جداولك ، وتعطيه الصلاحية

 

جعفر

765.MyPRG.mdb.zip

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

مجلد جديد ‫(2)‬.rar

رابط هذا التعليق
شارك

1 ساعه مضت, علي كعبي said:

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

استأذن من استاذ جعفر
اخي علي فقط عليك حذف اضافة ( add in ) و انشاءه مجددا
اتفضل تم العمل عليه وما اضفت شيء على المثال استاذنا القدير 

765.MyPRG.rar

  • 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