Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Возможна ли смена SQL запроса в nestedах в композите? / 24 сообщений из 24, страница 1 из 1
02.11.2005, 21:24
    #33358833
Возможна ли смена SQL запроса в nestedах в композите?
Вопрос
Возможна ли смена SQL запроса в nestedах в композите?

1.получил список ls_dwports
далее беру GetChild
из него "выцарапываю" SQL - без проблем
потом меняю через
if dwchild.Modify(datawindow.table.select) ='' then
ok!
end if
все проходит без сучка и задоринки - по факту SQL не меняется!

может это невозможно?

PB65ORA9
...
Рейтинг: 0 / 0
02.11.2005, 22:41
    #33358897
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
По какому факту?
...
Рейтинг: 0 / 0
03.11.2005, 09:00
    #33359146
Mykola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
если не трудно код покажите
...
Рейтинг: 0 / 0
03.11.2005, 11:08
    #33359480
Возможна ли смена SQL запроса в nestedах в композите?
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
args:
 adw_1 ref u_dw - отчет
 ast_rep структура с параметрами отчета

script:

Long ll_Rep,ll_Count,ll_Num ,ll_ShmCnt
String ls_reports[],ls_sql,ls_ErrText
Boolean lb_ok=True
n_cst_string lnv_str
DataWindowChild ldwc_report

adw_1.of_SetBase(True)
ll_ShmCnt=UpperBound(ast_rep.ls_src[])
ll_Count=adw_1.inv_base.of_GetObjects(ls_reports,"report","*",True)
For ll_rep= 1  To ll_Count
	lb_ok=adw_1.GetChild(ls_reports[ll_rep],ldwc_report)> 0  
	If lb_ok Then
	Else
		ls_ErrText='Ошибка GetChild на Report='+ls_reports[ll_rep]
		exit;
	End If
	ls_sql=ldwc_report.GetSQLSelect()
	For ll_Num =  1  To ll_ShmCnt
		ls_Sql = lnv_str.of_GlobalReplace( ls_Sql, ast_rep.ls_src[ll_Num], ast_rep.ls_dst[ll_Num])
	Next
	lb_ok=ldwc_report.Modify('DataWindow.Table.Select="'+ls_sql+'"')=''
	If lb_ok Then 
	else
		ls_ErrText='Ошибка при смене представления на Report='+ls_reports[ll_rep]
		exit;
	End If
Next
If lb_ok Then
	return True
Else
	If len(ls_ErrText)= 0  Then
		ls_ErrText='Сообщение об ошибке не определено!'
	End If
	MessageBox('Внимание!',ls_ErrText,StopSign!)
	Return False
End If
Суть в простейшем приближении такова
Отчет должен строиться на разных представлениях в зависмости от прав пользователя. Подменяются представления на котором построен отчет.
Например: есть представления CLIENT_GNRL_ALL_SHOW (CLIENT_ADR_ALL_SHOW итд) для отображения данных пользователям Головного Офиса, и CLIENT_GNRL_PDR_SHOW (CLIENT_ADR_PDR_SHOW итд) для отображения данных доступных структурному подразделению. Должна меняться часть представления с "_ALL_SHOW" на "_PDR_SHOW"
Отчет состоит из пяти вложенных DW и одного композита.
В результате скрипта ошибка не выдается, но при retrieve - 5 раз "table or view does not exists". Тобишь читает из представлений на которых нет доступа.
Это подтверждается если в событии DbError в DWControle проставить
Код: plaintext
MessageBox('SQL!',sqlsyntax)

У меня есть смутное подозрение что Sybase не предусмотрел такую возможность
...
Рейтинг: 0 / 0
03.11.2005, 11:54
    #33359655
zolg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
вообще то modify string возвращает.
если работает без подмены и не работает после значит, что-то всетаки меняется...
после modify посмотрите какой select получился
...
Рейтинг: 0 / 0
03.11.2005, 12:03
    #33359693
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Может и ни в этом проблема, но совет дам
GetSQLSelect выдает не совсем тот select который надо использовать при модификации, т е если забираешь через GetSQLSelect то и устанавливаешь через SetSQLSelect
Но возможно лучше просто поменять минимум nested, а лучше весь композит - в плане уменьшения глюков
...
Рейтинг: 0 / 0
03.11.2005, 12:26
    #33359787
Возможна ли смена SQL запроса в nestedах в композите?
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Long ll_Rep,ll_Count,ll_Num ,ll_ShmCnt
String ls_reports[],ls_sql,ls_ErrText
Boolean lb_ok=True
n_cst_string lnv_str
DataWindowChild ldwc_report

adw_1.of_SetBase(True)
ll_ShmCnt=UpperBound(ast_rep.ls_Src[])
ll_Count=adw_1.inv_base.of_GetObjects(ls_reports,"report","*",True)
For ll_rep= 1  To ll_Count
	lb_ok=adw_1.GetChild(ls_reports[ll_rep],ldwc_report)> 0  
	If lb_ok Then
	Else
		ls_ErrText='Ошибка GetChild на Report='+ls_reports[ll_rep]
		exit;
	End If
	ls_sql=ldwc_report.Describe('DataWindow.Table.Select')
	For ll_Num =  1  To ll_ShmCnt
		ls_Sql = lnv_str.of_GlobalReplace( ls_Sql, ast_rep.ls_src[ll_Num], ast_rep.ls_dst[ll_Num])
	Next
	lb_ok=ldwc_report.Modify('DataWindow.Table.Select="'+ls_sql+'"')=''
	If lb_ok Then 
	else
		ls_ErrText='Ошибка при смене представления на Report='+ls_reports[ll_rep]
		exit;
	End If
	if not ldwc_report.Describe('DataWindow.Table.Select')=ls_sql then
		ls_ErrText='Смена представления на Report='+ls_reports[ll_rep]+'не произошла!'
		exit;
	end if
