访问数据库在宏后不关闭
Access Database not closing after a Macro
我有一个由 3 人组成的团队,他们都使用批处理文件 运行 使用类似于以下的命令定期访问宏:
START "" /min /wait "msaccess.exe" "%TEMP%\Database.accdb" /x Main
在以这种方式调用的所有宏结束时,我们以 QuitAccess(退出)操作结束它们。 通常 会结束 Access 进程并将控制权交还给批处理文件以继续。
问题是有时宏完成后(我们可以判断它已经完成,因为导出的 text/Excel 文件存在)Access 数据库没有关闭,这意味着调用批处理文件被卡住了,等待访问关闭。
发生这种情况时,我们通过进入任务管理器并终止 MSACCESS.EXE 进程来修复它。然后批处理文件继续。
我们无法在宏结束时或之后在批处理文件中执行任何操作来解决此问题,因为进程卡在宏和批处理文件之间的状态。
有没有人知道如何防止这种情况发生?
我不是批处理文件专家,但我没看到您在任何地方关闭 Access 数据库。看起来这个 link (Kill MSAccess process via batchfile) 正在解决同样的问题。这个答案引用了这个网站上的一个解决方案:Opening Access database from Batch File or VBS
:
To get the database to close you need to write a Startup function
which controls all the events you wish to run and then use Docmd.Quit,
failing that you could run another .bat file (using Windows scheduled
task) one or 2 minutes later using: TASKKILL /F /IM "MSACCESS.EXE"
EXIT
您是否确认宏本身没有产生可能干扰退出程序的错误?我会探索向宏添加一些错误处理以捕获任何错误。查看宏中的 "OnError" 选项,您可以在其中控制错误发生的时间,并在该步骤中执行您需要的任何操作:即:如果这是所需的结果,则在发生错误时退出
我有一个由 3 人组成的团队,他们都使用批处理文件 运行 使用类似于以下的命令定期访问宏:
START "" /min /wait "msaccess.exe" "%TEMP%\Database.accdb" /x Main
在以这种方式调用的所有宏结束时,我们以 QuitAccess(退出)操作结束它们。 通常 会结束 Access 进程并将控制权交还给批处理文件以继续。
问题是有时宏完成后(我们可以判断它已经完成,因为导出的 text/Excel 文件存在)Access 数据库没有关闭,这意味着调用批处理文件被卡住了,等待访问关闭。
发生这种情况时,我们通过进入任务管理器并终止 MSACCESS.EXE 进程来修复它。然后批处理文件继续。
我们无法在宏结束时或之后在批处理文件中执行任何操作来解决此问题,因为进程卡在宏和批处理文件之间的状态。
有没有人知道如何防止这种情况发生?
我不是批处理文件专家,但我没看到您在任何地方关闭 Access 数据库。看起来这个 link (Kill MSAccess process via batchfile) 正在解决同样的问题。这个答案引用了这个网站上的一个解决方案:Opening Access database from Batch File or VBS :
To get the database to close you need to write a Startup function which controls all the events you wish to run and then use Docmd.Quit, failing that you could run another .bat file (using Windows scheduled task) one or 2 minutes later using: TASKKILL /F /IM "MSACCESS.EXE" EXIT
您是否确认宏本身没有产生可能干扰退出程序的错误?我会探索向宏添加一些错误处理以捕获任何错误。查看宏中的 "OnError" 选项,您可以在其中控制错误发生的时间,并在该步骤中执行您需要的任何操作:即:如果这是所需的结果,则在发生错误时退出