Цитата:
Сообщение от 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.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.