gpt4 book ai didi

delphi - 字段查找和函数查找有什么区别?

转载 作者:行者123 更新时间:2023-12-03 18:19:56 24 4
gpt4 key购买 nike

性能上是否有任何差异或其他差异或两者是否相同(根据 TADOquery 和 TCustomADODataSet 中的查找字段)?

我已经阅读了帮助文件,但我没有找到任何解释。

最佳答案

Lookup() function 是 TDataSet 的虚函数.

作为一个虚函数意味着实现可以从一个类到另一个类。

因此,文档有不同的注释,每个 TDataSet后裔。

让我们仔细看看:

  • TDataSetLookup() :

  • Implements a virtual method to retrieve field values from a record that matches specified search values.



    查看更多 here

    请注意文档末尾的注释:

    Descendant classes that are not unidirectional override this method so that it locates the record where the fields identified by the comma-delimited string KeyFields have the values specified by the Variant or Variant array KeyValues. In classes that implement Lookup, it returns a Variant or Variant array that contains the value or values of the fields specified by the comma-delimited string ResultFields on the specified record.



  • TCustomADODataSetLookup() :

  • 在这里,上述言论正在实践中发生。注意,在这个实现中没有调用 inherited.
    文档说:

    Retrieves field values from a row that matches specified search values.



    详情 here

    现在,您只能通过深入研究源代码来了解差异。最后,您会注意到根本没有区别。您将意识到查找字段只会调用 Lookup()功能:

    1. 查找字段类似于计算字段。
  • AutoCalcFields 影响属性(property)(见 here)
  • 火灾的相同功能OnCalcFields事件负责
    调用CalcLookupValue
  • UniDirectional DataSet 也没有Lookup字段。 (看
    here )

  • 2. Lookup现场调用 Lookup()功能
  • 在这方面,没有文档,您必须自己查看:procedure TField.CalcLookupValue;
  • Lookup()参数用 TField 填充属性:FLookupDataSet.Lookup(FLookupKeyFields,
    FDataSet.FieldValues[FKeyFields], FLookupResultField);
  • Lookup()函数使用查找字段中的所有相关属性,如上所示:
  • FKeyFields = TField.KeyFields
  • FLookupDataSet = TField.LookupDataSet
  • FLookupKeyFields = TField.LookupKeyFields
  • FLookupResultField = TField.LookupResultField
  • 关于delphi - 字段查找和函数查找有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23518471/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com