database - رمز فبا لإغلاق قاعدة بيانات أسيس بدون ترك شل من التطبيق مفتوحا





vba ms-access access-vba ms-access-2003 (7)


أنا دائما استخدام DoCmd.Quit acQuitSaveAll .
هذا يعمل على الأقل في أسيس 2000، 2003 و 2010 (حيث رأيت أنه يعمل).

أنا حاليا باستخدام Application.Quit الذي يترك قذيفة من تطبيق مس أسيس مفتوحة.

بعد معالجة وظيفة الدعوة ضد التطبيق الهدف، أنا تركت مع كل مثيل من التطبيق المتبقية مفتوحة لا يزال. على الرغم من إغلاق قاعدة البيانات المحددة.

كيف يمكنني جعل قاعدة البيانات "شل" نافذة التطبيق وثيقة بشكل منهجي باستخدام فبا؟

في ما يلي مثال لكيفية إنشاء المتغير وكيفية إغلاقه:

Dim appAccess As New Access.Application

' Do stuff here...

appAccess.CloseCurrentDatabase



وفقا للوثائق: Application.Quit يفعل الشيء نفسه كما DoCmd.Quit . أي

إنهاء أسلوب إنهاء ميكروسوفت أسيس. يمكنك تحديد واحد من عدة خيارات لحفظ كائن قاعدة بيانات قبل الإقلاع عن التدخين.

يمكنك محاولة استدعاء أي منهم مع المعلمة acQuitSaveNone أو 2 الذي "إنهاء ميكروسوفت أسيس دون حفظ أي كائنات". عند مزيد من المراجعة، استخدم Application.Quit كما تمت إضافة DoCmd.Quit للتوافق إلى الخلف ل أسيس 95 (انظر ملاحظات لطريقة إنهاء كما ينطبق على كائن دوكمد.) القيام بأي من هذه يجب أن لا تزال تفعل المضغوط التلقائي على وثيقة إذا كان لديك الأذونات، والتي قد تكون السبب لك قذائف.

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

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Process WHERE Name = 'msaccess.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next

لاستدعاء البرنامج النصي استبدال [فبسباث] مع المسار الفعلي. إذا كان للمسافة فراغات تأكد من استخدام علامات الاقتباس المزدوجة ووضعها في علامات اقتباس:

shell "cscript [vbspath]"



تبديل النموذج إلى طريقة عرض التصميم. تعيين BorderStyle النموذج إلى None . من القائمة عرض ، انقر فوق عرض النموذج . لاحظ أنه تمت إزالة شريط عنوان النموذج بالكامل.




هل يعني أنه يترك نافذة قذيفة cmd.exe مفتوحة بعد الانتهاء على ما يبدو وعملية MSACCESS.EXE قيد التشغيل في الخلفية في تاسكليست؟ وتسمى قذيفة في الخلفية؟




DoCmd.Quit أكيتزافيل، عملت في آخر فترة طويلة. حاولت كل الخيارات الأخرى من قبل وقذيفة لا تزال معلقة مرة أخرى.




Access.Quit يعمل بالنسبة لي. ربما حاول أن بدلا من Application.Quit ؟

إذا لم يحل ذلك، قد تكون مشكلتك في مكان آخر، وفي هذه الحالة يرجى إخبارنا بالمزيد عن هذا المشروع.




SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group

أو أن تأمر من العد

SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC






database vba ms-access access-vba ms-access-2003