2010-02-14 49 views

回答

2

如果数据集来自一个基于SQL存储引擎,使用select使用结果集中只有来自主表的字段来对连接表进行查询。让SQL引擎为你做好工作。

+0

从三个层面表格嵌套的XML文件中的数据卡梅斯。谢谢 –

+0

如果你自己解析XML数据,你可以在master数据集中添加一个额外的字段ChildNodeCount,并在解析时填充它,并使用OnFilterRecord检查它是否大于0.无论哪种方式:最后归结为计数子记录:通过一个SQL引擎,一个mster细节链接,你自己的解析器等等等。在主表中计数会让你在细节数据集中使用记录扫描进行过滤的速度优势,但这只会是一个问题,如果你有大数据量。 –

1

根据您的情况,您可以使用:

  1. OnFilterRecord情况下,你可以有:

    接受:= myDataSetField.NestedDataSet.RecordCount> 0;

  2. 如果您有一个SQL后端,您可以使用ExistsCount以仅提取您需要的记录。如果你通过网络,或许是最好的方法。但我不知道你有什么基础设施。

  3. OnFilterRecord情况下,你可以有:

    接受:=不myDataSetField.IsNull; //只是测试如果DataSet字段为空 - 这是的最快办法做到这一点 一个......但是这取决于你的数据结构/数据集等

  4. 有时是更好地在你的DataSet/Table中有一个专门的字段来指定这个状态,因为通常从嵌套数据集获取这样的信息可能很昂贵。 (其中一个必须至少部分获取它)

  5. 另外,出于同样的考虑(参见上面的4.),也许你可以有一个存储过程(如果你的数据库后端允许)获得这个信息。

HTH