我在创建数据模块时,写了一些代码如下:
procedure TDM.DataModuleCreate(Sender: TObject);
var i:integer;
begin
if ADOConnectLocalDB(ADOConn) then //连接数据库,成功则将TADOQuery的所有控件
begin
for i:=0 to ComponentCount-1 do 的Active=true;
begin
if (Components[i].ClassName='TADOQuery') then
begin
(Components[i] as TADOQuery).Active:=true;
end;
end;
end;
end;uses DMBase;
procedure Tfrmperson_info.FormCreate(Sender: TObject);
begin
dm.adoc_dept.Active:=true; //这句不写就报错,说Closed;
showmessage(inttostr(dm.adoc_dept.RecordCount)); //上面这句加上就有记录,
end;为什么我在别的窗体调用该数据模块中的TADOQuery时,为什么是关闭的,要重新Active:=true,才有记录;请问这是为什么?应该如何做到在数据模块中查询一次设为True之后,在别的窗体都可用,不需要再重新查询,
procedure TDM.DataModuleCreate(Sender: TObject);
var i:integer;
begin
if ADOConnectLocalDB(ADOConn) then //连接数据库,成功则将TADOQuery的所有控件
begin
for i:=0 to ComponentCount-1 do 的Active=true;
begin
if (Components[i].ClassName='TADOQuery') then
begin
(Components[i] as TADOQuery).Active:=true;
end;
end;
end;
end;uses DMBase;
procedure Tfrmperson_info.FormCreate(Sender: TObject);
begin
dm.adoc_dept.Active:=true; //这句不写就报错,说Closed;
showmessage(inttostr(dm.adoc_dept.RecordCount)); //上面这句加上就有记录,
end;为什么我在别的窗体调用该数据模块中的TADOQuery时,为什么是关闭的,要重新Active:=true,才有记录;请问这是为什么?应该如何做到在数据模块中查询一次设为True之后,在别的窗体都可用,不需要再重新查询,
for i :=0 to ComponentCount - 1 do
begin
if Components[i] is TADOQuery then
TADOQuery(Components[i]).Open;
end;
我也试过也不行!~
看看代码执行到(Components[i] as TADOQuery).Active:=true;没有
是不是在你创建Tfrmperson_info时,TDM还没有创建!
你先放在一个单元上试试,然后再在其他单元上测试 !