VB写的一段程序数据库是用ACCESS,以下代码用于实现每次关闭程序时压缩一下数据库.
但在实际运行中,执行压缩命令的那句出错,提示"你想开启的资料库已被"***"机上的使用者独占.
在这个地方设置断点,发现程序执行到此处时,mdb文件所在的文件夹下,生成一个带有锁形的同名文件.
怎么实现在压缩前解除MDB文件的锁定.
Private Sub Form_Unload(Cancel As Integer)
'数据压缩
If Dir(App.Path & "\Data\service.mdb") <> "" Then
Dim j As jro.JetEngine
If Dir(App.Path & "\Data\temp.mdb") <> "" Then Kill App.Path & "\Data\temp.mdb"
Set j = New jro.JetEngine
j.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\service.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\temp.mdb;Jet OLEDB:Encrypt Database=True"
End If
End Sub
但在实际运行中,执行压缩命令的那句出错,提示"你想开启的资料库已被"***"机上的使用者独占.
在这个地方设置断点,发现程序执行到此处时,mdb文件所在的文件夹下,生成一个带有锁形的同名文件.
怎么实现在压缩前解除MDB文件的锁定.
Private Sub Form_Unload(Cancel As Integer)
'数据压缩
If Dir(App.Path & "\Data\service.mdb") <> "" Then
Dim j As jro.JetEngine
If Dir(App.Path & "\Data\temp.mdb") <> "" Then Kill App.Path & "\Data\temp.mdb"
Set j = New jro.JetEngine
j.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\service.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\temp.mdb;Jet OLEDB:Encrypt Database=True"
End If
End Sub
db.close'关闭
问题的原因我已找到.
conn.close
之后要set conn=nothing才行