API/COM/系统相关
不关闭当前数据库COPY当前数据库
2009-04-17 09:23:48

 

 

 

 

 

 

 

问题:  

  我要备份当前数据库,可是用FSO复制时总是提示占用,但是我直接在WINDOWS资源管理器里面又能直接复制,有什么办法能在不关闭当前数据库的情况下复制数据库用以备份么?

 

 

回答:  

  在 XP 以上的环境可以

 

 

'//按 ALT+F11 转到 vba 界面, '//新建一个模块 '//将以下代码 COPY 进去 '//将光标停在 Function RunTest() 这行 '//按 F5 即可运行 '//运行结束后到 c:\ 看结果

 

Public Const COPY_FILE_FAIL_IF_EXISTS = &H1    '//如果目标文件已存在即退出 Public Const COPY_FILE_RESTARTABLE = &H2       '//拷贝失败的时候可以重新开始 '// 此 API 在 WIN9X 下不能使用 Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" ( _     ByVal lpExistingFileName As String, _     ByVal lpNewFileName As String, _     ByVal lpProgressRoutine As Long, _     lpData As Any, _     ByRef pbCancel As Long, _     ByVal dwCopyFlags As Long) As Long

'=========================================================== ' 过程及函数名:  RunTest ' 版本号      :  -- ' 说明        :  本过程只用于演示如何用VBA+WINAPI 复制当前 '                 数据库到 c:\a.mdb ' 引用        :  -- ' 输入参数    :  -- ' 输出值      :  -- ' 返回值      :  -- ' 调用演示    :  RunTest ' 最后修改日期:  2007-12-9 17:36:00 ' 作者        :  cg1 ' 网站        :  http://access911.net ' 电子邮件    :  access911@gmail.com ' 版权        :  作者保留一切权力, '                 请在公布本代码时将本段说明一起公布,谢谢! '=========================================================== Function RunTest()     Dim strFileName As String     strFileName = CurrentProject.FullName     CopyFileEx strFileName, "c:\a.mdb", 0, Null, False, COPY_FILE_RESTARTABLE End Function