【问题标题】:List all queries connected through ado connection列出所有通过 ado 连接连接的查询
【发布时间】:2015-04-22 11:39:38
【问题描述】:

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

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

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

【问题讨论】:

  • 我已经检查并索引了属性DataSets 是链接到给定连接的所有数据集(活动和非活动)的集合。如果它不适合您,您必须向我们提供一些代码。
  • 确实如此。昨天我没有检查TADOConnection.RegisterClient 方法是如何工作的。今天我发现你是对的。虽然我在 Internet 上找到的指南直接告诉我 DataSets 只是活动数据集。无论如何,您可以将您的评论作为正确答案发表。
  • 完成了,我的答案扩展了一点。

标签: delphi delphi-xe2 ado vcl


【解决方案1】:

也许在here 上找到的关于TADOConnection.DataSets 的文档让您感到困惑。

上面写着:

使用 DataSet 访问与连接关联的活动数据集 组件。

这可能会导致认为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;

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2022-11-11
    相关资源
    最近更新 更多