Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Передача параметров   Найти похожие ветки 

 
Виталий Панасенко   (2004-09-21 14:45) [0]

Есть ХП с входным параметром типа Date
Подскажите, как передать значение в эту самую процедуру из Делфи ? Доступ с помощью FIBPlus.
Спасибо.


 
Johnmen ©   (2004-09-21 14:49) [1]

Как строку "08.03.2004"


 
Виталий Панасенко   (2004-09-21 15:08) [2]

>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;


 
stud ©   (2004-09-21 15:11) [3]

dm.fillSP.ParamByName("D1").AsDate:= strtodate("21.09.2004");


 
Роман Снегирев   (2004-09-21 15:11) [4]

ParamByName("MyParam").AsDateTime:=MyDateParamValue


 
Виталий Панасенко   (2004-09-21 15:28) [5]

все та же ошибка...


 
Johnmen ©   (2004-09-21 15:29) [6]

>Виталий Панасенко   (21.09.04 15:08) [2]

Ну если так у тебя, то возможно Роман Снегирев   (21.09.04 15:11) [4]
А как выглядит запрос ? И почему не использовать TpFIBStoredProc ?


 
Виталий Панасенко   (2004-09-21 16:05) [7]

Ее я и использовал... Не пашет, выдет тоже... А сам процедура то (смешно самому):
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 16:09) [8]

Зачем перебирать. Просто выполнить указанный запрос...


 
Виталий Панасенко   (2004-09-21 16:51) [9]

Да, вот для того я вместо StoredProc и попробовал FIBQuery - получаю ту же ошибку :-(... Хорошо хоть работа локальнои данных десятка два (строк)...


 
Johnmen ©   (2004-09-21 16:55) [10]

Погоди-ка...
В FIBQuery ты выполнял "чистый" запрос или запросом вызывал ХП ?


 
-SeM-   (2004-09-21 16:59) [11]

Виталий Панасенко   (21.09.04 16:05) [7]

> select :d1, zakaz_id, 0 from zakaz


Получим
SELECT "21.09.2004", zakaz_id, 0 from zakaz

Что выбираем?


 
Виталий Панасенко   (2004-09-21 17:13) [12]

>Johnmen ©   (21.09.04 16:55) [10]
>Погоди-ка...
>В FIBQuery ты выполнял "чистый" запрос или запросом вызывал ХП ?
Чистый, с параметром ?D1.. Но получаю другую ошибку на этапе назначениея парамету значения: Access violation at address 0525A40 in module Project1. Read of address 00000038

>Sem
Мне просто нужно из шаблона заполнить рабочую таблицу, что пользователь потом только количество заказов правил... Я это сделал, но на клиенте... Меня смущает ошибка.. Хочу разобраться.


 
Johnmen ©   (2004-09-21 18:08) [13]

>Виталий Панасенко   (21.09.04 17:13) [12]
>Но получаю другую ошибку на этапе назначениея парамету значения

Чудеса...
Если хочешь, приводи подробности и код.


 
Виталий Панасенко   (2004-09-22 09:54) [14]

В чудеса не верю.. :-) На ДМ лежит DataBase, readTransaction, writeTransaction. FIBQuery... Св-во SQL="insert into zakazcur select ?d1, zakaz_id, 0 from zakaz"
Привожу всю процедуру.. Там я уже игрался, как мог:
var
D : TDate;
begin
  D := dm.sDate;
  while D <= dm.eDate do
  begin
    try
      (*with dm, fillSPQry do
       begin
         {SQL.Clear;
         SQL.Add("insert into zakazcur select cast("+ QuotedStr(DateToStr(D))+" as date) , zakaz_id,0 from zakaz");}
         ParamByName("D1").AsDateTime := D;
       end;*)
      dm.fillSPQry.ParamByName("D1").AsDateTime := D;//"21.09.2004";//DateToStr(D); - Тут получаю Access violation
      dm.fillSPQry.ExecQuery;
    except
      dm.fillSPQry.Transaction.Rollback;
      if MessageDlg("&#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#231;&#224;&#239;&#238;&#235;&#237;&#229;&#237;&#232; &#228;&#235;&#255; " + DateToStr(D)+" &#247;&#232;&#241;&#235;&#224;. &#207;&#240;&#238;&#228;&#238;&#235;&#230;&#232;&#242;&#252; ?", mtConfirmation, [mbYes, mbNo], 0) <> mrOK then
       Break;
    end;//-try..except*)
    (*dm.zkzTbl.First;
    with dm do
    while not zkzTbl.Eof do
     begin
       zkzcTbl.Append;
       zkzcTblZAKAZ_ID.Value := zkzTblZAKAZ_ID.Value;
       zkzcTblZAKAZ_DATE.Value := D;
       zkzcTblZAKAZ_KOLVO.Value := 0;
       zkzcTbl.Post;

       zkzTbl.Next;
     end;*)
    D := D + 1;//-&#209;&#235;&#229;&#228;&#243;&#254;&#249;&#232;&#233; &#228;&#229;&#237;&#252;
  end;//-while
  dm.zkzcTbl.CloseOpen(False);

У меня такое подозрение, что это из-за того, что FB версии 1,5,1, а FIBPlus - 4.42. Я его трассировал, ошибка происходит в модуле FIBQuery... Может, в 1,5,1 изменились значения типов полей в систаблицах и старая версия не может определить тип параметра ?


 
Johnmen ©   (2004-09-22 10:23) [15]

Пробовать:
обозначение параметра : вместо ?; имя параметра в запросе строго совпадает с в ParamByName;

А вообще, лучше динамически подставлять в строку запроса "2004-09-21". Изменяющуюся ес-но...

И ещё. Интересно запрос в виде
SQL="insert into zakazcur select CAST(""2004-09-21"" AS DATE), zakaz_id, 0 from zakaz"
вообще выполняется ?



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
1-1096400524
Alex870
2004-09-28 23:42
2004.10.17
Курсор


14-1096358962
GH@ST
2004-09-28 12:09
2004.10.17
Как более грамотно решить задачу??


14-1096042220
Defunct
2004-09-24 20:10
2004.10.17
Если бы программисты строили дома.


4-1094845471
Зяц
2004-09-10 23:44
2004.10.17
Консоль и GUI двойной удар


14-1096276994
Petr V. Abramov
2004-09-27 13:23
2004.10.17
Кто хочет поработать? (немного :)