C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как задать параметры в TQuery?, UpdateSQL
Racoon
Отправлено: 21.09.2006, 06:57


Ученик-кочегар

Группа: Участник
Сообщений: 19



Подскажите, пожалуйста, как создать параметризированный запрос


DataModule1->UpdateSQL1->ModifySQL->Clear();
DataModule1->UpdateSQL1->ModifySQL->Add("update bs
set Zakaz = :Zakaz where Zakaz = :OLD_Zakaz");
DataModule1->UpdateSQL1->ExecSQL(ukModify);

Пишет :

---------------------------
Field 'Zakaz' is of an unknown type.
---------------------------
Query1->SQL — "SELECT *FROM bs"
В bd Paradox тип поля определен
olegenty
Отправлено: 21.09.2006, 07:18


Ветеран

Группа: Модератор
Сообщений: 2412



TParams попользуй для конкретизации типов параметров
Racoon
Отправлено: 21.09.2006, 07:23


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (olegenty @ 21.09.2006, 07:18)
TParams попользуй для конкретизации типов параметров

А не пользуется!
Как ничего туда не записывается. Не программно, не вручную...
Gedeon
Отправлено: 21.09.2006, 08:23


Ветеран

Группа: Модератор
Сообщений: 1742



Ну а кто будет значения параметров присваивать?
Racoon
Отправлено: 21.09.2006, 08:55


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (Gedeon @ 21.09.2006, 08:23)
Ну а кто будет значения параметров присваивать?

Это как?


DataModule1->Query1->Params->CreateParam(ftString, "Zakaz", ptInput);

Этого мало?
Valdemar
Отправлено: 21.09.2006, 12:21


Мастер участка

Группа: Участник
Сообщений: 433



Читайте help.
Вот из него пример:
CODE
Query2->SQL->Clear();

Query2->SQL->Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION) ");
Query2->SQL->Add("VALUES (:Name, :Capital, :Population) ");

Query2->Params->Items[0]->AsString = "Liechtenstein";
Query2->Params->Items[1]->AsString = "Vaduz";
Query2->Params->Items[2]->AsInteger = 420000;
Query2->ExecSQL();

Racoon
Отправлено: 21.09.2006, 13:05


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (Valdemar @ 21.09.2006, 12:21)
Читайте help.
Вот из него пример:


Это понятно.
А зачем тогда UpdateSQL нужен?
И из DBGrid все пропадает
Опять select делать?

Отредактировано Racoon — 21.09.2006, 13:28
Racoon
Отправлено: 22.09.2006, 10:17


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (olegenty @ 21.09.2006, 13:48)
Ты к тексту хелпа подойди не методом бездумного переписывания в код своей программы, а с учетом используемых в твоей программе компонентов.

Да по всякому пытался.

Query1->ExecSQL();
и т.д. работает нормально, а

UpdateSQL1->ExecSQL(ukModify);

абсолютно никак.
Вернее если в Query1->Params сразу записать параметры, то работает,
а программно не получается.
olegenty
Отправлено: 22.09.2006, 14:25


Ветеран

Группа: Модератор
Сообщений: 2412



сообщение про бездумное копирование удалил. был не прав.

суть: имена "параметров" должны быть идентичны именам полей запроса. тут проблема может в том, что в тексте ModifySQL встретилось имя поля, которого не было в TQuery->SQL. либо компонент просто не умеет работать при динамическом заполнении свойств.

как альтернатива, которая порешает все эти проблемы — EhLib (сам давно пользуюсь, no problem)
Racoon
Отправлено: 25.09.2006, 06:28


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (olegenty @ 22.09.2006, 14:25)
сообщение про бездумное копирование удалил. был не прав.

суть: имена "параметров" должны быть идентичны именам полей запроса. тут проблема может в том, что в тексте ModifySQL встретилось имя поля, которого не было в TQuery->SQL. либо компонент просто не умеет работать при динамическом заполнении свойств.

как альтернатива, которая порешает все эти проблемы — EhLib (сам давно пользуюсь, no problem)

Спасибо. Похоже, что UpgradeSQL работает с готовыми параметрами Query->Params. Оставил просто Query->SQL. А где EhLib взять

Отредактировано Racoon — 25.09.2006, 06:34
olegenty
Отправлено: 25.09.2006, 10:10


Ветеран

Группа: Модератор
Сообщений: 2412



последняя бесплатная для русских версия библиотеки (3.6с)
http://ehlib.com/RUS/ehlibrus.exe
Racoon
Отправлено: 25.09.2006, 10:30


Ученик-кочегар

Группа: Участник
Сообщений: 19



QUOTE (olegenty @ 25.09.2006, 10:10)
последняя бесплатная для русских версия библиотеки (3.6с)
http://ehlib.com/RUS/ehlibrus.exe

Пароль просит
olegenty
Отправлено: 25.09.2006, 12:01


Ветеран

Группа: Модератор
Сообщений: 2412



http://ehlib.com/RUS/ — пройди по ссылке "Регистрация": там внизу страницы написан пароль.
Racoon
Отправлено: 26.09.2006, 07:58


Ученик-кочегар

Группа: Участник
Сообщений: 19



Спасибо

Вернуться в Работа с базами данных в C++Builder