|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Посоветуйте как в 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 не имеет и ничего не сделаешь или все же есть варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2009, 18:49 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Гриценко А.В., Да что ж вы по кругу, честное слово... С nested reports ничего не выйдет для композитов (их репортов) DWC надо использовать Modify, а не Create. datawindowchild.MODIFY("CREATE + syntax massaged properly") Всё это уже муссировалось в ответ на ВАШИ вопросы :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2009, 19:43 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 12:43 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Муссироваться оно может и муссировалось - только так и не заработало 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([строка с описанием окна])) // не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 13:08 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Модификация nested, находящихся НЕ в composite, когда DWO уже загружен в DW - невозможна. Единственная возможность - создавать синтаксис и под некими именами импортировать nested'ы в специально выделенную PBL/PBD подключенную в LibraryList приложения, а затем уже через DW.Create создать главное DW со ссылками на эти nested. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:16 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Однозначно, так и делаем. Перед созданием основного ДВ, необходимо залить вложенные ДВ в PBL и ее добавить в LibraryList. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:22 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Филипп! Объясните пожалуйста, в каком синтаксисе надо давать команду 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]) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:28 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Вот это точно лишнее Код: plaintext 1.
Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:32 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyМодификация nested, находящихся НЕ в composite, когда DWO уже загружен в DW - невозможна. Единственная возможность - создавать синтаксис и под некими именами импортировать nested'ы в специально выделенную PBL/PBD подключенную в LibraryList приложения, а затем уже через DW.Create создать главное DW со ссылками на эти nested. Анатолий, поясните пожалуйста Вы предлагаете включить в LibraryList приложения некую тюнинговую pbl и подгружать окна в нее извне перед вызовом окна? ТЕ изменять библиотеки приложения на компе пользователя? А что, в runtime билдер может брать dw из PBL ?!! Или libraryimport может писать в PBD ?! Если так - то больше ничего не надо... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:55 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
[quot spas2001]Вот это точно лишнее Код: plaintext 1.
Да я пробовал резать - без эффекта У меня есть экспорт файл - вопрос что с им сделать чтоб отработало ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:57 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Через ORCA или PBNI возможно ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 14:58 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Гриценко А.В.Филипп! Объясните пожалуйста, в каком синтаксисе надо давать команду modify с Create Вот здесь написан принцип, как это делать. А готовое решение вряд ли у кого-то есть, учитывая что проще (на порядок) все сделать через LibraryImport. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 15:00 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Гриценко А.В.ТЕ изменять библиотеки приложения на компе пользователя? А что, в runtime билдер может брать dw из PBL ?!! Или libraryimport может писать в PBD ?! На все 3 вопроса ответ - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 15:01 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
spas2001Через ORCA или PBNI возможно Для работы с DWO ORCA не нужен - есть встроенная ф-я LibraryImport. А PBNI - вообще здесь никак нельзя применить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 15:03 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyГриценко А.В.Филипп! Объясните пожалуйста, в каком синтаксисе надо давать команду modify с Create Вот здесь написан принцип, как это делать. А готовое решение вряд ли у кого-то есть, учитывая что проще (на порядок) все сделать через LibraryImport. Эту старую дискуссию помню - не помогло А с LibraryImport поподробнее пожалуйста... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 15:04 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Гриценко А.В.Эту старую дискуссию помню - не помогло Как понятнее объяснить - не знаю. А с LibraryImport поподробнее пожалуйста... Позже напишу, перерыв прошел, пора возвращаться к работе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 15:12 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Спасибо! На первый взгляд 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) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 17:24 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Anatoly Moskovskyspas2001Через ORCA или PBNI возможно Для работы с DWO ORCA не нужен - есть встроенная ф-я LibraryImport. А PBNI - вообще здесь никак нельзя применить. Насчет LibraryImport полностью поддерживаю ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2009, 21:11 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Гриценко А.В.На первый взгляд 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2009, 00:41 |
|
Динамическая загрузка dw composite/nested reports
|
|||
---|---|---|---|
#18+
Спасибо , все получилось Никаких блокировок я не заметил Запустил несколько экземляров приложения - все ок Никакого преобразования srd типа обрезания заголовка - не надо Так что это тоже наверное надуманные проблемы... PS: Мне не нравиться необходимость писать в pbd но раз по-другому нельзя... 1) Сделал для основных окон Create([srd-файл]) если есть образ этого окна в справочнике - ну это у меня уже давно 2) Дополнительно сделал рекурсивную функцию которая сканит загружаемый синтаксис с поиском Nested,Composite,dddw Ключевые слова для поиска на самом деле такие: 'dataobject="' 'dddw.name=' Что нашел проверяю на наличие в справочнике и libraryimport([srd-файл]) в tmp.pbd ------------------ Результат - все пашет для всех dw в проге Достаточно засунуть образы этих srd - файлов в справочник БД МАленькое неудобство: dddw видимо кешируюся - поэтому изменения видны только после перезагрузки проги Все остальное на лету ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2009, 14:44 |
|
|
start [/forum/topic.php?fid=15&fpage=32&tid=1336208]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 317ms |
total: | 459ms |
0 / 0 |