![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметров [D5, D6, FireBird 1.5.1]
Виталий Панасенко © (2004-09-21 14:45:00)Есть ХП с входным параметром типа Date
Подскажите, как передать значение в эту самую процедуру из Делфи ? Доступ с помощью FIBPlus.
Спасибо.
Johnmen (2004-09-22 10:23:00) [1]Пробовать:
обозначение параметра :вместо ?; имя параметра в запросе строгосовпадает с в ParamByName;
А вообще, лучше динамически подставлять в строку запроса '2004-09-21'. Изменяющуюся ес-но...
И ещё. Интересно запрос в виде
SQL='insert into zakazcur select CAST(''2004-09-21'' AS DATE), zakaz_id, 0 from zakaz'
вообще выполняется ?
Виталий Панасенко (2004-09-22 09:54:00) [2]В чудеса не верю.. :-) На ДМ лежит DataBase, readTransaction, writeTransaction. FIBQuery... Св-во SQL='insert into zakazcur select ?d1, zakaz_id, 0 from zakaz'
Привожу всю процедуру.. Там я уже игрался, как мог:
var
D : TDate;
begin
D := dm.sDate;
while D
Johnmen (2004-09-21 18:08:00) [3]>Виталий Панасенко (21.09.04 17:13) [12]
>Но получаю другую ошибку на этапе назначениея парамету значения
Чудеса...
Если хочешь, приводи подробности и код.
Виталий Панасенко (2004-09-21 17:13:00) [4]>Johnmen © (21.09.04 16:55) [10]
>Погоди-ка...
>В FIBQuery ты выполнял "чистый" запрос или запросом вызывал ХП ?
Чистый, с параметром ?D1.. Но получаю другую ошибку на этапе назначениея парамету значения: Access violation at address 0525A40 in module Project1. Read of address 00000038
>Sem
Мне просто нужно из шаблона заполнить рабочую таблицу, что пользователь потом только количество заказов правил... Я это сделал, но на клиенте... Меня смущает ошибка.. Хочу разобраться.
-SeM- (2004-09-21 16:59:00) [5]Виталий Панасенко (21.09.04 16:05) [7]
> select :d1, zakaz_id, 0 from zakaz
Получим
SELECT '21.09.2004', zakaz_id, 0 from zakaz
Что выбираем?
Johnmen (2004-09-21 16:55:00) [6]Погоди-ка...
В FIBQuery ты выполнял "чистый" запрос или запросом вызывал ХП ?
Виталий Панасенко (2004-09-21 16:51:00) [7]Да, вот для того я вместо StoredProc и попробовал FIBQuery - получаю ту же ошибку :-(... Хорошо хоть работа локальнои данных десятка два (строк)...
Johnmen (2004-09-21 16:09:00) [8]Зачем перебирать. Просто выполнить указанный запрос...
Виталий Панасенко (2004-09-21 16:05:00) [9]Ее я и использовал... Не пашет, выдет тоже... А сам процедура то (смешно самому):
set term ^ ;
create procedure fillcurzakaz (d1 date)
as
begin
insert into zakazcur
select :d1, zakaz_id, 0 from zakaz;
end^
set term ; ^
grant execute on procedure fillcurzakaz to public;
Я то на клиенте это "влоб" сделал, но не интересно перебирать по одной записи while not tbl.eof do tbl2.Append и тд... может, что версия 4,42 ? и иногда (через раз) на присвоении параметру значения получаю Access violation...
Johnmen (2004-09-21 15:29:00) [10]>Виталий Панасенко (21.09.04 15:08) [2]
Ну если так у тебя, то возможно Роман Снегирев (21.09.04 15:11) [4]
А как выглядит запрос ? И почему не использовать TpFIBStoredProc ?
Виталий Панасенко (2004-09-21 15:28:00) [11]все та же ошибка...
stud (2004-09-21 15:11:00) [12]dm.fillSP.ParamByName('D1').AsDate:= strtodate('21.09.2004');
Роман Снегирев (2004-09-21 15:11:00) [13]ParamByName("MyParam").AsDateTime:=MyDateParamValue
Виталий Панасенко (2004-09-21 15:08:00) [14]>Johnmen © (21.09.04 14:49) [1]
>Как строку '08.03.2004'
conversion error from string ''2004-09-21''
хоть и пишу
dm.fillSP.ParamByName('D1').AsString := '21.09.2004';//DateToStr(D);
dm.fillSP.ExecQuery;
Johnmen (2004-09-21 14:49:00) [15]Как строку '08.03.2004'