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
|
Пароль просит
|
|
olegenty |
Отправлено: 25.09.2006, 12:01 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
http://ehlib.com/RUS/ — пройди по ссылке "Регистрация": там внизу страницы написан пароль.
|
|
Racoon |
Отправлено: 26.09.2006, 07:58 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Спасибо
|
|