C++ Builder 压缩Access数据库出现异常的问题

木奇 2014-07-31 02:08:32
各位高手请教下,压缩Access数据库异常问题:
下段代码之前运行没有问题,但是电脑出现问题后重装系统,又重装了CB6,一运行到Adoobj.OleProcedure(……)就出错,请教下是缺少文件还是其他什么问题,谢谢!

代码如下:

#include "dao_2k.h" 

AnsiString FileName_Temp=ExtractFilePath(Application->ExeName)+"Temp.mdb";
AnsiString FileName_Src=ExtractFilePath(Application->ExeName)+"Src.mdb";
AnsiString pwd="";
AnsiString Provider_Src="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName_Src+";Jet OLEDB:Database Password="+pwd;
AnsiString Provider_Dest="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName_Temp+";Jet OLEDB:Database Password="+pwd;


//关闭数据库连接
ADOConn1->Close();

//判断目标文件是否存在,存在则删除
if(FileExists(FileName_Temp))
{
DeleteFile(FileName_Temp);

}//if(FileExists(FileName_Temp))


//压缩Access数据库
Variant Adoobj=Variant::CreateObject("JRO.JetEngine");
Adoobj.OleProcedure("CompactDatabase",WideString(Provider_Src),WideString(Provider_Dest));
Adoobj.Clear();

//删除源文件
if(FileExists(FileName_Src))
{
DeleteFile(FileName_Src);

}//if(FileExists(FileName_Src))

//重命名目标文件
RenameFile(FileName_Temp,FileName_Src);

...全文
300 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2014-08-01
  • 打赏
  • 举报
回复
引用 11 楼 flying0302 的回复:
折腾了大半天,终于没有问题了。 1) 卸掉office 2007——>运行程序——>压缩Access数据库没有问题 2) 全部卸掉office 2003和office 2007——>运行程序——>压缩Access数据库没有问题 3) 安装office 2003——>运行程序——>压缩Access数据库没有问题 4) 再安装office 2007——>运行程序——>压缩Access数据库还是没有问题 莫名其妙就没有问题了,是office安装有问题吗,但用Access打开文件和压缩数据库都没问题,只有运行程序时压缩数据库有问题,有人知道是什么原因吗?
目测还是修复了ADO,故障消失。
ccrun.com 2014-08-01
  • 打赏
  • 举报
回复
难道ADO驱动有问题了,尝试修复一下ADO
木奇 2014-08-01
  • 打赏
  • 举报
回复
引用 8 楼 ccrun 的回复:
你这个数据库是不是正在使用中,然后就去压缩了?需要先关闭数据库,断开和此数据库的连接再压缩。
关闭数据库连接: ADOConn1->Close(); 程序打包到别的电脑上运行就正常,压缩Access不会出错,这个重装系统的电脑就提示压缩出错。
ccrun.com 2014-08-01
  • 打赏
  • 举报
回复
你这个数据库是不是正在使用中,然后就去压缩了?需要先关闭数据库,断开和此数据库的连接再压缩。
木奇 2014-08-01
  • 打赏
  • 举报
回复
引用 5 楼 oyefer 的回复:
用try和catch,看看异常的具体内容。
只是执行Adoobj.OleProcedure("CompactDatabase",WideString(Provider_Src),WideString(Provider_Dest))时提示: raised exception class EOleSysError with message '发生意外' 没找到是什么原因啊?
laowang2 2014-08-01
  • 打赏
  • 举报
回复
没压缩成功过。
木奇 2014-08-01
  • 打赏
  • 举报
回复
折腾了大半天,终于没有问题了。 1) 卸掉office 2007——>运行程序——>压缩Access数据库没有问题 2) 全部卸掉office 2003和office 2007——>运行程序——>压缩Access数据库没有问题 3) 安装office 2003——>运行程序——>压缩Access数据库没有问题 4) 再安装office 2007——>运行程序——>压缩Access数据库还是没有问题 莫名其妙就没有问题了,是office安装有问题吗,但用Access打开文件和压缩数据库都没问题,只有运行程序时压缩数据库有问题,有人知道是什么原因吗?
fxworld 2014-07-31
  • 打赏
  • 举报
回复
Provider 上加一个 Password 项
oyefer 2014-07-31
  • 打赏
  • 举报
回复
用try和catch,看看异常的具体内容。
木奇 2014-07-31
  • 打赏
  • 举报
回复
引用 3 楼 ccrun 的回复:
你要确保FileName_Src文件的存在
FileName_Src文件存在,后面ADOConn1连接此文件均正常,只有压缩数据库会出现异常
ccrun.com 2014-07-31
  • 打赏
  • 举报
回复
你要确保FileName_Src文件的存在
木奇 2014-07-31
  • 打赏
  • 举报
回复
引用 1 楼 ksrsoft 的回复:
安装office了没有
office 2003和office 2007都装了 office 2007 选择的是保留早期版本
缘中人 2014-07-31
  • 打赏
  • 举报
回复
安装office了没有

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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