拷贝mdb文件的时候,用的是FileCopy(strSource, strDestination).
但是出现了70:不能写入的错误。考虑到可能是数据库连接未断开的问题,所以我想改用下面的方法
Dim fso     As FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")        
    Kill strSource
    fso.CopyFile strSource, strDestination但是别人提出来了这种方法可能导致2个mdb数据不一致的问题,因为数据库连接未断开,不能肯定拷贝之后会否有修改保存的动作。大家说说,上述担心存在吗?如果存在的话,该如何处理比较好呢?

解决方案 »

  1.   

    楼主把strSource都先kill掉了,还怎么copy呢????
    出错估计与连接无关,看看在目标路径是否有写权限???????
      

  2.   

    --〉 lsftest()
    写错了,是Kill strDestination。
    目标路径有写权限。不明白以独占或者非独占方式打开连接对于FileCopy来讲有何差别,都是一样出现70错误,无法拷贝。我想 lsftest()没有明白我的意思。--〉rainstormmaster(暴风雨 v2.0) 用2进制方式读写文件就不会存在数据不一致的问题了吗?
      

  3.   

    //用2进制方式读写文件就不会存在数据不一致的问题了吗?不,问题依然存在.这主要是一个时机选择的问题,你选择一个合适的时机,读写文件就可以了//不能肯定拷贝之后会否有修改保存的动作。
    其实这种担心是有必要的,但是,其实是很难解决的,因为我们无法得知,在你的程序退出之后,用户是否又通过其它方式修改了mdb文件.所以,你能做的就是在结束你的数据库操作的同时,备份文件
      

  4.   

    --〉 lsftest()
    写错了,是Kill strDestination。
    目标路径有写权限。不明白以独占或者非独占方式打开连接对于FileCopy来讲有何差别,都是一样出现70错误,无法拷贝。我想 lsftest()没有明白我的意思。
    =====================================
    举个例子吧:有一个c:\abc.mdb,如果你用普通的方式直接用access打开它,并且还打开了一个表,然后回到资源管理器,用一般复制文件得到方式把abc.mdb复制到d:\,这样是可行的。。
    但如果你先打开access,在access的菜单中选“文件”,“打开”,选中abc.mdb后,在打开按钮旁边的小箭头下选“以独占方式打开”,那么再重复上面的复制操作就会出错了
    //不能肯定拷贝之后会否有修改保存的动作。
    其实这种担心是有必要的,但是,其实是很难解决的,因为我们无法得知,在你的程序退出之后,用户是否又通过其它方式修改了mdb文件.所以,你能做的就是在结束你的数据库操作的同时,备份文件
    =================
    没办法,access不像sql server之类,有事务等方式来保证同步。。
    折冲办法可以在数据库内自己做一个标志判断数据的实时性。。