|
|
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Необходимо реализовать следующее: есть <filename.srd> - исходник датавиндова. можно ли во время выполнения программы, подключить его? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 11:51 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Читаем про Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 12:31 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Локшин МаркЧитаем про Код: plaintext А не проще ли про LibraryImport PowerScript function почитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 19:02 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
ФилиппА не проще ли про LibraryImport PowerScript function почитать? Прочитать то может быть и проще, только зачем? Иметь динамически изменяющийся код программы, различный у разных пользователей, когда файлы - вот они лежат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 19:38 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Локшин Марк ФилиппА не проще ли про LibraryImport PowerScript function почитать? Прочитать то может быть и проще, только зачем? Иметь динамически изменяющийся код программы, различный у разных пользователей, когда файлы - вот они лежат. Бред какой-то. Если использовать LibraryImport - это грубо говоря 2 строчки кода (считая dataobject assignment). Если вашим методом делать, то это 1) Чтение файла 2) Парсание его, поскольку .srd напрямую в dw_1.Create(ls_syntax) не пойдёт (то есть пойдёт, но "датавиндова" сблюёт :-) ) 3) А уж потом dw_1.Create(ls_syntax) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 20:32 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
ФилиппБред какой-то. Да похоже. ФилиппЕсли использовать LibraryImport - это грубо говоря 2 строчки кода (считая dataobject assignment). Да? ФилиппЕсли вашим методом делать, то это 1) Чтение файла А для LibraryImport файл уже читать не нужно? Филипп2) Парсание его, поскольку .srd напрямую в dw_1.Create(ls_syntax) не пойдёт (то есть пойдёт, но "датавиндова" сблюёт :-) ) Парсить - это здесь только одно название. Выкинуть первую строчку. Код: plaintext А по поводу сблюет - только лишнее свидетельство недальновидности (мягко выражаясь) авторов PB. Филипп3) А уж потом dw_1.Create(ls_syntax) И что мы имеет? В результате в вашем случае мы имеем лишнее действие - затягивание файла в библиотеку. В моем парсение синтаксиса (первую строчку, кстати, можно просто пропустить при чтении файла). Далее, когда набор DataWindow лежит в виде файлов, то от легко управляется любым броузером файлов и не привязан к программе. Затягивая это все хозяйство в библиотеку, мы имеем проблемы при обновлении версий (эту библиотеку ни в коем случае не накрывать другими версиями), переносе DataWindow из одного места установки программы в другой (объединение набора DataWindow из разных мест). Плюс ко всему, имеем неприятные особенности, связанные с PowerBuilder'ом. К примеру - необходимо контроливорать размер библиотеки (по крайней мере в PB6 при больших размерах библиотеки с вероятностью ~50% билдер при сохранении разрушал библиотеку - убеждался на личном опыте). Несколько раз в PB 9 при сохранении DataWindow после этого приходилось править руками синтаксис, т.к. криво сохранял. Один раз наблюдал сохраненное окно... но скрипты куда-то пропали. Так что мы уж лучше доверим это дело файловой системе, благо она более надежна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 10:11 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Локшин МаркПарсить - это здесь только одно название. Выкинуть первую строчку. Код: plaintext Распарсил? Заодно и DataWindow создал. А по поводу сблюет - только лишнее свидетельство недальновидности (мягко выражаясь) авторов PB.Эта строка кода (мягко выражаясь недальновидно ) не учитывает наличие комментария к объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 10:52 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейЭта строка кода (мягко выражаясь недальновидно ) не учитывает наличие комментария к объекту. :( Согласен. Лучше искать char(10) + "release" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 11:10 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
1) Распарсил, заодно создал, а если ещё раз этот же dataobject в этом же runе программы нужно использовать? Опять "распарсил, заодно создал"? Вместо того чтобы его on demand сунуть в пиббл и уже иметь там и просто назначать. Говорю же - бред :-) 2) Прочитать файл по вашему - это многоступенчатый Powerscriptовый процесс (о чём я уже говорил), вместо одного системного вызова... 3) Не нравится иметь эти dataobjectы постоянно - существует LibraryDelete PowerScript function - Deletes a library file or, if you specify a DataWindow object , deletes the DataWindow object from the library. Зови её в application object's close event... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:21 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Оба приведенных варианта годятся, только все зависит от задачи. Если нужно одноразово закачать ДВ в приложение, то можно и в библиотеку. А вот если это технология работы программы и все или группа ее датавиндовов вынесена в файлы, то по другому может и не получится. Ведь в откомпилированную библиотеку ничего не заимпортируешь, да и не к чему это, держать на клиентах исходники. А если этот датавиндов часто используется, то его можно при загрузке ПО закачать и держать в памяти. Более того, можно развить эту мысль, и держать исходный текст не в srd файлах, а в бд, например... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 23:05 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
ФилиппОпять "распарсил, заодно создал"? Вместо того чтобы его on demand сунуть в пиббл и уже иметь там и просто назначать. Говорю же - бред :-) Да, да, да. Филипп2) Прочитать файл по вашему - это многоступенчатый Powerscriptовый процесс (о чём я уже говорил), вместо одного системного вызова... О каком системном вызове идет речь, я никак не пойму. Филипп3) Не нравится иметь эти dataobjectы постоянно - существует LibraryDelete PowerScript function - Deletes a library file or, if you specify a DataWindow object, deletes the DataWindow object from the library. Зови её в application object's close event... Вот, я и говорю, по хорошему свой аналог library painter'а писать надо. А что будет если программа завершится аварийно? В pbl останется мусор? А если в это время компьютер зависнет? Останемся с кривой pbl? Нужно придумывать схему для задания уникальных названий DataWindow - а вдруг datawindow с таким именем уже есть, что тогда будет? Не нравится каждый раз считывать? Кэшируйте в памяти, сохраняя синтаксис DataWindow. Ваш метод с LibraryImport несет в себе лишь одни проблемы, перечисление которых можно продолжать. Единственная проблема, моего метода - это недокументированность формата *.srd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 10:00 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
авторВот, я и говорю, по хорошему свой аналог library painter'а писать надо. А что будет если программа завершится аварийно? В pbl останется мусор? А если в это время компьютер зависнет? Останемся с кривой pbl? Кто мешает её чистить на старте программы? И вообще, если бы во рту росли грибы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 18:09 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Единственная проблема, моего метода - это недокументированность формата *.srd Это как раз не проблема:) А вот есть еще проблема: без LibraryImport не получится использовать это DW как вложенное в композитных отчетах. С другой стороны у LibraryImport есть проблемы при работе нескольких экземпляров приложения, поскольку первый, кто импортирует, тот блокирует файл библиотеки, и остальные не смогут туда что-либо импортировать. Т.е. каждый экземпляр должен импортировать в свою личную библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 00:58 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky А вот есть еще проблема: без LibraryImport не получится использовать это DW как вложенное в композитных отчетах. В отношении композитных отчетов эта проблема как раз разрешима и без LibraryImport :-) Вот с nested - уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 17:29 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Филипп Anatoly Moskovsky А вот есть еще проблема: без LibraryImport не получится использовать это DW как вложенное в композитных отчетах. В отношении композитных отчетов эта проблема как раз разрешима и без LibraryImport :-) Вот с nested - уже нет. И как можно сделать композит без LibraryImport? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 18:48 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
White OwlИ как можно сделать композит без LibraryImport? Так же как и обычное ДВ. Только все нестеды должны быть уже в приложении, а вот создать нестед в композите не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 22:33 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
iLLer White OwlИ как можно сделать композит без LibraryImport? Так же как и обычное ДВ. Только все нестеды должны быть уже в приложении, а вот создать нестед в композите не получится. Глупости. Делается это так: 1) В нормальном скомпиллированном PBD должен иметься dataobject-болванка, с какой нибудь одной колонкой, external, неважно... Преположим нужно сделать композит с N report objects, у которых dataobjectы не существуют в пибблах... 2) Берём готовое (или через dw_1.Create(ls_syntax)) создаем datawindow, затем в нём опять же с помощью Create создаем N report objects (именуя их уникально), причём dataobjectами им всем назначаем наш "dataobject-болванка". 3) В цикле делаем GetChild на все уникально именованные N report objects и с помошью datawindowchild.Create(syntax) засандаливаем в них синтакс, сидящий в памяти (или в .srd файлах) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 23:30 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Филипп Anatoly Moskovsky А вот есть еще проблема: без LibraryImport не получится использовать это DW как вложенное в композитных отчетах. В отношении композитных отчетов эта проблема как раз разрешима и без LibraryImport :-) Вот с nested - уже нет. я именно это и сказал, только вместо nested употребил соответствующее слово на другом языке :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 23:33 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Забавно, надо будет попробовать. А почему тот же самый метод не сработает для master-nested? Или datawindowchild.Create(syntax) откажется работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 01:02 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
White OwlЗабавно, надо будет попробовать. А почему тот же самый метод не сработает для master-nested? Или datawindowchild.Create(syntax) откажется работать? Для настоящих nested GetChild не будет работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 02:06 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Филипп!!! Ты не знаешь как взять DataWindowChild не из композитного DW??? Я поражен! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 18:25 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
White OwlФилипп!!! Ты не знаешь как взять DataWindowChild не из композитного DW??? Я поражен! :) Вложенные DW могут быть не только в композитных DW. Вот там вот и нельзя получить для них DataWindowChild - фича которую обещают разрулить в PB11 (если у меня не срабатывает ложная память:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 18:44 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВложенные DW могут быть не только в композитных DW. Вот там вот и нельзя получить для них DataWindowChild - фича которую обещают разрулить в PB11 (если у меня не срабатывает ложная память:) Ну на мой взгляд, это не фича, а полноценный баг. И его давно пора чинить... Но, вообще-то, существует трюк позволяющий обойти эту проблему :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 19:41 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
White Owl Anatoly MoskovskyВложенные DW могут быть не только в композитных DW. Вот там вот и нельзя получить для них DataWindowChild - фича которую обещают разрулить в PB11 (если у меня не срабатывает ложная память:) Ну на мой взгляд, это не фича, а полноценный баг. И его давно пора чинить... Но, вообще-то, существует трюк позволяющий обойти эту проблему :) Ну что ж, тогда вот для примера, хочется узнать как это сделать для такого случая: Есть tabular с источником данных "select id, name from customer". В его detail вставлено поле "name" и nested dw_orders, который в гриде показывает для каждого заказчика его заказы "select order_no, order_sum from orders where cust_id = :ai_customer". Аргумент ai_customer привязывается к полю id из tabular. Таким образом получается отчет вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Получить DatawindowChild для dw_orders. Контрольный вопрос: Допустим, что dwchild получен. Сколько в нем будет записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2004, 00:39 |
|
||
|
подключение ДВ
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Задача: Получить DatawindowChild для dw_orders. если главное dw зовут tabular, то: Код: plaintext 1. Что самое забавное, присвоение пятерки никак не влияет ни на что другое. Во всяком случае я пока с проблемами не сталкивался. Anatoly MoskovskyКонтрольный вопрос: Допустим, что dwchild получен. Сколько в нем будет записей? А кто ж его знает?! :) Смотря в какой момент это проверять. Если повесить процедурку на tabular.RetrieveRow, то возможно получишь доступ до всех строк nested dw по порядку. Просто я сам ни разу не пытался получить доступ к данным в nested dw (не было нужды :) ), потому не могу сказать что там будет, но вытащить описание объектов из вложенного dw можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2004, 01:57 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=73&tid=1337826]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
97ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 438ms |

| 0 / 0 |
