我在Delphi 7中使用TADOQuery
在构造函数中,我调用ADOQuery.open
。
为什么在从表单外部调用另一个函数时关闭ADOQuery
?
constructor TClass1.Create(AOwner: TComponent;
MyParam: TProgramParam);
begin
inherited;
ADOQuery.Open;
ADOQuery.Locate('fieldName',Param,[]);
end;
答案 0 :(得分:4)
我建议找到谁正在关闭DataSet:
为AdoQuery的BeforeClose事件创建一个新的事件处理程序,放置任何编译和执行的事件只是为了在那里放置一个Breakpoint。例如:
procedure TfrmCreDocCredito.cdsSucursalesBeforeClose(DataSet: TDataSet);
begin
ShowMessage('Closing!!');
end;
运行程序,执行创建Class实例所需的任何用户操作,当程序在断点处停止时,您有机会检查调用堆栈。它将揭示谁,如果你仔细想一想,你会发现为什么数据集正在关闭。如果您的断点没有触发,我打赌数据集永远不会打开。
最好的问候。
答案 1 :(得分:0)
constructor TClass1.Create(AOwner: TComponent;
MyParam: TProgramParam);
begin
inherited;
ADOQuery.Open;
ADOQuery.Locate('fieldName',Param);
end;
//
constructor TClass1.Create(AOwner: TComponent;
MyParam: TProgramParam);
begin
inherited;
ADOQuery.Open;
ADOQuery.Locate('fieldName',Param,[]);
end;