|
@@ -124,8 +124,6 @@ begin
|
|
sqlite_step(vm, @ColumnCount, @ColumnValues, @ColumnNames);
|
|
sqlite_step(vm, @ColumnCount, @ColumnValues, @ColumnNames);
|
|
//Prepare the array of pchar2sql functions
|
|
//Prepare the array of pchar2sql functions
|
|
SetLength(FGetSqlStr, ColumnCount);
|
|
SetLength(FGetSqlStr, ColumnCount);
|
|
- //Set BufferSize
|
|
|
|
- FRowBufferSize := (SizeOf(PPChar) * ColumnCount);
|
|
|
|
// Sqlite is typeless (allows any type in any field)
|
|
// Sqlite is typeless (allows any type in any field)
|
|
// regardless of what is in Create Table, but returns
|
|
// regardless of what is in Create Table, but returns
|
|
// exactly what is in Create Table statement
|
|
// exactly what is in Create Table statement
|
|
@@ -226,7 +224,7 @@ var
|
|
TempItem: PDataRecord;
|
|
TempItem: PDataRecord;
|
|
vm: Pointer;
|
|
vm: Pointer;
|
|
ColumnNames, ColumnValues: PPChar;
|
|
ColumnNames, ColumnValues: PPChar;
|
|
- Counter: Integer;
|
|
|
|
|
|
+ Counter, ColumnCount: Integer;
|
|
begin
|
|
begin
|
|
//Get AutoInc Field initial value
|
|
//Get AutoInc Field initial value
|
|
if FAutoIncFieldNo <> -1 then
|
|
if FAutoIncFieldNo <> -1 then
|
|
@@ -241,7 +239,13 @@ begin
|
|
|
|
|
|
TempItem := FBeginItem;
|
|
TempItem := FBeginItem;
|
|
FRecordCount := 0;
|
|
FRecordCount := 0;
|
|
- FReturnCode := sqlite_step(vm, @FRowCount, @ColumnValues, @ColumnNames);
|
|
|
|
|
|
+ FReturnCode := sqlite_step(vm, @ColumnCount, @ColumnValues, @ColumnNames);
|
|
|
|
+ FRowCount := ColumnCount;
|
|
|
|
+ //add extra rows for calculated fields
|
|
|
|
+ if FCalcFieldList <> nil then
|
|
|
|
+ Inc(FRowCount, FCalcFieldList.Count);
|
|
|
|
+ FRowBufferSize := (SizeOf(PPChar) * FRowCount);
|
|
|
|
+
|
|
while FReturnCode = SQLITE_ROW do
|
|
while FReturnCode = SQLITE_ROW do
|
|
begin
|
|
begin
|
|
Inc(FRecordCount);
|
|
Inc(FRecordCount);
|
|
@@ -249,8 +253,11 @@ begin
|
|
TempItem^.Next^.Previous := TempItem;
|
|
TempItem^.Next^.Previous := TempItem;
|
|
TempItem := TempItem^.Next;
|
|
TempItem := TempItem^.Next;
|
|
GetMem(TempItem^.Row, FRowBufferSize);
|
|
GetMem(TempItem^.Row, FRowBufferSize);
|
|
- for Counter := 0 to FRowCount - 1 do
|
|
|
|
|
|
+ for Counter := 0 to ColumnCount - 1 do
|
|
TempItem^.Row[Counter] := StrNew(ColumnValues[Counter]);
|
|
TempItem^.Row[Counter] := StrNew(ColumnValues[Counter]);
|
|
|
|
+ //initialize calculated fields with nil
|
|
|
|
+ for Counter := ColumnCount to FRowCount - 1 do
|
|
|
|
+ TempItem^.Row[Counter] := nil;
|
|
FReturnCode := sqlite_step(vm, @FRowCount, @ColumnValues, @ColumnNames);
|
|
FReturnCode := sqlite_step(vm, @FRowCount, @ColumnValues, @ColumnNames);
|
|
end;
|
|
end;
|
|
sqlite_finalize(vm, nil);
|
|
sqlite_finalize(vm, nil);
|