powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Входящие параметры процедуры DW
6 сообщений из 6, страница 1 из 1
Входящие параметры процедуры DW
    #40067284
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет у нас пишут PB 9.0.3

Может кто знает, как получить значения параметров хранимой процедуры в DW.

Идея такая. Если отчет не выдал ни одной строчки, (или сформировал но не то что нужно), то нужно по нажатию клавиши сформировать строку запуска процедуры С ПАРАМЕТРАМИ по которой данный отчет не выдал ни то что нужно.

Строку самой хранимой процедуры легко получаем:
dw_1.Decribe ('Datawindow.Table.Procedure')
dw_1.Decribe ('Datawindow.Table.Select')

А как получить значения параметров ?
...
Рейтинг: 0 / 0
Входящие параметры процедуры DW
    #40067904
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно, что нужно получить?
dw_1.Decribe ('Datawindow.Table.Arguments')
...
Рейтинг: 0 / 0
Входящие параметры процедуры DW
    #40068275
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska, Параметр 'Datawindow.Table.Arguments' и 'Datawindow.Table.Procedure' перечисляют одни и те же описанные параметры вызова в DataWindow, а не их значения. Выглядят они так:

'Datawindow.Table.Arguments' = id number~r~n data_start datetime~r~n data_end datetime
'Datawindow.Table.Procedure' = 1 execute dbo.sp_name @id = :id, @data_start = :data_start, @data_end = :data_end

А мне нужны сами значения этих параметров.
...
Рейтинг: 0 / 0
Входящие параметры процедуры DW
    #40068338
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
long	ll_pos_tab, ll_pos_new_line, li_i
string	ls_arg_full_text, ls_arguments, ls_arg_name[], ls_arg_type[], ls_arg_value[]
string ls_TAB = char(9), ls_new_line = char(10)

ls_arg_full_text = dw_1.Describe("DataWindow.table.arguments")  
IF ls_arg_full_text = '?' OR ls_arg_full_text = '!' THEN ls_arg_full_text = ''

DO WHILE ls_arg_full_text <> ''
	li_i++
	ll_pos_tab = Pos(ls_arg_full_text, ls_TAB)
	
	ls_arg_name[li_i] = Left(ls_arg_full_text, ll_pos_tab - 1)
	ls_arg_value[li_i] = dw_1.Describe("Evaluate('" + ls_arg_name[li_i] + "', 0)")
	
	ll_pos_new_line = Pos(ls_arg_full_text, ls_new_line, ll_pos_tab + 1)
	IF ll_pos_new_line = 0 THEN ll_pos_new_line = Len(ls_arg_full_text) + 1
	ls_arg_type[li_i]  = Mid(ls_arg_full_text, ll_pos_tab + 1, ll_pos_new_line - ll_pos_tab - 1)
	
	ls_arg_full_text = Mid(ls_arg_full_text, ll_pos_new_line + 1)
	
	ls_arguments = 	ls_arguments + ls_new_line + char(13) + &
							ls_arg_name[li_i] + Fill(' ', 25 - len(ls_arg_name[li_i])) + ls_TAB + &
							ls_arg_type[li_i] + Fill(' ', 15 - len(ls_arg_type[li_i])) + ls_TAB + &
							ls_arg_value[li_i] 
							
LOOP

MessageBox('Arg', ls_arguments )
...
Рейтинг: 0 / 0
Входящие параметры процедуры DW
    #40068371
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska, Это то, что нужно! Спасибо огромное!!!!
...
Рейтинг: 0 / 0
Входящие параметры процедуры DW
    #40068665
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska, еще раз спасибо, функция работает прекрасно, но есть один недостаток.

Если имя входного поля, хранимой процедуры, совпадает с именем исходящего поля в этой же процедуре, а само значение поля в процедуре поменялось, то функция Evaluate
Код: sql
1.
ls_arg_value[li_i] = dw_1.Describe("Evaluate('" + ls_arg_name[li_i] + "', 0)")

возвращает текущее значение поля, а не то с которым процедура была вызвана. И с этим, похоже, ничего нельзя поделать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Входящие параметры процедуры DW
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (12): Анонимы (9), Yandex Bot 1 мин., Bing Bot 1 мин., CerebroSQL 2 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]