СообЧа > База Знаний > Программирование > Delphi

Вопрос

Требуется при помощи 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 Сообщество Чайников
Контактная информация