Delphi ADOQuery在构造函数之后关闭
我正在Delphi7中使用Delphi ADOQuery在构造函数之后关闭,delphi,ado,delphi-7,Delphi,Ado,Delphi 7,我正在Delphi7中使用TADOQuery。 在构造函数中,我调用ADOQuery.open 当从表单外部调用另一个函数时,ADOQuery为什么会关闭 constructor TClass1.Create(AOwner: TComponent; MyParam: TProgramParam); begin inherited; ADOQuery.Open; ADOQuery.Locate('fieldName',Param,[]); end; 我的建议是找到谁正在关闭数
TADOQuery
。在构造函数中,我调用
ADOQuery.open
当从表单外部调用另一个函数时,ADOQuery
为什么会关闭
constructor TClass1.Create(AOwner: TComponent;
MyParam: TProgramParam);
begin
inherited;
ADOQuery.Open;
ADOQuery.Locate('fieldName',Param,[]);
end;
我的建议是找到谁正在关闭数据集: 为AdoQuery的BeforeClose事件创建一个新的事件处理程序,将编译和执行的所有内容都放在那里,以便在那里放置断点。例如:
procedure TfrmCreDocCredito.cdsSucursalesBeforeClose(DataSet: TDataSet);
begin
ShowMessage('Closing!!');
end;
运行程序,执行创建类实例所需的任何用户操作,当程序在断点处停止时,您有机会检查调用堆栈。它将揭示谁,如果你仔细想想,你会发现为什么数据集正在关闭。如果断点没有触发,我打赌数据集永远不会真正打开
致以最诚挚的问候。我的建议是找到谁正在关闭数据集:
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;
为AdoQuery的BeforeClose事件创建一个新的事件处理程序,将编译和执行的所有内容都放在那里,以便在那里放置断点。例如:
procedure TfrmCreDocCredito.cdsSucursalesBeforeClose(DataSet: TDataSet);
begin
ShowMessage('Closing!!');
end;
运行程序,执行创建类实例所需的任何用户操作,当程序在断点处停止时,您有机会检查调用堆栈。它将揭示谁,如果你仔细想想,你会发现为什么数据集正在关闭。如果断点没有触发,我打赌数据集永远不会真正打开
致以最诚挚的问候。您必须提供一些信息。比如,当调用什么函数时,在什么形式之外?“Class1”从哪里获得“ADOQuery”,因为它没有创建它?等等。您必须提供一些信息。比如,当调用什么函数时,在什么形式之外?“Class1”从哪里得到“ADOQuery”,因为它没有创建它?等等。这是一个天才的想法,我想问自己,我自己怎么没有想到:)谢谢。这是一个天才的想法,我想问自己,我自己怎么没有想到:)谢谢。我不明白你回答的重点。如果你试图暗示
定位中缺少第三个参数,请发表评论。我看不出你回答的要点。如果您试图表明Locate
中缺少第三个参数,请发表评论。
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;