Browse Source

--- Merging r13841 into '.':
U packages/fcl-db/src/sqlite/customsqliteds.pas

git-svn-id: branches/fixes_2_4@14301 -

marco 15 years ago
parent
commit
00232d5b1b
1 changed files with 11 additions and 2 deletions
  1. 11 2
      packages/fcl-db/src/sqlite/customsqliteds.pas

+ 11 - 2
packages/fcl-db/src/sqlite/customsqliteds.pas

@@ -658,7 +658,7 @@ begin
   else
     FieldOffset := FieldDefs.Count + FCalcFieldList.IndexOf(Field);
 
-  if State <> dsCalcFields then
+  if not (State in [dsCalcFields, dsInternalCalc]) then
     FieldRow := PPDataRecord(ActiveBuffer)^^.Row[FieldOffset]
   else
     FieldRow := PPDataRecord(CalcBuffer)^^.Row[FieldOffset];
@@ -1220,11 +1220,20 @@ end;
 function TCustomSqliteDataset.Lookup(const KeyFields: String; const KeyValues: Variant; const ResultFields: String): Variant;
 var
   TempItem: PDataRecord;
+  SaveState: TDataSetState;
 begin
   CheckBrowseMode;
   TempItem := FindRecordItem(FBeginItem^.Next, KeyFields, KeyValues, [], False);
   if TempItem <> nil then
-    Result := TempItem^.Row[FieldByName(ResultFields).FieldNo - 1]
+  begin
+    SaveState := SetTempState(dsInternalCalc);
+    try
+      CalculateFields(PChar(@TempItem));
+      Result := FieldByName(ResultFields).Value;
+    finally
+      RestoreState(SaveState);
+    end;
+  end
   else
     Result := Null;
 end;