Цитата:
Сообщение от timondrik
Не один вариант не помог, ошибка та же. Вот полный листинг:
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
i:Integer;
codvr,curebeg:string;
begin
dm.qry1.Active := True;
pb1.Position := 0;
pb1.Max := dm.qry1.RecordCount;
for i:=1 to dm.qry1.RecordCount do
begin
codvr := dm.qry1.FieldByName('codvr').AsString;
curebeg := dm.qry1.FieldByName('curebeg').AsString;
if dblDoctor.Checked then
begin
dm.qry1.SQL.Clear;
dm.qry1.SQL.Add('SELECT * FROM 60000324');
dm.qry1.SQL.Add('WHERE codvr="'+codvr+'" AND curebeg="'+curebeg+'"');
dm.qry1.Open;
if dm.qry1.RecordCount > 1 then
begin
mmo1.Lines.Add(dm.qry1.FieldByName('fio').AsString+'|Дубль посещения!!!')
end;
end;
pb1.Position := i;
dm.qry1.Next;
end;
end;
Может прояснит что нибудь. Программа должна пробежаться по базе посещений и выбрать те у которых дубли. Я так то не на профессиональном уровне программирую, по этому мог чего то не знать. Может где то, что то не правильно.
|
Это явно ошибочный код.
Обрати внимание что "
dm.qry1.Active := True;" абсолютно одно и то же что и "
dm.qry1.Open;"
Значит вначале ты выполняешь SQL-запрос (какой - неизвестно - тот который последним был загружен в "
dm.qry1.SQL"). А потом проходишься в цикле по всем записям из этого запроса. Но внутри цикла ты используешь тот же самый qry1 для совершенно других запросов из-за чего твой цикл не может нормально продолжать выполнение.