Zeoslib6.6.6とSqlite3を使用したDelphi7プロジェクトがあります。フォームには、計算されたフィールド(TFloatField; TCurrencyField)の束とともに、サンプルデータベーステーブルからすべてを選択するZqueryがあります。クエリのOnCalcFieldsイベントは正常に実行され、すべてのフィールド値が設定されます。ただし、データセットをループしようとすると、フィールド数の制限(最初に計算された約14のフィールド)内にありますが、一貫して「範囲外のリストインデックス(62893)」例外が発生します。
スニペット:gdはTStringGrid、ZQuery4はTZQueryです
while not ZQuery4.Eof do
begin
row := row + 1;
gd.Cells[0, row] := IntToStr(gd.Row);
gd.Cells[1, row] := ZQuery4pid.Value; //Known column
gd.Cells[2, row] := FormatFloat('0.00', ZQuery4area.Value); //known column
for i := 3 to ZQuery4.FieldCount - 1 do
begin
field := Zquery4.Fields[i]; //crashes here when accessing the first calculated field.
if field.IsNull
then gd.Cells[i, row] := ''
else gd.Cells[i, row] := field.AsString;
end;
end;
奇妙なことに、DBGridをクエリに接続すると、正常に機能します。何か案は?