Office中国论坛/Access中国论坛

标题: 怎么实现计算机每天定时自动压缩修复后台数据呢? [打印本页]

作者: Charline    时间: 2016-3-2 23:00
标题: 怎么实现计算机每天定时自动压缩修复后台数据呢?
请问各位老师,

我的程序是已经拆分前段窗体和后台数据的,后台数据也是accdb文件,放在局域网里共享,然后把前端窗体分发到各个用户手上,用表链接实现多用户操作。

然后,后台数据里有很多表用自动编号作为主键,时常发生自动编号重复的问题。比如表1里已经有100条数据,如果添加新数据,新行的自动编号应该是101,但是有时候会出现新行自动编号变为77或者其他编号,然后数据库就会报错,指出是主键重复无法完成对表的修改或添加。即使是直接打开后台表,在新行里键入数据,自动编号也是错误的,无法成功添加新行。但是对原有数据做更新是没有问题。

遇到这种情况,用修复压缩数据库自动编号就能恢复正常。

所以,我想能不能让计算机每天在凌晨1点的时候,对共享的后台数据文件先做复制作为备份,然后自动进行修复压缩呢?(我深深知道这是指标不治本的方法)

我有写了一段手动压缩后台数据的代码,附在附件里,不知道有没有用。

PS:
        修复压缩的窗体上,左1按钮是压缩,中间是查看正在使用的用户名,右边是退出。点击压缩后,会出现对话框询问用户,是否按照默认路径压缩后台数据,如果选择[是],压缩的文件路径就是代码里的默认路径,如果选择[否]则会弹出文件选择窗口让用户自己选择修复压缩的文件路径。每次只能选择一个文件。
        压缩后,原文件会被重命名为 [原文件名] + [时间],压缩成功后的文件名字依旧是原来的文件名字。

作者: admin    时间: 2016-3-2 23:09
1.要求所有前台程序要退出。如果程序正在使用,后台数据库无法压缩的
2.然后在后台 设置一个程序,定期用代码压缩修改一下后台数据库
作者: Charline    时间: 2016-3-3 01:50
admin 发表于 2016-3-2 23:09
1.要求所有前台程序要退出。如果程序正在使用,后台数据库无法压缩的
2.然后在后台 设置一个程序,定期用 ...

谢谢老师的回答,不过我有些地方不是很明白,麻烦您解释一下,可以吗?

我在前台窗体里timer添加了判断语句,如果now()在某个时间区间内则直接退出Access,不知道这样可以吗?

后台程序里,我有个设想不知道是否能用,就是我另外建立一个accdb文件,里面写上压缩的代码,然后写一个batch文件,定时打开batch文件来运行压缩的accdb文件。不知道有没有更简单的方法呢?
作者: roych    时间: 2016-3-3 08:56
站长说得对。你必须确信所有前台退出,详细请参考:
http://www.office-cn.net/thread-97826-1-1.html
定时处理,可以考虑使用计划任务,详细请参考:
http://www.office-cn.net/thread-121180-1-1.html
作者: admin    时间: 2016-3-3 09:24
最好建立外部定时任务或程序 ,可参考Roych大师的链接文章
作者: purplerose    时间: 2016-3-3 10:39
想实现定时压缩数据库,就像中国 和ROYCH说的那样,首先是退出所有前台程序,最好是在没有人使用的时间段来运行定时压缩程序,另外像 中国 所说的最好建立外部定时任务或程序。
作者: purplerose    时间: 2016-3-3 10:40
具体代码如何实现,找 OFFICE中国和ROYCH 两位大师级的
作者: todaynew    时间: 2016-3-3 10:51
http://www.office-cn.net/forum.p ... 3%CC%A8%B9%DC%C0%ED
作者: Charline    时间: 2016-3-3 15:55
todaynew 发表于 2016-3-3 10:51
http://www.office-cn.net/forum.php?mod=viewthread&tid=93784&highlight=%BA%F3%CC%A8%B9%DC%C0%ED

谢谢您的恢复。

不过我上文中的压缩是Access里数据库工具中‘压缩数据库’这个压缩.....不过老师的例子还有很有用的!!!

不知道自动运行Access里数据库工具中‘压缩数据库’怎么实现呢?
作者: roych    时间: 2016-3-4 14:18
Charline 发表于 2016-3-3 15:55
谢谢您的恢复。

不过我上文中的压缩是Access里数据库工具中‘压缩数据库’这个压缩.....不过老师的例 ...

1、压缩数据库必须是在独占打开的状态下进行的。
2、因此多用户模式下,则必须关闭除本机意外的所有用户的数据库连接才能使用。
3、按todaynew版主的例子,你可以把按钮的代码写成一个autoexec宏来执行。
4、如果需要定时执行,仍然建议使用计划任务来完成。可以使用vbs或者bat定时打开该文件即可。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3