ADO能不能压缩数据库文件?比如.MDB
请高手指教 问题点数:20、回复次数:6Top
1 楼iget(悟不透)回复于 2006-03-18 20:48:59 得分 4
ado不具有这个功能。
我以前用jro压缩过mdb。你引用看看,很容易清楚地。
C:\Program Files\Common Files\System\ado\msjro.dll
Microsoft Jet and Replication Objects 2.6 LibraryTop
2 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-18 21:04:32 得分 6
参考(采用dao方法压缩):
Option Explicit
' 压缩 Access 数据库
Public Sub CompactJetDatabase(SourceFile As String, Optional Password As String, Optional BackupOriginal As Boolean = True)
On Error GoTo CompactErr
Dim strBackupFile As String
Dim strTempFile As String
' 判断来源文件是否存在
If Dir(SourceFile) <> "" Then
' 如果需要备份原文件
If BackupOriginal = True Then
strBackupFile = GetSourceFilePath(SourceFile) & "Backup.mdb"
If Dir(strBackupFile) <> "" Then
Kill strBackupFile
End If
FileCopy SourceFile, strBackupFile
End If
' 建立压缩文件名
strTempFile = GetSourceFilePath(SourceFile) & "Temp.mdb"
If Dir(strTempFile) <> "" Then
Kill strTempFile
End If
' 通过 DBEngine 压缩文件,注意,您必须引用 Microsoft DAO 3.xx Object Library
DBEngine.CompactDatabase SourceFile, strTempFile, , , ";Pwd=" & Password & ";"
' 删除旧文件
Kill SourceFile
' 重新命名新文件名
Name strTempFile As SourceFile
Else
MsgBox SourceFile & " 文件找不到!", vbExclamation
End If
CompactErr:
If Err.Number <> 0 Then
MsgBox "压缩数据库发生错误:" & vbCrLf & Err.Description & Err.Number, vbCritical, "错误"
End If
On Error GoTo 0
Exit Sub
End Sub
Top
3 楼letian_now(乐天)回复于 2006-03-19 14:30:43 得分 0
谢谢faysky2()
TO iget(悟不透):
你说的哪个怎么用安?Top
4 楼iget(悟不透)回复于 2006-03-19 18:17:50 得分 4
'===========================jdo compress===================
' On Error GoTo EndH
' Dim JE As JRO.JetEngine
' If dbFile <> vbNullString Then
' Set JE = New JRO.JetEngine
' On Error Resume Next
' cmpFile = dbFile & ".~DB"
' Kill cmpFile
' Err.Clear
' JE.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbFile, _
' "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbFile & ".~DB"
' If Err.Number <> 0 Then GoTo EndH '压缩未遂
' Kill dbFile
' If Err.Number <> 0 Then GoTo EndH '压缩未遂
' Name cmpFile As dbFile
' End If
'===========================dao compress===========================
On Error GoTo EndH
Dim DE As DAO.DBEngine
If dbFile <> vbNullString Then
Set DE = New DAO.DBEngine
On Error Resume Next
cmpFile = dbFile & ".~DB"
Kill cmpFile
Err.Clear
DE.CompactDatabase dbFile, cmpFile
If Err.Number <> 0 Then GoTo EndH
Kill dbFile
If Err.Number <> 0 Then GoTo EndH
Name cmpFile As dbFile
End If
我以前的一段代码,给你参考把。
jro可以在引用列表里面添加 Microsoft Jet and Replication Objects 2.6 Library
这里注释掉的是jro的部分。
后来改成了ado,似乎我记得是为了98系统默认包含dao,安装包可以小一点,没有别的原因。Top
5 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2006-03-20 08:40:29 得分 6
关于此主题请参考以下文章(不要只看标题,请认真仔细地察看上述文章以及相关的评论):
如何使用 ADO 來压缩或修复 MS Access 文件?(jro的使用)《其他...
http://access911.net/index.asp?u1=a&u2=71FAB71E
----------------------- 911 社区回帖个人签名 start -----------------------
http://access911.net/csdn 无须注册提供附件上传功能,如果你提问的时候有附件请到上述地址上传并将链接复制粘贴。
http://access911.net 用 7 年时间整理了大量有关 Access 的原创资料,请有空的时候多用文章搜索功能
如果您有兴趣加入ACCESS编程的专项研究可以来QQ群“ACCESS上海研究班”看看,加入的方法请看这里《个性化的access911.net(七)QQ 群加入规则(专门讨论 ACCESS 的 )》
http://access911.net/?kbid;72FAB01E16DCECF3
----------------------- 911 社区回帖个人签名 end -----------------------
向上看呦!Top
6 楼of123()回复于 2006-03-20 09:35:54 得分 0
1 引用 Microsoft Jet and Replication Objects X.X library, 其中 X.X 大于等于 2.1
2 代码
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\nwind2.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\abbc2.mdb;Jet OLEDB:Engine Type=4"Top




