Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
Виталий Панасенко   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
14-1096029033
квакер
2004-09-24 16:30
2004.10.17
Команда в кваке


4-1094910412
Davinchi
2004-09-11 17:46
2004.10.17
Получение WndProc от запущенного приложения


1-1097017042
Kirilllius
2004-10-06 02:57
2004.10.17
TreeView


14-1096314391
Dot
2004-09-27 23:46
2004.10.17
Как убрать с рабстола Мое сетевое окружение в 2000


1-1096435775
Vint
2004-09-29 09:29
2004.10.17
нужно перехватить сообщение об открытии окна (наверное)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский