产生了Exception EOleSysError错误。。。。。 (100分)

  • 主题发起人 主题发起人 Sabre
  • 开始时间 开始时间
S

Sabre

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中用到了CreateOleObject('SQLDMO.Application')这个功能。
在我的机器上没有问题。打包以后安装到别的机器上就产生了Exception EOleSysError.....这个错误。

是因为哪个DLL没有安装吗?
如何解决?
 
你在客户端也要发布并注册SQLDMO.DLL.
 
只需要SQLDMO.DLL吗?还需要其它的吗?我把SQLDMO.DLL打进安装文件以后,安装时还需要好多其它的DLL,如果把这些也加去,最后会提示需要一个带绝对路径(1033,2052目录)的RLL文件。。。。。

怎么办??
 
也不知道具体需要那些那些文件,请各位大侠帮忙吧
 
只打包进去不行,必须注册:
regsvr32 SQLDMO.dll

WinExec('regsvr32.exe SQLDMO.dll /s',SW_HIDE);

 
只需要SQLDMO.DLL吗?还需要其它的吗?我把SQLDMO.DLL打进安装文件以后,安装时还需要好多其它的DLL,如果把这些也加去,最后会提示需要一个带绝对路径(1033,2052目录)的RLL文件。。。。。

这是怎么回事?
 
你是怎么打包的?注册的时候只需要SQLDMO.dll就行了啊
 
我开始只把SQLDMO.DLL打进去,然后安装,就会提示缺少什么什么DLL,我只好把提示需要的也打进去,结果就需要一个带绝对路径(X:/program Files/Microsoft...../1033)的RLL,一定要装SQL Server才行?不会吧???
 
另外,如何在程序中判断OLE组件是否已经注册以及如何注册OLE组件呢?
 
我觉得可能是你打包的时候有问题,实在不行就在程序里写好了
初始化的时候注册SQLDMO.DLL
等下我找台干净的机器试试

判断注册否可以通过读取注册表来实现
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if not Reg.KeyExists('SOFTWARE/Classes/CLSID/{965F4A46-EFFD-11D6-8991-F788B9F90024}') then //先找出SQLDMO.DLL键值,我这里是乱写的
WinExec('regsvr32.exe XXX.dll /s',SW_HIDE);
finally
Reg.CloseKey;
Reg.Free;
end;
 
我在没装SQLServer的机器上测试发现不行
手动注册SQLDMO.DLL时提示找不到库接口
估计还得需要其他的一些文件,你试试看把
Program Files/Microsoft SQL Server/80/Tools/Binn
下的文件逐一拷贝过去试试
 
我这里测试很不方便,没装SQL的机器我不能随便用。
哪位朋友能给一个准确的答案?
 
后退
顶部