我想压缩一个access2000数据库,用DAO和ADO都试过了,总是压缩不了,不知道是什么原因.
在VB工程库中,已经加入了DAO3.6和Microsoft Jet and Replication Objects 2.6 Library,所用的语句分别为:DAO:
DBEngine.CompactDatabase Location, strTempFile, ";pwd=123456"
ADO:
Dim JRO As New JRO.JetEngine
conStr1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Location & ";Jet OLEDB:Database Password=123456"
conStr2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strTempFile & ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=123456"
JRO.CompactDatabase conStr1, conStr2上面Location为源数据库地址,strTempFile为目标数据库地址.在进行单步调试的过程中,运行到压缩语句是就出现错误,没有给出错误的类型.
我的操作系统为XP,VB的版本为SP5.
请问这是怎么回事?
在VB工程库中,已经加入了DAO3.6和Microsoft Jet and Replication Objects 2.6 Library,所用的语句分别为:DAO:
DBEngine.CompactDatabase Location, strTempFile, ";pwd=123456"
ADO:
Dim JRO As New JRO.JetEngine
conStr1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Location & ";Jet OLEDB:Database Password=123456"
conStr2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strTempFile & ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=123456"
JRO.CompactDatabase conStr1, conStr2上面Location为源数据库地址,strTempFile为目标数据库地址.在进行单步调试的过程中,运行到压缩语句是就出现错误,没有给出错误的类型.
我的操作系统为XP,VB的版本为SP5.
请问这是怎么回事?
Set Jro1 = New JRO.JetEngine
'当运行第二次以上时先删除临时文件
SSS = Dir(App.Path + "\tmp.mdb")
If SSS = "tmp.mdb" Then
Kill App.Path + "\tmp.mdb"
End If
Jro1.CompactDatabase _
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\aaa.mdb;Persist Security Info=False;Jet OLEDB:Database Password=***", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\tmp.mdb;Jet OLEDB:Database Password=***" '目的文件
Kill App.Path + "\aaa.mdb"
Name App.Path + "\tmp.mdb" As App.Path + "\aaa.mdb"
MsgBox "压缩成功!", vbInformation
DBEngine.CompactDatabase Location, strTempFile,,, ";pwd=123456"
jro.CompactDatabase _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\source.mdb" _
";Jet OLEDB:Database Password=pwd", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\target.mdb;Jet OLEDB:Engine Type=5" _
;Jet OLEDB:Database Password=pwd"
这样子的
安装程序无法创建一下文件夹%CommonFiles%\Microsoft Share\DAO
是在Xp下安装的,2000下安装没出错,不知道是什么原因
不知你打包安装时是不是很顺利:)
up
Set Rs = Nothing
Set Rspx = NothingDim JRO As JRO.JetEngine
Dim DataPath, Prov, Pwd, Strsource, Strtarget As String
Dim k As BooleanSet JRO = New JRO.JetEngineDataPath = App.PathIf Not Right(DataPath, 1) = "\" Then DataPath = DataPath + "\"
End IfIf CheckFileExist(DataPath + "Nd_Main.mdb") = True Then '检查文件是否存在 Prov = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Pwd = ";Jet OLEDB:Database Password=ndrsgl"
Strsource = Prov & DataPath & "Nd_Main.mdb" & Pwd
Strtarget = Prov & DataPath & "Nd_Main_bak.mdb" & Pwd & ";Jet OLEDB:Engine Type=5"
JRO.CompactDatabase Strsource, Strtarget
' 删除原来的数据库文件 Kill DataPath + "Nd_Main.mdb"
' 更改备份后的文件到原名
Name DataPath + "Nd_Main_bak.mdb" As DataPath + "Nd_Main.mdb"
Msg = " 恭 喜 !!!" & Chr(13) & "" & Chr(13) & "数 据 库 压 缩 成 功 !"
Style = vbOKOnly + vbInformation + vbDefaultButton1
Title = "系 统 提 示 !"
Response = MsgBox(Msg, Style, Title)
End If
'检查文件是否存在,存在返回 TRUE,否则返回FALSE
Public Function CheckFileExist(strFile As String) As BooleanIf Dir(strFile, vbDirectory) <> "" Then CheckFileExist = True
Else
CheckFileExist = False
End IfEnd Function