Ms access 将文件版本与批处理脚本进行比较

Ms access 将文件版本与批处理脚本进行比较,ms-access,batch-file,ms-access-2007,ms-access-2010,Ms Access,Batch File,Ms Access 2007,Ms Access 2010,我创建了一个Access数据库,通过整个部门共享,我将其分为前端和后端。不幸的是,在我添加所请求的更新时,没有简单的方法可以确保所有用户在其本地计算机上始终使用最新版本的前端 为了克服这个问题,我创建了一个安装批处理脚本,在他们的桌面上创建了一个快捷方式。以及将前端和“更新”批处理脚本嵌套在其PC上的自定义文件夹中。快捷方式实际上链接到“更新”批处理脚本,然后下载最新版本的前端(覆盖现有版本),然后加载它 理想情况下,这不会每次都下载它,而是仅当网络前端的版本大于本地计算机上的版本时才下载它。不

我创建了一个Access数据库,通过整个部门共享,我将其分为前端和后端。不幸的是,在我添加所请求的更新时,没有简单的方法可以确保所有用户在其本地计算机上始终使用最新版本的前端

为了克服这个问题,我创建了一个安装批处理脚本,在他们的桌面上创建了一个快捷方式。以及将前端和“更新”批处理脚本嵌套在其PC上的自定义文件夹中。快捷方式实际上链接到“更新”批处理脚本,然后下载最新版本的前端(覆盖现有版本),然后加载它

理想情况下,这不会每次都下载它,而是仅当网络前端的版本大于本地计算机上的版本时才下载它。不幸的是,我似乎不知道如何使用accdb文件实现这一点(尽管我已经看到了可执行文件的信息)。我们使用的是Access 2010和Access 2007文件类型。我仍然没有弄清楚如何在前端附加一个版本号,但我也愿意包含一个文本文件来存储该版本号。有什么建议吗

下面是我当前用于更新文件的脚本

@ECHO OFF
CLS
XCOPY "\\NetworkPath\Install\*.accdb" c:\Reserved\Database /y /q
XCOPY "\\NetworkPath\Install\Update.bat" c:\Reserved\Database /y /q
CLS
ECHO Starting database...
START "" "C:\Reserved\Database\FrontEnd.accdb"

我做了完全相同的事情,通过使用
/d
开关的
xcopy
命令,解决了只有在前端发生更改时才重新下载前端的问题:

xcopy /yqd \\network\frontend.accdb frontend.accdb
Xcopy参考:

这是可行的,但在逻辑上留下了一个小缺口:当有人使用其前端的本地副本时,您将一个新版本推送到网络上,然后他们退出前端并再次运行脚本:它不会下载新版本,因为用户的本地副本将有一个稍后的修改时间


为了克服这个问题,我实际上制作了一个本地前端的副本,并从脚本开始,而不是从下载的副本开始。这样,下载的副本将保留其原始修改时间,
xcopy
的时间检查工作正常。不过,您必须训练您的用户忽略
accdb
文件的本地副本,只使用脚本。

这听起来与我们为几个共享访问数据库实现的内容非常相似。然而,我相信我们的脚本每次都会复制它,因为我们的用户倾向于让数据库长时间处于打开状态。如果我要实现这一点,我可能会倾向于文本文件的想法,因为即使只是打开一个共享的.accdb来检查“版本表”也有可能导致问题。我总是在前端有一个单行表,在后端有一个单行表。在该表中有诸如区号默认值等内容,当然还有版本号。因此,您首先启动该应用程序,如果版本号不匹配,则返回批处理文件并退出访问。因此,bat文件复制到前端并重新启动。bat文件中的“ok”提示往往会为前端提供“更多”的退出/关闭时间。这种方法意味着您启动Access而不是bat文件或脚本来更新/复制。这主意不错。因此,您基本上在vba中编写一个宏或脚本,在数据库启动时运行,该数据库比较版本号并启动批处理脚本(可能有一个超时),然后关闭更新并重新启动访问?为什么不在本地前端表中放一个版本号,然后在后端放一个版本号呢。设置启动主应用程序(FE)的快捷方式。在启动代码中检查版本号,如果未匹配,则退出启动脚本并退出前端。批处理文件的第一行应该有一个提示“即将更新”,这将为FE关闭+退出留出时间。事实上,我建议使用VBS脚本,因为它具有msgbox功能。这是一个有趣的概念。虽然如果我打算这样做,我想使用一个单独的文本文件(甚至可能删除.txt扩展名)对我来说会更容易,因为这样可以最小化空间,减少每次复制文件的需要。我将使用更新文件中的代码编辑原始帖子。@LarrySteeze-实际上,如果您使用的是
xcopy
/d
开关,则无法使用单独的文本文件。你需要使用我上面给出的方法。原因是
/d
开关不允许您指定类似“如果源文本文件比目标文本文件新,则复制源
accdb
文件”的内容。不管怎样,我不认为拥有两个前端拷贝有什么大不了的——它们没有那么大,任何运行Access的计算机都不会缺少空间。你说得对。我不能用/d开关来做这件事。然而,有人在对原始问题的评论中确实给了我一个好主意,关于使用表格来做这件事。@LarrySteeze-很酷,我很想知道这是否有效。如果是这样的话,你可以自己把它作为答案贴在这里!