Вопрос
Требуется при помощи SQL-запроса выбрать из таблицы записи, в которых значение поля grupp равно значению переменной S типа String.
Пишу:
var S:String;
QDk.Close;
QDk.SQL.Clear;
QDk.SQL.Add('select * from dk where grupp='+S);
QDk.Open;
А программа при обработке события выдает «Type mismatch in expression». Почему?
Ответ
Если это поле имеет строковый тип, то абсолютно правильно, исключение вылетает на этой строчке:
QDk.SQL.Add('select * from dk where grupp='+S);
Кстати, ты не указал, что именно ругается — твоя прога или SQL-сервер. И если тип поля все-таки строковый, то записывать это надо так:
QDk.SQL.Add('select * from dk where grupp="'+S +'"');
чтобы символьное выражение оказалось в кавычках. Да и параметры запросов никто не отменял. во время разработки записываешь в QDk.SQL:
select * from dk where grupp=:GroupName
Выражения, начинающиеся с двоеточия, воспринимаются, как параметры, и с ними можно работать через свойство TQuery.Params. Т.е, чтобы выполнить очередной запрос, тебе надо будет сделать:
QDk.Active:= false;
QDk.Params.ParamByName('GroupName').asString:= '…';
или
QDk.Params[0].asString:= '…';
QDk.Active:= true;
Azanov
Copyright 2000-2004 Сообщество Чайников
Контактная информация