关于vb.Net 下的CompactDatabase函数问题!

SystemManagerHL 2008-07-22 01:22:15
我在vb.net中压缩Access2007数据库,使用了CompactDatabase函数。
但是压缩后的数据库虽然还是 .accdb 文件,但是再用access打开时,标题栏显示是Access2000~2003 不是原来的Access2007了。
部分代码如下:
jroJET = New JRO.JetEngine
'CompactDataBase(最適化元MDB/ACCDB,最適化先MDB/ACCDB)
jroJET.CompactDatabase(strConnectString1, strConnectString2)
现在我想压缩后还是Access2007,请问有什么办法?谢谢了!
...全文
288 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
困困 2008-07-30
  • 打赏
  • 举报
回复
方法三:
1.参照追加[..\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.interop.access.dao.dll]
2.主要代码

dim strDB1 as String = "c:\a.accdb"
dim strDB2 as String = "c:\b.accdb"
dim strDB1Pass as String = "aaa"
Dim dao As New Microsoft.Office.Interop.Access.Dao.DBEngine
If "".Equals(strDB1Pass) Then
dao.CompactDatabase(strDB1, strDB2)
Else
dao.CompactDatabase(strDB1, strDB2, , , ";pwd=" & strDB1Pass)
End If

3.如果该机器没有装access2007需要下载安装“AccessDatabaseEngine.exe”,
下载地址(中文版):“http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=zh-cn”
tangweikai 2008-07-24
  • 打赏
  • 举报
回复
在参数上仔细看看..
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Documents and Settings\chenge\My Documents\数据库1.accdb;Mode=Share Deny Read|Share Deny Write;Extended Properties="";Jet OLEDB:System database=C:\Documents and Settings\chenge\Application Data\Microsoft\Access\System.mdw;Jet OLEDB:registry Path=Software\Microsoft\Office\12.0\Access\Access Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True
SystemManagerHL 2008-07-24
  • 打赏
  • 举报
回复
回复forestry4
这两个方法各有弊端,对于我现在的项目用哪个都不完美。
fengboawhf 2008-07-24
  • 打赏
  • 举报
回复
根据access911的提议,可以用Access.Application.CompactRepair 来对accdb进行压缩。
1.参照追加"Microsoft.Office.Interop.Access.dll"
2.主要代码:

VB.NET code
Dim accessAccDB As New Microsoft.Office.Interop.Access.Application
accessAccDB.CompactRepair(strDB1, strDB2)
accessAccDB.Quit()
accessAccDB = Nothing




缺憾:
无法实现在没有装office的机器执行这个程序(调用Access.Application.CompactRepair)来压缩accdb数据库。(而用jro,可以在没有office的机器上对mdb进行压缩)
困困 2008-07-24
  • 打赏
  • 举报
回复
根据access911的提议,可以用Access.Application.CompactRepair 来对accdb进行压缩。
1.参照追加"Microsoft.Office.Interop.Access.dll"
2.主要代码:

Dim accessAccDB As New Microsoft.Office.Interop.Access.Application
accessAccDB.CompactRepair(strDB1, strDB2)
accessAccDB.Quit()
accessAccDB = Nothing


缺憾:
无法实现在没有装office的机器执行这个程序(调用Access.Application.CompactRepair)来压缩accdb数据库。(而用jro,可以在没有office的机器上对mdb进行压缩)
困困 2008-07-23
  • 打赏
  • 举报
回复
关注
http://topic.csdn.net/u/20070716/13/6ce0624d-7fdc-4b92-9aa8-52d3721048f4.html
上面网页的4楼是能找到最接近的,但是会出现楼主说的问题。没有好方法啊。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