Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизПараметры в хранимой процедуре 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c