Гость
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Входящие параметры процедуры DW / 6 сообщений из 6, страница 1 из 1
29.04.2021, 14:59
    #40067284
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
Привет у нас пишут PB 9.0.3

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

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

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

А как получить значения параметров ?
...
Рейтинг: 0 / 0
02.05.2021, 15:09
    #40067904
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
Не очень понятно, что нужно получить?
dw_1.Decribe ('Datawindow.Table.Arguments')
...
Рейтинг: 0 / 0
04.05.2021, 11:06
    #40068275
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
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
04.05.2021, 14:35
    #40068338
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
Код: 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
04.05.2021, 16:04
    #40068371
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
Riska, Это то, что нужно! Спасибо огромное!!!!
...
Рейтинг: 0 / 0
05.05.2021, 20:33
    #40068665
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Входящие параметры процедуры DW
Riska, еще раз спасибо, функция работает прекрасно, но есть один недостаток.

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

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


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