谁用过Table的BlockReadSize属性,我遇到一个奇怪的问题. (100分)

  • 主题发起人 主题发起人 brightangel
  • 开始时间 开始时间
B

brightangel

Unregistered / Unconfirmed
GUEST, unregistred user!
我想提高对数据表的遍历速度,用如下代码:
Table->BlockReadSize=200;
int iCount=0;
Table->First();
while(!Table->Eof)
{
xxx=Table->FieldByName("xxx")->Asxxx;
iCount++;
Table->Next();
}
发现iCount始终比记录数多199,我设置断点调试发现是
前面199个记录被读了两遍,为什么?
请各位高手指教.
 
读的是什么数据库,我发现在SQL Server中,如果数据库没有设置主键时有时会出现同样的数据
显示两次的现象,不知道和你这个有没有关系。
 
我用的是PARADOX,数据表中只有三个字段,其中一个为主键。
 
没人知道这个问题吗?
我最后只得把Table->BlockReadSize=Table->RecordCount+1;
所幸是对20万条记录以下的表没问题。
 
[:(]
[red]没人能帮我吗[/red][?]
 
TO教父
能否详细说说, 是Delphi重复读取, 还是数据库中有重复数据?
 
好久的事情了,我也记不太清楚了,好象是Delphi导致数据库有重复记录。
 
我新建了一个如你所说的数据库,录入10条数据,然后用了如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=0;
Table1.BlockReadSize:=4;
Table1.First;
while not Table1.Eof do
begin
Inc(i);
Table1.Next;
end;
Showmessage(IntToStr(i));
end;
显示的是10条记录,没有问题,不知是不是记录太小了的原因。
或者你建立一个同样结构的库,少录几条记录看看有没有问题。
 
后退
顶部