Mik*_*ike 5 database compression vbscript ms-access
我正在尝试制作一个压缩MS Access 2007数据库文件的小型VBScript.
我的代码是:
Set acc2007 = CreateObject("DAO.DBEngine.36")
acc2007.CompactDatabase "C:\test.accdb", "C:\test2.accdb", Nothing, Nothing, ";pwd=test"
Set acc2007 = NothingRun Code Online (Sandbox Code Playgroud)
当我使用32位cmd.exe中的"cscript test.vbs"运行三行时,我收到此错误:
C:\ test.vbs(10,1)DAO.DbEngine:无法识别的数据库格式'C:\ test.accdb'.
数据库是使用MS Access 2007创建的,当我通过双击图标打开它时,我键入密码"test",然后我正常打开.它在顶部显示"Access 2007",因此它具有正确的格式.
这里是我正在尝试使用的函数的文档:http://msdn.microsoft.com/en-us/library/bb220986.aspx
DAO.DBEngine.36对象已成功创建,因为我没有在该行上收到任何错误.有什么不对?
DAO 3.6不支持新的ACCDB数据库格式.请尝试使用DAO.DBEngine.120.
这是一个适用于我的系统的示例.
Dim objFSO
Dim objEngine
Dim strLckFile
Dim strSrcName
Dim strDstName
Dim strPassword
strLckFile = "C:\Access\webforums\foo.laccdb"
strSrcName = "C:\Access\webforums\foo.accdb"
strDstName = "C:\Access\webforums\compacted.accdb"
strBackup = "C:\Access\webforums\foobackup.accdb"
strPassword = "foo"
Set objEngine = CreateObject("DAO.DBEngine.120")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FileExists(strLckFile)) Then
If (objFSO.FileExists(strBackup)) Then
objFSO.DeleteFile strBackup
End If
If (objFSO.FileExists(strDstName)) Then
objFSO.DeleteFile strDstName
End If
objFSO.CopyFile strSrcName, strBackup
''dbVersion120 = 128
objEngine.CompactDatabase strSrcName, strDstName, , 128, ";pwd=" & strPassword
objFSO.DeleteFile strSrcName
objFSO.MoveFile strDstName, strSrcName
End If 'LckFile
Run Code Online (Sandbox Code Playgroud)
注意:我决定在压缩之前备份我的数据库.最后,我删除原始(未压缩)数据库并将压缩的数据库重命名为原始名称.如果您对此不感兴趣,可以通过删除objFSO来简化这一过程.
编辑:修改以检查锁定文件; 如果发现什么都不做
| 归档时间: |
|
| 查看次数: |
10295 次 |
| 最近记录: |