在线程中创建Query,当循环使用其查询到第三次时,跳出cpu窗口及出错信息(100分)

  • 主题发起人 美国提子
  • 开始时间

美国提子

Unregistered / Unconfirmed
GUEST, unregistred user!
QueryPool := TQuery.Create(nil);
QueryPool.DatabaseName := FDatabaseName;

QueryDev := TQuery.Create(nil);
QueryDev.DatabaseName := FDatabaseName;

with QueryPool do
begin
Sql.Add('select * from Pool');
Sql.Add('where (PoolState = 1) and (PoolType <> ''1'')');
Open;

while not Eof do
begin
with QueryDev do
begin
Close; //当地三次循环这里时,提示出错,下面语句sql语句也一样出错
//如果Synchronize(Close)就不会出错
//但Synchronize(Sql.Clear)根本就没有清除Sql,
//Synchronize(Open)也查不出任何记录
Sql.Clear;
Sql.Add('select * from PoolDevice');
Sql.Add('where PoolID = '+QueryPool.FieldByName('PoolID').AsString);
Open;
end;
end;
出错现象:跳出cpu窗口计出错信息:
Project Hymms.exe faulted with message: 'access violation at 0x4da2ed3d: read of address
0xfff6d6ec'. Process Stopped. Use Step or Run to continue
 
Open;

First;---------
while not Eof do
begin
with QueryDev do
begin
Close; //当地三次循环这里时,提示出错,下面语句sql语句也一样出错
......

试试看
 
Synchronize(过程名)
过程中进行with Query操作。
 
多人接受答案了。
 
顶部