Показать сообщение отдельно
  #23  
Старый 04.11.2012, 13:07
timondrik timondrik вне форума
Прохожий
 
Регистрация: 12.03.2009
Сообщения: 21
Репутация: -122
По умолчанию

Цитата:
Сообщение от poli-smen
Попробуй заменить кавычки на апостроф:
Код:
  // Вот так:
  dm.qry1.SQL.Add('WHERE codvr='''+codvr+''' AND curebeg='''+curebeg+'''');

  // Или лучше так:
  dm.qry1.SQL.Add('WHERE codvr='+QuotedStr(codvr)+' AND curebeg='+QuotedStr(curebeg));

  // Или так:
  dm.qry1.SQL.Add(Format('WHERE codvr=%s AND curebeg=%s', [QuotedStr(codvr), QuotedStr(curebeg)]));
Попробуй вместо внедрения использовать параметры:
Код:
  dm.qry1.SQL.Add('WHERE codvr=:codvr AND curebeg=:curebeg');
  dm.qry1.Parameters.ParamByName('codvr').Value := codvr;
  dm.qry1.Parameters.ParamByName('curebeg').Value := curebeg;
Попробуй другой провайдер: JET или MSDASQL.
Не один вариант не помог, ошибка та же. Вот полный листинг:
Код:
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;
Может прояснит что нибудь. Программа должна пробежаться по базе посещений и выбрать те у которых дубли. Я так то не на профессиональном уровне программирую, по этому мог чего то не знать. Может где то, что то не правильно.
Ответить с цитированием