Delphi Lookup函数-根据条件查找数据
Delphi Lookup函数-根据条件查找数据
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;
调用Lookup从与搜索条件匹配的行中检索指定字段的值。
- KeyFields是一个字符串,其中包含要搜索的字段名的分号分隔列表。
- KeyValues是一个变量数组,包含要在键字段中匹配的值。要指定多个搜索值,请将键值作为变量数组作为参数传递,或使用VarArrayOf例程动态构造变量数组。
- ResultFields是一个字符串,包含以分号分隔的字段名列表,其值应从匹配行返回。
- Lookup返回一个变量数组,其中包含ResultFields中指定字段的值。
使用示例:
//单字段
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 更新时间:2022.07.01
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!