Цитата:
Сообщение от 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;
Может прояснит что нибудь. Программа должна пробежаться по базе посещений и выбрать те у которых дубли. Я так то не на профессиональном уровне программирую, по этому мог чего то не знать. Может где то, что то не правильно.