列出所有通过 ado 连接连接的查询

List all queries connected through ado connection

我有一个在主窗体上有 ADO 连接的应用程序和几个有 ADO 查询的插件,我连接到这个主连接。一个问题是,如果没有个人联系,我无法正确设计这些插件,当我将插件连接到主应用程序时,个人联系会变得一团糟。一个插件有很多查询。

我可以使用ConnectionObject通过主连接传递插件的查询,但这对我来说不方便,因为当主连接需要重新连接时,我无法自动重新连接所有查询。所以我必须在插件创建后将这些插件的 Connection 属性 重新分配给主连接。

我知道可以使用 ADOConnection 的 DataSets 属性 列出所有活动查询。但是,如果我想同时列出活动和非活动数据集,我应该使用什么 属性 呢? IDE 在设计器中自动列出它们,所以我认为应该有一个通用的方法来做到这一点。

也许可以找到 TADOConnection.DataSets 的有关 here 的文档让您感到困惑。

它说:

Use DataSets to access active datasets associated with a connection component.

这可能会导致认为 DataSets 只保留活动数据集,但事实并非如此。要对此进行测试,只需将一个 TADOConnection 和一个 TADOQuery 组件放在一个表单上,然后将 TADOQuery.Connection 设置为您的连接实例,例如 ADOConnection1.

要测试 DataSets 属性 是否还保留非活动数据集,您可以使用此代码:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ADOConnection1.DataSetCount - 1 do
  begin
    if not ADOConnection1.DataSets[i].Active then
      ShowMessage('Inactive dataset!');
  end;
end;