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 更新时间: