Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

подстановка значения поля в SQL запрос. [D5, Paradox]


Shapovalov Kirill ©   (2002-12-05 09:38:00) 

Здравствуйте. Столкнулся с проблемой. Имеется запрос который считает количество студентов в группе. Когда в sql builder"e выполняешь е запрос, то всё хорошо. Во время работы программы я изменяю запрос так
format(Select * from student where gruppa=%s,[Form1.Edit1.text]);
То есть подставляю значения поля. потом выбираю метод execSQL.
И пророга у меня ничего не считает.
Вопросы такие:
1) Как правильно подстанавливать значения полей.
2) Как правильно выполнять запросы.

Спасибо.


Max Zyuzin   (2002-12-05 10:32:00) [1]

>Shapovalov Kirill (05.12.02 09:50)
http://www.citforum.ru/programming/32less/index.shtml
Целая книга по Дельфи.
Почитай про работу с БД.
И поищи вообще на этом сайте, там много еще чего есть.

В твоем варианте должно быть примерно так...
Query1.SQL.Clear;
Query1.SQL.Add("Select * from student where gruppa = :group");
Query1.ParamByName("group").AsInteger := 1000;
// Тут все зависит от того какого типа у тебя поле gruppa...
QUery1.Open;


Shapovalov Kirill   (2002-12-05 09:50:00) [2]

Нет. :( Где про это почитать? Или хотя бы синтаксис команды. в хелпе поковыряю.


Anatoly Podgoretsky   (2002-12-05 09:49:00) [3]

Две ошибки
1. форматная строка должна быть в одинарных кавычках
2. используешь не тот метод, надо Open


neXt   (2002-12-05 09:49:00) [4]

в тексте запроса нужно написать что-то вроде

Select * from student where gruppa = :group

в свойстве Query.Params, в дизайн-тайме, нужно указать тип данных для параметра (DataType), например целое.
а в обработчике события OnBeforeOpen у Query написать что-то вроде.

Query.ParamByName("group").AsInteger := 1000;
// ну или что-там нужно


Max Zyuzin   (2002-12-05 09:45:00) [5]

К тому же метод ExecSQL сипользуется для команд Edit, Update и Delete. Для Select используется Open; (это по второму вопросу),
а по первому - использовать параметры... умеешь?


stone   (2002-12-05 09:43:00) [6]

Используй параметры


Наверх

Титульная страница Поиск, карта сайта Написать письмо