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

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

Lookup 从与指定搜索值匹配的行中检索字段值。

TCustomClientDataSet、TCustomADODataSet 均有

函数原型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;

调用Lookup从与搜索条件匹配的行中检索指定字段的值。

  • KeyFields是一个字符串,其中包含要搜索的字段名的分号分隔列表。
  • KeyValues是一个变量数组,包含要在键字段中匹配的值。要指定多个搜索值,请将键值作为变量数组作为参数传递,或使用VarArrayOf例程动态构造变量数组。
  • ResultFields是一个字符串,包含以分号分隔的字段名列表,其值应从匹配行返回。
  • Lookup返回一个变量数组,其中包含ResultFields中指定字段的值。

 

使用示例:

//单字段

1
2
3
4
5
6
7
8
9
10
var
  sName:Variant;
begin
//根据ID,返回名称
  sName:=ADOQuery1.Lookup('id','22','name');
  if VarType(sName) <> varNull then
  begin
    ShowMessage(IntToStr(sName));
  end;
end; 

//多字段

1
2
3
4
5
6
7
8
9
10
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  更新时间:2022.07.01

posted on   滔Roy  阅读(813)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示