【发布时间】:2015-07-30 02:18:58
【问题描述】:
我有一个连接到 Firebird 数据库的 DBXpress 数据结构。我正在通过 ClientDataSet、DataSetProvider 和 SQLQuery 组合添加数据分页。
它运行良好,但最近它在多次调用 Next 后开始引发 unknown isc error 0 exception。
分页代码为:
if not ClientDataSet.Active then
ClientDataSet.Open;
RecNo := ClientDataSet.RecNo; // Keep track of selected record
ClientDataSet.DisableControls;
LastRecNo := GetLastRecNo;
if LastRecNo > -1 then
begin
ClientDataSet.RecNo := LastRecNo;
ClientDataSet.Next;
while (not ClientDataSet.Eof) and (Result < DATA_PAGE_SIZE) do
begin
...
ClientDataSet.Next; // The exception is raised here
Inc(Result);
end;
end;
ClientDataSet.RecNo := RecNo;
ClientDataSet.EnableControls;
间歇性引发的异常,可能是连接问题,但数据库存储在本地,连接字符串类似于localhost:C:\Path\Base.FDB。
编辑: 当用户向下滚动鼠标、向下移动滚动条或导航到列表末尾旁边的项目时,会触发此代码。在最近的测试中,我发现只有在代码正常执行时才会引发异常。如果有断点,或者我在那里放置了一些睡眠,它会正常执行。 我也确定我没有任何其他线程更改 ClientDataSet。
【问题讨论】:
标签: delphi tclientdataset