اذهب الي المحتوي
أوفيسنا

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

قام بنشر

أخواني وأساتذتي الأفاضل .. هل يوجد كود تحت زر يقوم بأعادة تشغيل ملف أكسس الحالي ؟؟؟

قام بنشر

أشكرك أستاذي @sandanet على هذا المثال .. 

هكذا تعودتنا بعطائك وخيرك الذي لا ينقطع 

بارك الله فيك .. وجزاك الله عني خير 

  • Thanks 1
قام بنشر

أستاذي الغالي @sandanet 

أعود لك من جديد .. بعد تجربة الكود كثيرا

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

   'كود الضغط واصلاح
   Application.SetOption "Auto compact", True
   
   'كود اعادة تشغيل البرنامج
   Utilities.Restart Compact:=Nz(ckCompact, False)

 

فما حل المشكلة ؟؟؟

 

قام بنشر
4 ساعات مضت, qathi said:

بعد تجربة الملف الاخير .. مازلت المشكلة قائمة

اخي الكريم الذي قمت به هو كالتالي .. قمت باستعمال الكود التالي تحت زر أمر اعادة التشغيل

    Application.SetOption "Auto compact", True
    Utilities.Restart

مع إزالة  الكود التالي

Utilities.Restart Compact:=Nz(ckCompact, False)

وكذلك قمت بإزالة الكود التالي من الوحدة النمطية

    If Compact Then
       
    End If

مع الابقاء على الكود التالي الذي هو بداخل عبارة الـ if السابقة

 s = s & """%~f1"" ""%~f2.%3"" /compact" & vbCrLf

الملف تمت تجربته وهو يعمل إعادة تشغيل مع الضغط والاصلاح تلقائياً بدون اي مشاكل على اوفيس 2007

 

تحياتي

DatabaseRestartV1.2.accdb

  • Like 2
قام بنشر

بعد اذن اخي sandanet

بعد الفحص والتمعن

وجدت التالي

هذاة الوحده النمطيه
Option Explicit

Private Const TIMEOUT = 60

Public Sub Restart(Optional Compact As Boolean = True)
    Dim scriptpath As String
    scriptpath = Application.CurrentProject.FullName & ".dbrestart.bat"
    
    If Dir(scriptpath, vbNormal) <> "" Then
        If DateAdd("s", TIMEOUT * 2, FileDateTime(scriptpath)) < Date Then
            Kill scriptpath
        Else
            Application.Quit acQuitSaveAll
            Exit Sub
        End If
    End If
    
    Dim s As String
    s = s & "SETLOCAL ENABLEDELAYEDEXPANSION" & vbCrLf
    s = s & "SET /a counter=0" & vbCrLf
    s = s & ":CHECKLOCKFILE" & vbCrLf
    s = s & "ping 0.0.0.255 -n 1 -w 100 > nul" & vbCrLf
    s = s & "SET /a counter+=1" & vbCrLf
    s = s & "IF ""!counter!""==""" & TIMEOUT & """ GOTO CLEANUP" & vbCrLf
    s = s & "IF EXIST ""%~f2.%4"" GOTO CHECKLOCKFILE" & vbCrLf
    If Compact Then
        s = s & """%~f1"" ""%~f2.%3"" /compact" & vbCrLf
    End If
    s = s & "start "" "" ""%~f2.%3""" & vbCrLf
    s = s & ":CLEANUP" & vbCrLf
    s = s & "del %0"
    
    Dim intFile As Integer
    intFile = FreeFile()
    Open scriptpath For Output As #intFile
    Print #intFile, s
    Close #intFile
    
    Dim dbname As String, ext As String, lockext As String, accesspath As String
    Dim idx As Integer
    
    accesspath = SysCmd(acSysCmdAccessDir) & "msaccess.exe"
    For idx = Len(CurrentProject.FullName) To 1 Step -1
        If Mid(CurrentProject.FullName, idx, 1) = "." Then Exit For
    Next idx
    dbname = left(CurrentProject.FullName, idx - 1)
    ext = Mid(CurrentProject.FullName, idx + 1)
    If left(ext, 2) = "ac" Then
        lockext = "laccdb"
    Else
        lockext = "ldb"
    End If
    
    s = """" & scriptpath & """ """ & accesspath & """ """ & dbname & """ " & ext & " " & lockext
    Shell s, vbHide
    
   Application.Quit acQuitSaveAll
