我用一个线程来写数据库,在线程的EXECUTE中引用窗体单元的一个PROCEDURE,这时候发现用ADODATASET 写数据库,在OPEN时说我没有调用Coi

  • 主题发起人 主题发起人 fossil
  • 开始时间 开始时间
F

fossil

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个线程来写数据库,在线程的EXECUTE中引用窗体单元的一个PROCEDURE,这时候发现用ADODATASET 写数据库,在OPEN时说我没有调用Cointialize,怎么办? (60分)<br />应该怎么对其进行初始化呢
 
with WDataSet do
begin
Close;
CommandText := 'select * from EprsProd where No='+ '''' + EprsProd^.No + ''''; // 企业名称表
Open;//出错说尚未调用Cointialize ???
end;
 
都 买票回家过年了吗
 
在 unit的最后加上下面语句试试

initialization
Cointialize;
finalization
unCointialize;
 

initialization代码段加上
CoInitialize(nil);

进行ole初始化。
 
我是在一个FORM里创建了一个线程,线程中引用了FORM的PROCDURE,到ADODATASET查询就报错
ADNIL,你说的连编译都通过不了
LQY你 说清楚点,是加在那里啊,
 
要加上ActiveX单元的引用。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActiveX;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

initialization
CoInitialize(nil);

end.
 
楼上的编译动不过 declaration expected but idetifier'colnitiliaze
 
我也不知道对不对,平分秋色吧
ANDY:解释解释意思
 
ado对象是操作系统提供的ole对象,因此创建的时候需要初始化
 
可是,把你说的必须放在END.之前才额可以,就是程序的最后才能编译成功,
为什么?
 
多人接受答案了。
 
可是还是不行啊
 
后退
顶部