powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Простой конструктор - SyntaxFromSQL
10 сообщений из 10, страница 1 из 1
Простой конструктор - SyntaxFromSQL
    #35950042
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем! Вопрос чисто теоретический.
Есть система написанная на PowerBuilder -9.0. Рядом с ней существует конструктор отчётов на Infomaker для пользователей (исторически кто то так задамал),
отчёты в Infomaker делают аналитики, но при глюках поддерживаем мы...
Замысел в чём внутри основной системы забодяжить конструктор отчётов, тоесть аналитик генерит с помощью инфомейкера sql скрипт , сохраняет с помощью интерфейса в базе и собственно таким образом перечень отчётов перетечёт в базу и инфомекер останется только у аналитиков (они толковые - знают структуру, поэтому базу подвесить не должны).

Динамически можно использовать SyntaxFromSQL , но он к сожалению не принимает параметры, а требует сразу значения. А хотелось бы чтобы динамически создавалась datastore или dw , которая знала о своих параметрах и при retrieve запрашивала их у пользователя.
Это вообще возможно можно сделать?
Спасибо!
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35950177
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно - называется конструктор отчетов. Вот как у меня выглядит.
SyntaxFromSQL - для создания структуры DataStore педварительно выполняет запрос - время выполнения будет в два раза больше, так что нужно предусмотреть кеширование созданных DataStore.
Параметры в запрос можно передавать например через временную таблицу.
Запрашивать параметры - это нужно самому формочку написать чтобы она запрашивала на основе того, что там аналитики настроят.
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35950526
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Марк! Почитаю!!!
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35950598
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марк, маленький вопросик, а как вы генерите srd файл, ну например есть у вас процедура, есть её параметры и их типы, а дальше - как мне srd файл получить?, в базе то понятно, что лучше srd в блобе хранить... Можно ли пример в студию, если не жаль, на вашем сайте я ответа не нашёл...
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35951734
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поднимаю тему, для конкретного уточнения:

Вот так работает :
ls_sql = ' select rn from PAYMENTS_UNION where rn = 3 '
ls_syntax = oracle_tr.SyntaxFromSQL (ls_sql,'Style(Type=grid)',ls_errors)

А как сделать типо:
ls_sql = ' select rn from PAYMENTS_UNION where rn = :rn'
ls_syntax = oracle_tr.SyntaxFromSQL (ls_sql,'Style(Type=grid)',ls_errors)
Чтобы ругачек не было и потом datastore нормально построилась...???
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35951854
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порядок такой

1.В вашем select-е место для переменной заменить "узнаваемой" константой,
например:
Код: plaintext
1.
2.
Select id,
         Decode(id, 123456789 , 1 , 0 ) marker
WHERE id= 123456789  

2.Используете SyntaxFROMSQL - создаете строку syntax
В этой строке находите подстроку
Код: plaintext
ll_pos1 = POS(ls_synt,'retrieve="')
а затем "после" ll_pos - ищете позицию первой конструкции "text(" или "column(" - ll_pos2

3. Выделяете три подстроки
- от начала до до ll_pos1 - неизменно
- от ll_pos2 до конца - неизменно
- "середина" - от ll_pos1 до ll_pos2 делаете следующее

4. Вот в этой середине
- замещаете все подстроки '123456789' на ':n_id'
- дополняете в конец
Код: plaintext
ls_mid += '~r~narguments=(("n_id", number)) '

5. Снова собираете все три подстроки в одну, и создаете из этого syntax-а datawindow
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35952055
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, распарсивание строки конечно подойдёт, но если параметров несколько, да и ещё разных типов, ну например штук 7. Сложно как то распарсиванием , да и ещё и динамечески всё это провернуть....
Мне кажется Марк как то по другому делал...
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35955179
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boogimanМарк, маленький вопросик, а как вы генерите srd файл, ну например есть у вас процедура, есть её параметры и их типы, а дальше - как мне srd файл получить?, в базе то понятно, что лучше srd в блобе хранить... Можно ли пример в студию, если не жаль, на вашем сайте я ответа не нашёл...
srd файл с отчетом или с процедурой? С отчетом - это external datawindow которое можно рисовать в InfoMaker, PowerBuilder и подкладывать в pbd или в виде внешнего srd файла.
С процедурой - как-то так:
Код: plaintext
1.
2.
3.
4.
ls_sql = "exec dbo." + SRP.sp_name[ 1 ]
ls_syntax = SQLCA.SyntaxFromSQL(ls_sql,"style(type=grid)",ls_errors)	
...
ds = create uo_DataStore
ds.create(ls_syntax,ls_errors)
А параметры в процедуру через временные таблицу(ы) передавать (сама процедура без параметров). В принципе могут быть какие-либо тонкости при работе со временными таблицами в Oracle - не в курсе.
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35956299
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Марк! Я решил что у меня будет нечто среднее между Вашим подходом и ZhV .
1. Я буду брать sql-скрипт и обрезать его до условия where (тоесть без параметров)
2. Делаю datastore и далее распарсиваю его :
а) Запоминаю часть до select
б) Запоминаю часть после text которая
3. Делаю итоговый datastore :
Часть a) + sql-скрипт первоначальный (вместе с where) + образую строку аргументов
(сами аргументы с их типами аналитик вводит в конструкторе) + б)

Примерно то же будет и спроцедурами. Как плюс в таком подходе, что можно аргументы в русской раскладке давать типа = Дата_начала.
Всем спасибо!
...
Рейтинг: 0 / 0
Простой конструктор - SyntaxFromSQL
    #35956304
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
Скрипт можно устанавливать и через ds_1.setsqlcode(sql_str)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Простой конструктор - SyntaxFromSQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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