zoukankan      html  css  js  c++  java
  • Delphi Lookup函数-根据条件查找数据

    Delphi Lookup函数-根据条件查找数据

    TCustomClientDataSet、TCustomADODataSet 均有

    函数原型:

    function Lookup(const KeyFields: string; const KeyValues: Variant;
      const ResultFields: string): Variant;
    begin
      Result := Null;
      if LocateRecord(KeyFields, KeyValues, [], False) then
      begin
        SetTempState(dsCalcFields);
        try
          CalculateFields(TempBuffer);
          Result := FieldValues[ResultFields];
        finally
          RestoreState(dsBrowse);
        end;
      end;
    end;
    

    CalculateFields

    procedure TDataSet.CalculateFields(Buffer: PChar);
    var
      I: Integer;
    begin
      FCalcBuffer := Buffer;
      if (State <> dsInternalCalc) and (IsUniDirectional = False) then
      begin
        ClearCalcFields(CalcBuffer);
        for I := 0 to FFields.Count - 1 do
          with FFields[I] do
            if FieldKind = fkLookup then CalcLookupValue;
      end;
      DoOnCalcFields;
    end;
    

      

    使用示例:

    //单字段

    var 
      sName:Variant;
    begin
    //根据ID,返回名称
      sName:=ADOQuery1.Lookup('id','22','name');
      if VarType(sName) <> varNull then
      begin
        ShowMessage(IntToStr(sName));
      end;
    end; 

    //多字段

    var 
      sArry:Variant;
    begin
    //根据ID、名称,搜索返回 标题、日期
      sArry:=ADOQuery1.Lookup('id;name',VarArrayOf([22,'test']),'title;date');
      if VarType(v) <> varNull then
      begin
        ShowMessage(sArry[0]+inttostr(sArry[1]));
      end;
    end;
    

      

    创建时间:2021.01.29  更新时间:

    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    线性时间将两个有序链表合成一个有序链表(constant additional space)
    C++定义指针数组
    cmd运行java编译文件
    java的方法
    Java流程控制
    用户交互-Scanner
    Java的注释
    编译型语言和解释性语言
    JDK、JRE和JVM
    MarkDown的简单使用
  • 原文地址:https://www.cnblogs.com/guorongtao/p/14343165.html
Copyright © 2011-2022 走看看