关于dao的问题,欢迎各位bcb的兄弟们来看看,帮帮忙!!!

jbmw 2002-08-02 03:37:00
本人在程序中用到了TCOM_DBEngine Engine=new CoDBEngine->Create();
ret=Engine->CompactDatabase(WideString(sDataBaseName),WideString("2.mdb"));应用程序打包之后,在一台没有安装了office的机器上运行exe,程序出现一下的错误
'Create(intfobj)': Class is not licensed for use
@D:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\VCL\UTILCLS.h/3160
press [Y]es to terminate,[N]o to continue and [C]ancel to debug

但是如果有了office,就没有问题。可是这个项目是要卖的,你不能强迫别人安装office呀,所以深感痛苦。
不知哪位大虾也碰到过类似情况,如果有,请告知解决方法,小弟不胜感谢。
...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbmw 2002-08-21
  • 打赏
  • 举报
回复
我也用了IJetEngine *Jet对象,但是好像不行,难道是没有按照你下面的说法做
???"下列文件复制到 windows\system 中,
并注册: regsvr32 dao350.dll


570,128 DAO350.DLL
379,152 EXPSRV.DLL
1,045,776 msjet35.dll
123,664 msjint35.dll
24,848 msjter35.dll
326,656 MSVCRT40.DLL
7 个文件 2,470,224 字节
发送者 BCB
"

这是什么意思呢
IT-司马青衫 2002-08-13
  • 打赏
  • 举报
回复
下列文件复制到 windows\system 中,
并注册: regsvr32 dao350.dll


570,128 DAO350.DLL
379,152 EXPSRV.DLL
1,045,776 msjet35.dll
123,664 msjint35.dll
24,848 msjter35.dll
326,656 MSVCRT40.DLL
7 个文件 2,470,224 字节
发送者 BCB
IT-司马青衫 2002-08-10
  • 打赏
  • 举报
回复
用ADO压缩Access库
首先,先编译\CBuilder5\Source\Vcl中的是dao_2k.cpp
然后 把生成的obj复制到lib目录中去。就行了。
#include <dao_2K.h>
#include <Vcl.h>
#pragma link "DAO_2K"//注意只有2K才能发行压缩功能
void CompactDb(AnsiString SourceFile,AnsiString DestFile){

TCOM_DBEngine Engine=new CoDBEngine->Create();
WideString SourceDatabase=SourceFile;
WideString DestDatabase=DestFile;

if(FileExists(DestDatabase))
DeleteFile(DestDatabase);
if(!FileExists(DestDatabase))
{
Engine->CompactDatabase(SourceDatabase.c_bstr(),DestDatabase.c_bstr());

if(FileExists(DestDatabase))
{
DeleteFile(SourceDatabase);
RenameFile(DestDatabase,SourceDatabase);
}
}
delete Engine;
}

如果你不需要改变密码就这样写吧:
Engine->CompactDatabase(sr.c_bstr(),ds.c_bstr(),0,0,";pwd=2");

如果你需要改变密码则可以这样写:
Engine->CompactDatabase(sr.c_bstr(),ds.c_bstr(),";pwd=1",0,";pwd=2");
//======================================================================
用ADO压缩Access2000库
#include "utilcls.h"
#include "jro_tlb.h"
#pragma link "JRO_OCX"
文件使用project->import type lib...
从C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL引入以取得IJetEngine接口
好像没有效果

MoneyForm->ADOConnection1->Connected= false; //数据整理
const char sProvider[] = "Provider=Microsoft.Jet.OLEDB.4.0;";



WideString wsSrcDB, wsDestDB;
AnsiString sSrcDB, sDestDB;
sSrcDB=GetCurrentDir()+"\\Data\\通用餐饮业收银库.mdb";
sDestDB=GetCurrentDir()+"\\Data\\通用餐饮业收银库BAK.mdb";

// 如果临时文件存在先删除它


wsSrcDB= AnsiString(sProvider) + "Data Source=" + sSrcDB;
wsDestDB= AnsiString(sProvider) + "Data Source=" + sDestDB;

IJetEngine *Jet;
Jet= new CoJetEngine->Create();
try
{
int iResult=Jet->CompactDatabase(wsSrcDB.c_bstr(), wsDestDB.c_bstr());
CopyFile(sDestDB.c_str(), sSrcDB.c_str(), false);
ShowMessage(IntToStr(iResult));
}
__finally
{
Jet= NULL;
delete Jet;
MoneyForm->ADOConnection1->Connected=true;
}
IT-司马青衫 2002-08-10
  • 打赏
  • 举报
回复
ADO好象压缩无效果
jbmw 2002-08-06
  • 打赏
  • 举报
回复
各位帮帮忙!!!
IT-司马青衫 2002-08-03
  • 打赏
  • 举报
回复
这个问题我在做毕业设计时遇到过,无法解决
2000下做的,98下无法实现。
最后用ADO功能解决了
写信给我:zfkskygo@public1.jx.gz.cn
jbmw 2002-08-02
  • 打赏
  • 举报
回复
ado的压缩数据库的代码如何写???
BCB(天下三分明月夜,二分无赖是扬州)
请指教
BCB 2002-08-02
  • 打赏
  • 举报
回复
微软已不再支持过时的DAO(dao3.5,dao3.6),
所以要自行安装dao,并注册
你的压缩mdb可以改用ADO实现,微软是支持的


hlmsoft 2002-08-02
  • 打赏
  • 举报
回复
没办法,你要用别人的com不装怎么办,除非你好好找找com在那个dll中,但我觉得不太现实,应为com互相还有什么联系不知道呀,在想一想

13,825

社区成员

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

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