Показать сообщение отдельно
  #24  
Старый 04.11.2012, 15:28
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от 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 для совершенно других запросов из-за чего твой цикл не может нормально продолжать выполнение.
Ответить с цитированием