Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-77941
olookin
2003-07-10 16:50
2003.07.24
вызов из DLL


1-77821
stkatch
2003-07-09 16:36
2003.07.24
Как узнать Handle текущего потока (Thread)


8-78003
reticon
2003-04-03 22:31
2003.07.24
опять медиаплеер :(((((((


1-77985
Tahion2
2003-07-09 21:44
2003.07.24
Как добавить Item в TreeView с 32bpp иконкой, загруженной с файла


3-77812
Devourer
2003-07-03 14:55
2003.07.24
Справка по функциям API для БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский