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

Вниз

Параметры в хранимой процедуре IB   Найти похожие ветки 

 
Александр Ч_   (2003-07-01 09:35) [0]

Может кто прокомментировать следующий факт:
В ADO компонентах все работает, а вот в IB

procedure TForm1.Button1Click(Sender: TObject);
begin
sp1.Active:=False;
Sp1.ParamByName("INString").AsString:="dsar srgs rw @#";
Sp1.ExecProc;
// Edit2.Text:=Sp1OutString.AsString; // - НЕ РАБОТАЕТ
Edit2.Text:=Sp1.Params.Items[0].AsString; // РАБОТАЕТ
end;

т.е. выходной параметр из хранимой процедуры возвращается только
по items, а по имени нет.


 
Johnmen ©   (2003-07-01 09:44) [1]

А что с ParamByName ?


 
Zacho ©   (2003-07-01 09:46) [2]


> Александр Ч_ (01.07.03 09:35)

Прокомментировать это не могу, т.к. не пользуюсь TIBStoredProc, но могу дать совет: вместо TIBStoredProc использовать TIBSQL с запросом типа SELECT * FROM MY_PROC(:PARAM1,..) и в процедуре делать SUSPEND даже если она возвращает только одну запись - проблем будет меньше.


 
Johnmen ©   (2003-07-01 09:58) [3]

Кстати,
// Edit2.Text:=Sp1OutString.AsString; // - НЕ РАБОТАЕТ
это потому, что такого поля нет в списке полей (см.фиелд-эдитор).
Наличие вх./вых. параметров не приводит к автоматическому пополнению списка...




 
Александр Ч_   (2003-07-01 10:11) [4]

Johnmen

В том-то и дело, что все там есть, иначе ошибка будет при компиляции.


 
Johnmen ©   (2003-07-01 10:27) [5]

>Александр Ч_ (01.07.03 10:11)
>В том-то и дело, что все там есть,...

Что - всё ? И где - там ?
:)


 
Александр Ч_   (2003-07-01 10:49) [6]

Издеваешься?

У компоненты SP1 в редакторе полей есть поле OutString,
сформированное автоматически


 
Johnmen ©   (2003-07-01 10:55) [7]

>Александр Ч_ (01.07.03 10:49)
>У компоненты SP1 в редакторе полей есть поле OutString,
>сформированное автоматически

Не может такого быть !
Возможно, ты путаешь список параметров со списком полей.

>сформированное автоматически

После каких действий ?


 
SergeyNew ©   (2003-07-01 11:03) [8]

...
Sp1.ParamByName("OutString").AsString:="";
Sp1.ExecProc;
Edit2.Text:=Sp1.ParamByName("OutString").AsString;
...


 
Александр Ч_   (2003-07-01 11:24) [9]

Johnmen

Как при каких действиях? Путать я ничего не могу, я это не
один раз делал, но в ADO. Щелкаешь мышкой два раза на SP при
установленном соединении и все, а потом отключаешь соединение,
если надо. Таким образом не придется настраивать тип поля и т.п
Все выходные параметры отобразятся в списке.


 
Александр Ч_   (2003-07-01 11:34) [10]

>SergeyNew

Sp1.ParamByName("OutString").AsString:="";

попробовал. ничего не изменилось


 
Zacho ©   (2003-07-01 11:40) [11]


> Александр Ч_ (01.07.03 11:34)

Компоненты-то хоть какие ? IBX ? BDE ?
Если IBX, то может стоит вместо Sp1.ExecProc; попробовать Sp1.Open; ?


 
Johnmen ©   (2003-07-01 11:45) [12]

>Александр Ч_

Еще раз, подробнее :
- список вх./вых. параметров и их свойства - в списке Params
- двойной клик на SP - список полей НД, возможно возвращаемого ХП
Думаю, понятно, что это разные вещи...:)


 
Александр Ч_   (2003-07-01 11:52) [13]


>Johnmen

Правильно рассуждаешь.

в Sp1OutString.AsString
OutString -это и есть поле из списка НД. Если процедура
возвращает не набор данных, а только параметры, к ним можно обратиться точно так же.


 
SergeyNew ©   (2003-07-01 12:04) [14]

>Sp1.ParamByName("OutString").AsString:="";
попробовал. ничего не изменилось


а у тебя в ХП есть выходной пар-р "OutString" ?


 
Johnmen ©   (2003-07-01 12:05) [15]

>Александр Ч_ (01.07.03 11:52)
>к ним можно обратиться точно так же.

Нельзя ! По определению.



 
Zacho ©   (2003-07-01 12:07) [16]


> Johnmen © (01.07.03 12:05)

Почему ?
Правда, до сих пор не понятно, о каком именно компоненте идет речь, но по крайней мере TIBStoredProc - потомок TDataSet.


 
Александр Ч_   (2003-07-01 12:19) [17]

Компонент - TIBStoredProc и есть.


 
Johnmen ©   (2003-07-01 12:22) [18]

>Zacho © (01.07.03 12:07)

Чтобы обратиться "также" надо иметь список полей, где они будут отображены с именами, по умолчанию совпадающими с именами вых.параметров. "Автоматом" он не делается !


 
Zacho ©   (2003-07-01 12:22) [19]


> Александр Ч_ (01.07.03 12:19)

А Open вместо ExecProc пробовал ?
И еще раз повторю: не стоит его использовать. Подробности - в http://www.ibase.ru/devinfo/ibstp.htm


 
Zacho ©   (2003-07-01 12:31) [20]


> Zacho © (01.07.03 12:22)

Извиняюсь, Open не работает.

> Johnmen © (01.07.03 12:22)

Уже убедился :-) Просто думал, что т.к. TIBStoredProc - потомок TDataSet, то и работа с полями возвращаемого НД должна быть такой же. Оказывается, ошибался :(



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

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

Наверх




Память: 0.51 MB
Время: 0.019 c
14-78041
DelphiBeginner
2003-07-09 14:47
2003.07.24
GDB


3-77788
Veles
2003-07-02 14:17
2003.07.24
ГДЕ ?? !!! dbclient.dll


3-77763
Shtock
2003-06-30 12:34
2003.07.24
проблема со скриптом и заменой символов в FastReport


14-78142
Th
2003-07-08 18:49
2003.07.24
Маленькая находка, может кому-нибудь будет интересно...


3-77784
ai
2003-07-02 13:47
2003.07.24
Запрос из TADOQuery -как его закрыть?