End Sub
                                       
                                       
                                       
                                       
                                       

وهذا امر تشغيلها


Utilities.Restart

اما بالنسبة لهذا

فهو فقط يعمل علامة صح 
في قاعده البيانات
اللي هي غمل ضغط واصلاح عند الخروج
Application.SetOption "Auto compact", True
اي كلما عملت خروج فهو يعمل ضغط واصلاح

 

قام بنشر

نعم استاذ @ابو ياسين المشولي الأخ @qathi كان يريد ان يزيل علامة الصح من البرنامج وان يضع الكود التالي مكانه

Application.SetOption "Auto compact", True

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

 

كما ان الاخ qathi يريد عمل إعادة تشغيل للقاعدة من خلال زر امر في البرنامج بالاضافة الى وضع علامة صح لضغط القاعدة في المرات القادمة

 

وهذا ماتم انجازه لكن يبدو ان الاخ qathi قد واجه مشكلة في عدم عمل البرنامج بشكل جيد مع انني قد اختبرته على اكثر من جهاز .. ارجو منك تجربة المرفق الاخير واخبارنا بالنتيجة

 

تحياتي

قام بنشر

حفظك الله أستاذي الغالي @sandanet 

كلماتي تعجز عن شكرك على ماتبذله من مجهود لمساعدتي

بارك الله فيك .. وجزاك الله كل خير

 

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

01.PNG.51affbbae516ccb5bc6b2c4694cf5a12.PNG

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

واذا تم ضغط زر موافق فأن البرنامج يعمل 

 

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

 

 

قام بنشر

اخي الكريم الـ @qathi هل تريد معالجة الخطأ بالخطأ؟؟

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

أما لو كنت عازل الجداول في قاعدة اخرى فلن تحدث معك تلك المشكلة 

اما اذا اردت معالجة الخطأ بان لا يقوم البرنامج بالفتح الا بعد فترة زمنية فهو خطأ آخر نرتكبه وذلك لاننا سوف نجد انفسنا ننتظر مدة طويلة جداً لكي يتم فتح البرنامج من جديد كما اننا لانعرف ماهي المدة الزمنية التي يتطلبها الملف المؤقت للإغلاق مما يجعل ظهور الرسالة السابقة مرة اخرى امر وارد

 

 

  • Like 1
قام بنشر (معدل)

أشكرك أستاذي الغالي @sandanet على سعة صدرك لي

قمت بتجربت الملفين الأخيرين على برنامجي المقسم جداول وواجهات ونفس المشاكل

- بالنسبة للملف قبل الاخير تظهر الرسالة هذه

20 ساعات مضت, qathi said:

01.PNG.51affbbae516ccb5bc6b2c4694cf5a12.PNG

 

الاختلاف في الرسالة مسار القاعدة في القرص D

 

- وبالنسبة للملف الاخير يقوم باغلاق البرنامج ولا يقوم بتشغيلة مرة أخرى

 

طبعا أضع أمر أعادة التشغيل بعد أمر الضغط والاصلاح

 

تم تعديل بواسطه qathi
قام بنشر (معدل)

أخي الكريم لاحظ انني في الملف الأخير قد استخدمت نفس الملف الأول ماعدا انني قمت بتثبيت علامة الصح بشكل تلقائي بدلاً من كتابة الكود هذا   

Application.SetOption "Auto compact", True

فإن كان الملف الأول بالمشاركة يعمل لديك فيجب ان يعمل الملف الأخير كذلك .. غير هذا فانه لايمكنني عمل شيء اخر 

 

تحياتي

تم تعديل بواسطه sandanet
قام بنشر

اخي الكريم تظهر لي هذه المشكلة على برنامج لطبيب .. هل تعرف سبب ظهورها وضياع البيانات او كيفية علاجها لو امكن

ويضيع معها البرنامج بالبيانات علماً بانها بامتدادACCDE

ارجو التكرم بالمساعدة لمن يمكنه حلها

dr cilinc.rar

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