Next

if lb_ok then
	adw_1.SetTransObject(sqlca)
	if adw_1.RetRieve( 489 )< 0  then
		return False
	end if
end if

If lb_ok Then
	return True
Else
	If len(ls_ErrText)= 0  Then
		ls_ErrText='Сообщение об ошибке не определено!'
	End If
	MessageBox('Внимание!',ls_ErrText,StopSign!)
	Return False
End If

Подставил retrieve прямо в скрипт дабы "исключить наводки" - Аналогично!
...
Рейтинг: 0 / 0
03.11.2005, 13:35
    #33360011
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Меня уже многие тут слегка заприкалывали, но все же попробуй проретрайвить весь композит
...
Рейтинг: 0 / 0
03.11.2005, 13:55
    #33360073
Возможна ли смена SQL запроса в nestedах в композите?
Код: plaintext
1.
2.
3.
4.
5.
6.
if lb_ok then
  adw_1.SetTransObject(sqlca)
  if adw_1.RetRieve( 489 )< 0  then
    return False
   end if
end if

Это ретрайвится весь композит
...
Рейтинг: 0 / 0
03.11.2005, 15:16
    #33360400
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
А если так
DWObject InsideReport
InsideReport = dw_composit_window.object.d_inside_window
ls_sql=InsideReport.GetSQLSelect()
ls_sql=replace(.....)
InsideReport.SetSqlSelect(ls_sql)
...
Рейтинг: 0 / 0
03.11.2005, 15:19
    #33360417
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Да кстати может Settransobject еще разочек вставить после смены sql
...
Рейтинг: 0 / 0
03.11.2005, 15:30
    #33360457
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Только сейчас вспомнил
Сам пытался так сделать
Под отладчиком работало-менялось
Скомпилил - хоть ты тресни
Кончилось тем что просто представления на пользователей настроил и завязал
Мне так проще было
Кстати ошибок тоже не давало
Может проще SyntaxFromSQL использовать
...
Рейтинг: 0 / 0
03.11.2005, 16:21
    #33360644
Возможна ли смена SQL запроса в nestedах в композите?
А что мне даст SyntaxFromSQL? там жеж дизайн "рухнет"!
...
Рейтинг: 0 / 0
03.11.2005, 16:34
    #33360684
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Логично
Тогда сделать datastore в нем Syntax
а в nesred копировать строки
...
Рейтинг: 0 / 0
03.11.2005, 17:11
    #33360823
Возможна ли смена SQL запроса в nestedах в композите?
Изворачиваться я тоже умею )))

я так понимаю мыслей ни у кого больше нет?
...
Рейтинг: 0 / 0
03.11.2005, 17:45
    #33360920
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Если представление то может просто фильтр наложить
...
Рейтинг: 0 / 0
03.11.2005, 17:47
    #33360926
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Или сделать представление на представление в соответствии с пользователями
...
Рейтинг: 0 / 0
03.11.2005, 17:48
    #33360932
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Просто если используется Oracle то на уровне СУБД проще получается
Для каждого свои представления делаются
...
Рейтинг: 0 / 0
03.11.2005, 17:50
    #33360936
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
Типа create synonym user.grd_all for grd_podr
...
Рейтинг: 0 / 0
03.11.2005, 18:09
    #33360991
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
__НуТипаГость____Вопрос
Возможна ли смена SQL запроса в nestedах в композите?

1.получил список ls_dwports
далее беру GetChild
из него "выцарапываю" SQL - без проблем
потом меняю через
if dwchild.Modify(datawindow.table.select) ='' then
ok!
end if
все проходит без сучка и задоринки - по факту SQL не меняется!

может это невозможно?

PB65ORA9
Ответ, абсолютно точно возможно, если делаешь правильно...
...
Рейтинг: 0 / 0
03.11.2005, 19:27
    #33361152
zolg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
замена select в PB без проблем если не меняются update propertis, а
при смене view именно они и меняются , что runtime и блокирует

у меня такое проходило под Oracle если основной запрос заворачивался сл.образом select * from ( select ..... ), т.е. update propertis "пустые",
но опять же стабильности не добился.
...
Рейтинг: 0 / 0
03.11.2005, 19:59
    #33361177
Возможна ли смена SQL запроса в nestedах в композите?
Филиппу:
НУ И ЧТО НЕПРАВИЛЬНО ДЕЛАЮ? 8-\

zolg-у:
у меня нет Update настройки в отчете
...
Рейтинг: 0 / 0
04.11.2005, 09:57
    #33361427
zolg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможна ли смена SQL запроса в nestedах в композите?
может быть я не совсем правильно с терминологией обшелся...
update propertis-это не только разрешен update или нет, какой таблицы и по каким полям, но и инфа - какое поле DW к какому полю какой таблицы из БД соответствует, вот это как раз и надо скрыть.

вариант с view или procedure ..(param .. , .. out ref cursor) мне больше нравится
и подобной логики можно зашить больше и сменить ее не меняя клиента..

на крайний случай добавте в DW еще один параметр и им развяжите запрос
select * from _ALL_SHOW where :a_parm_aux='1'
union all
select * from _PDR_SHOW where :a_parm_aux='2'
но грантировать пользователям придется оба view - админы без радости отнесутся...
...
Рейтинг: 0 / 0
04.11.2005, 12:36
    #33361607
Возможна ли смена SQL запроса в nestedах в композите?
Ладно, что нибудь придумаю
Всем спасибо
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Возможна ли смена SQL запроса в nestedах в композите? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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