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

Цитата:
Сообщение от timondrik
Всем привет! У меня тоже проблема связаная с DBF, а точнее с запросом на выборку.
Код:
dm.qry1.SQL.Add('SELECT * FROM 60000324');
dm.qry1.SQL.Add('WHERE codvr="'+codvr+'" AND curebeg="'+curebeg+'"');
dm.qry1.Open;
Программа выдает ошибку:
Код:
Operator/operand type mismatch
Но если убрать последнее условие фильтрации:
Код:
 AND curebeg="'+curebeg+'"
то программа на ура выполнит свою задачу. С DBF редко работаю, по этому ошибка сбила с толку. Использовал ODBC FoxPro.
Какого типа поле "curebeg"?
Что содержится в переменной "curebeg"?
Ты делаешь очистку старого запроса перед добавлением нового?:
Код:
dm.qry1.SQL.Clear;
Попробуй заменить кавычки на апостроф:
Код:
  // Вот так:
  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.
Ответить с цитированием