powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическая загрузка dw composite/nested reports
20 сообщений из 20, страница 1 из 1
Динамическая загрузка dw composite/nested reports
    #36092008
Посоветуйте как в PB9
динамически загрузить dw в composite/nested reports

Цель - динамическое внесение мелких обновлений в программы без перекомпиляции
Простые окна давно сложены в блобы справочника окон и перегружаются по - необходимости

Все проходит кроме как для dw composite/nested reports
-------------------------------------------------------------

Основное окно - все понятно
dw.create ([строка] , ls_errmess )

//Далее
datawindowchild dwc_report
dws.GetChild ([имя влож репорта], dwc_report )
dwc_report.SetTransObject(SQLCA) // к примеру... пашет
dwc_report.create ([строка] , ls_errmess ) // не пашет

те datawindowchild функции create не имеет и ничего не сделаешь или все же есть
варианты?
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36092081
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.,

Да что ж вы по кругу, честное слово...
С nested reports ничего не выйдет
для композитов (их репортов) DWC надо использовать Modify, а не Create.
datawindowchild.MODIFY("CREATE + syntax massaged properly")

Всё это уже муссировалось в ответ на ВАШИ вопросы :-)))
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093089
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093209
Муссироваться оно может и муссировалось - только так и не заработало


1) datawindowchild.MODIFY("CREATE + syntax massaged properly")
Утверждаем что это должно сработать для composite?
Спасибо, попробую еще раз


2) Nested reports
You cannot use GetChild to get a reference to a report in a composite DataWindow when the report itself is a composite or nested DataWindow.

Но!!!

Object.DataWindow.Processing = '5' // !!! Обман билдера и...
datawindowchild nreport
GetChild (ObjName, nreport ) // работает
nreport.SetTransObject(SQLCA) // работает

// однако
errmess=nreport.MODIFY("CREATE "+ string([строка с описанием окна])) // не работает
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093492
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модификация nested, находящихся НЕ в composite, когда DWO уже загружен в DW - невозможна.

Единственная возможность - создавать синтаксис и под некими именами импортировать nested'ы в специально выделенную PBL/PBD подключенную в LibraryList приложения, а затем уже через DW.Create создать главное DW со ссылками на эти nested.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093511
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однозначно, так и делаем. Перед созданием основного ДВ, необходимо залить вложенные ДВ в PBL и ее добавить в LibraryList.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093534
Филипп!
Объясните пожалуйста, в каком синтаксисе надо давать команду modify с Create

Так не работает:
---------------------------------------
Те дал просто 'create ' + содержимое файла экспортированного dw

errmess=nreport.MODIFY(modstr)

Где

modstr=CREATE $PBExportHeader$dw_testcomp1.srd
release 9;
datawindow(units=0 timer_interval=0 color=1090519039 processing=0 HTMLDW=no print.printername="" print.documentname="" print.orientation = 1 print.margin.left = 110 print.margin.right = 110 ...


Результат
Line 1 Column 9: incorrect syntax.

Попытки заключить в кавычки или подрезать там что-то успеха не имели
----------------------

Повторюсь:
Для простых dw все работает в таком синтаксисе
dw.create([содержимое файла экспортированного dw])
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093552
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это точно лишнее
Код: plaintext
1.
$PBExportHeader$dw_testcomp1.srd
release  9 ;
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093643
Anatoly MoskovskyМодификация nested, находящихся НЕ в composite, когда DWO уже загружен в DW - невозможна.

Единственная возможность - создавать синтаксис и под некими именами импортировать nested'ы в специально выделенную PBL/PBD подключенную в LibraryList приложения, а затем уже через DW.Create создать главное DW со ссылками на эти nested.


Анатолий, поясните пожалуйста

Вы предлагаете включить в LibraryList приложения некую тюнинговую pbl и подгружать окна в нее извне перед вызовом окна?

ТЕ изменять библиотеки приложения на компе пользователя?

А что, в runtime билдер может брать dw из PBL ?!!
Или libraryimport может писать в PBD ?!

Если так - то больше ничего не надо...
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093651
[quot spas2001]Вот это точно лишнее
Код: plaintext
1.
$PBExportHeader$dw_testcomp1.srd
release  9 ;


Да я пробовал резать - без эффекта
У меня есть экспорт файл - вопрос что с им сделать чтоб отработало
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093655
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через ORCA или PBNI возможно
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093665
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.Филипп!
Объясните пожалуйста, в каком синтаксисе надо давать команду modify с Create

Вот здесь написан принцип, как это делать.
А готовое решение вряд ли у кого-то есть, учитывая что проще (на порядок) все сделать через LibraryImport.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093667
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.ТЕ изменять библиотеки приложения на компе пользователя?

А что, в runtime билдер может брать dw из PBL ?!!
Или libraryimport может писать в PBD ?!

На все 3 вопроса ответ - да.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093669
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001Через ORCA или PBNI возможно

Для работы с DWO ORCA не нужен - есть встроенная ф-я LibraryImport.

А PBNI - вообще здесь никак нельзя применить.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093676
Anatoly MoskovskyГриценко А.В.Филипп!
Объясните пожалуйста, в каком синтаксисе надо давать команду modify с Create

Вот здесь написан принцип, как это делать.
А готовое решение вряд ли у кого-то есть, учитывая что проще (на порядок) все сделать через LibraryImport.


Эту старую дискуссию помню - не помогло

А с LibraryImport поподробнее пожалуйста...
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36093708
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.Эту старую дискуссию помню - не помогло

Как понятнее объяснить - не знаю.

А с LibraryImport поподробнее пожалуйста...
Позже напишу, перерыв прошел, пора возвращаться к работе :)
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36094093
Спасибо!

