Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 字段查找和函数查找之间有什么区别?_Delphi_Ado - Fatal编程技术网

Delphi 字段查找和函数查找之间有什么区别?

Delphi 字段查找和函数查找之间有什么区别?,delphi,ado,Delphi,Ado,性能是否有任何差异或其他差异,或者两者是相同的(根据TADOquery和TCustomADODataSet中的查找字段) 我已经阅读了帮助文件,但没有找到任何解释。查找()函数是TDataSet的虚拟函数 作为一个虚拟函数,意味着实现可以随着类的变化而变化 因此,文档中的注释因每个TDataSet子代而异 让我们仔细看看: TDataSet的Lookup(): 实现从记录中检索字段值的虚拟方法 与指定的搜索值匹配的 看更多 注意文档末尾的这句话: 非单向的子类重写此方法,因此 它定位由 逗号

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

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

查找()函数是
TDataSet
的虚拟函数

作为一个虚拟函数,意味着实现可以随着类的变化而变化

因此,文档中的注释因每个
TDataSet
子代而异

让我们仔细看看:

  • TDataSet
    Lookup()
实现从记录中检索字段值的虚拟方法 与指定的搜索值匹配的

看更多

注意文档末尾的这句话:

非单向的子类重写此方法,因此 它定位由 逗号分隔的字符串键域具有 变量或变量数组键值。在实现查找的类中, 它返回一个变量或变量数组,其中包含值或 由逗号分隔字符串指定的字段的值 指定记录上的ResultFields


  • TCustomADODataSet
    Lookup()
在这里,上述评论是在实践中发生的。注意,在这个实现中没有对继承的
的调用。

文件说:

从与指定搜索匹配的行中检索字段值 价值观

细节


现在,您只能通过深入了解源代码来理解差异。最后,您将注意到,没有任何区别。您将认识到,查找字段将只调用
lookup()
函数:

1.查找字段类似于计算字段。
  • AutoCalcFields
    属性影响(请参阅)
  • fires
    OnCalFields
    事件负责的功能相同 调用
    CalcLookupValue
  • 单向
    数据集也没有
    查找
    字段。(见 )
2.
Lookup
字段调用
Lookup()
函数
  • 在这方面,没有文档,您必须亲自查看:
    程序TField.CalcLookupValue
  • Lookup()
    参数由
    t字段
    属性填充:
    FLookupDataSet.Lookup(FLookupKeyFields,
    FDataSet.FieldValues[FKeyFields],flookuppresultfield)
Lookup()
函数使用Lookup字段中的所有相关属性,如上所示:

  • FKeyFields=TField.KeyFields
  • FLookupDataSet=TField.lookUpdateSet
  • FLookupKeyFields=TField.LookupKeyFields
  • flookuppresltfield=TField.LookupResultField

Lookup()
是从查找字段调用以填充其值的函数。@pagenotfound,这不是答案吗?@pagenotfound在函数查找中,我可以放置键字段、键值和结果字段,但在查找字段中,我可以放置,例如,数据集。这就是引起我困惑的原因。