我有一个使用Zeoslib 6.6.6和Sqlite3的Delphi 7项目。 在窗体上,我有一个Zquery从一个示例数据库表中选取所有东西以及一堆计算字段(TFloatField; TCurrencyField)。查询的OnCalcFields事件运行正常,并设置所有字段值。 但是,当我尝试遍历数据集时,我始终得到'列表索引超出范围(62893)'异常,尽管我处于字段数限制(约14的第一个计算字段)内。Zeoslib - 循环计算字段
段: 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连接到查询它工作正常。有任何想法吗?
当索引超出范围时,我会检查调用堆栈。它可能不是用于处理它的'i',而是在它后面的代码中的某处使用的索引...(像这样循环访问数据集将导致数据集的事件触发!) –