From 066542cc3474e1409112c82717cd6987c5f3ca34 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Wed, 13 Jul 2022 10:25:49 +0000 Subject: [PATCH] RxFPC:fix TRxMemoryData.Lookup git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8348 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/trunk/rxdb/rxmemds.pas | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/components/rx/trunk/rxdb/rxmemds.pas b/components/rx/trunk/rxdb/rxmemds.pas index f8decb224..99a7fdb12 100644 --- a/components/rx/trunk/rxdb/rxmemds.pas +++ b/components/rx/trunk/rxdb/rxmemds.pas @@ -162,6 +162,7 @@ type function IsSequenced: Boolean; override; function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; override; procedure SortOnFields(const FieldNames: string; CaseInsensitive: Boolean = True; Descending: Boolean = False); procedure SortOnFieldsEx(const FieldNames: string; @@ -1525,6 +1526,27 @@ begin end; end; +function TRxMemoryData.Lookup(const KeyFields: string; + const KeyValues: Variant; const ResultFields: string): Variant; +var + SaveState: TDataSetState; +begin + if DataSetLocateThrough(Self, KeyFields, KeyValues, []{, ARecNo}) then + begin +{ SaveState := SetTempState(dsCalcFields); + try + // FFilterBuffer contains found record + CalculateFields(FFilterBuffer); // CalcBuffer is set to FFilterBuffer + Result:=FieldValues[ResultFields]; + finally + RestoreState(SaveState); + end;} + Result:=FieldByName(ResultFields).Value; + end + else + Result:=Null; +end; + { Table Manipulation } procedure TRxMemoryData.EmptyTable;