На первый взгляд LibraryImport в runtime сработал
Но в хелпе ни слова о том что можно писать в pbd - только pbl и речь шла о datawindow.syntax
а не о srd файлах

Пример:

string ErrorBuffer
int errcod
errcod=LibraryImport('C:\farmaster\kassa\kassa.pbd', "dw_term", ImportDataWindow!, filetostring('C:\farmaster9\kassa\dw_term.srd') , ErrorBuffer )
messagebox(string(errcod),ErrorBuffer)
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36094437
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyspas2001Через ORCA или PBNI возможно

Для работы с DWO ORCA не нужен - есть встроенная ф-я LibraryImport.

А PBNI - вообще здесь никак нельзя применить.

Насчет LibraryImport полностью поддерживаю
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36094571
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гриценко А.В.На первый взгляд LibraryImport в runtime сработал
Но в хелпе ни слова о том что можно писать в pbd - только pbl
Вот я счас открыл справку по LibraryImport и не увидел там слово PBL. Там говорится про library.
Так что это вы сами себе придумали проблему.
Не говоря уже о том что никакой разницы между PBL и PBD, кроме расширения, нету - это одно и то же.
и речь шла о datawindow.syntax а не о srd файлах
srd это и есть datawindow.syntax, только с заголовком - одна или две строки начинающиеся с $.

Пример:
string ErrorBuffer
int errcod
errcod=LibraryImport('C:\farmaster\kassa\kassa.pbd', "dw_term", ImportDataWindow!, filetostring('C:\farmaster9\kassa\dw_term.srd') , ErrorBuffer )
messagebox(string(errcod),ErrorBuffer)
Чтобы это работало, перед импортом надо удалить из текста заголовки ($...)

Ну и еще одно надо учитывать при LibraryImport - блокировка файлов. Например при работе на терминальном сервере, когда несколько юзеров пользуются одной копией программы, необходимо предусмотреть, чтобы каждый запущенный экземпляр программы импортировал в свою личную библиотеку. Иначе после обращения к объектам библиотеки из одного из экземпляров она заблокируется и импорт в нее из других будет невозможен.
Например можно при запуске сгенерировать уникальное имя библиотеки, создать ее и добавить ее в Library list используя ф-и AddToLibraryList или SetLibrayList
Учтите только что эти ф-и не работают при запуске в IDE.
...
Рейтинг: 0 / 0
Динамическая загрузка dw composite/nested reports
    #36097445
Спасибо , все получилось

Никаких блокировок я не заметил
Запустил несколько экземляров приложения - все ок
Никакого преобразования srd типа обрезания заголовка - не надо
Так что это тоже наверное надуманные проблемы...

PS:

Мне не нравиться необходимость писать в pbd но раз по-другому нельзя...

1) Сделал для основных окон Create([srd-файл]) если есть образ этого окна в справочнике
- ну это у меня уже давно

2) Дополнительно сделал рекурсивную функцию которая сканит загружаемый синтаксис с поиском Nested,Composite,dddw

Ключевые слова для поиска на самом деле такие:
'dataobject="'
'dddw.name='

Что нашел проверяю на наличие в справочнике и libraryimport([srd-файл]) в tmp.pbd

------------------
Результат - все пашет для всех dw в проге
Достаточно засунуть образы этих srd - файлов в справочник БД

МАленькое неудобство:
dddw видимо кешируюся - поэтому изменения видны только после перезагрузки проги
Все остальное на лету
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическая загрузка dw composite/nested reports
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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