|
|
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Я сам не работаю в PowerBuilder, но у нас в организации он используется. На данный момент нет людей с опытом работы через OLE с офисными приложениями (Word, Excel) из PB, но есть необходимость начать формировать отчетность в Word/Excel. Хотелось бы услышать авторитетное мнение, основанное на реальном опыте использования PowerBuilder+OLE. Какой нам выбрать путь развития? Какие плюсы/минусы у каждого? 1. Вся работа с Word/Excel осуществляется стредствами самого PowerBuilder. 2. На С++ Builder/Delphi/Visual C++ создается DLL, которая предоставляет некий интерфес для PowerBuilder при работе с Word/Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:41 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Используйте вариант 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:03 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Guest1 wrote: > 1. Вся работа с Word/Excel осуществляется стредствами самого PowerBuilder. > 2. На С++ Builder/Delphi/Visual C++ создается DLL, которая предоставляет > некий интерфес для PowerBuilder при работе с Word/Excel. 1-й. Второй возможен, но реальных преимуществ я не вижу, а усложнение будет приличным. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:09 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Я за работу с OLE объектами (серверами) средствами самого билдера. Плюсы: 1. Весь код находится в одном месте, исходники DLL имеют свойства теряться. 2. Все, что Вы можете делать с приложениями Word/Excel как пользователь ( таблицы, форматирование текста, правописание и пр.) Вы можете делать с помощью билдера. Из минусов: Скорость работы. Но написание DLL проблему не решит. Некоторые пробовали использовать DDE, вроде бы быстрее. Примеры кода можно найти поиском. Хинт: Для того, что бы определить, какую команду офисного приложения вызвать, проделайте ваши действия по форматированию, вставке и др. руками, и запишите последовательность Ваших действий в макрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:11 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
2й вариант! однозначно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:49 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
авторитет wrote: > 2й вариант! однозначно! Обоснуй ;). Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:35 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
авторитет2й вариант! однозначно! Ваше мнение отличается от остальных, можно поподробнее. Вообще, нам хотелось бы получить некую библиотеку функций, простую в использовании, для работы с Word/Excel. Что бы каждому разработчику PowerBuilder (их несколько) не надо было вникать в особенности обектной модели офисных приложений, а просто вызывать готовые задокументированые функции. Например (синтаксис на языке С): Код: plaintext 1. 2. 3. 4. 5. 6. Ну и далее по мере необходимости расширять библиотеку. Можно ли такое сделать средствами PowerBuilder? Повторюсь сам я PowerBuilder не использую, просто сейчас надо принять решение какими средствами реализовать эту библиотеку. То что в PowerBuilder средства работы с Word/Excel через OLE такие же как в C++ Builder/Delphy я понял, видел примеры кода здесь на форуме. Вопрос в том нет ли каких-то ограничений и проблем? И можно ли создать некую библиотеку для этих целей средствами PowerBuilder и насколько это просто и удобно? В варианте с внешней DLL например на языке С, на мой взгляд один плюс, можно использовать ее в других системах программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 07:43 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Смысла дублировать в DLL структуру языка VBA FOR APPLICATIONS нет. Если что-то и реализовывать в ДЛЛ то это готовые механизмы для конкретных целей. В идеале это передача параметров в DLL из Билдера, затем вызов функции ДЛЛ построения данных (или что там у Вас еще будет) на основании переданных параметров. Плюсы работы с Офисными приложениями через DLL. 1) Нормальный перехват ошибок 2) Готовый интерфейс VBA (не надо думать - а как же параметры использовать в той или иной функции) 3) Устойчивость (правда зависит от того как будет написано.) 4) Возможность сделать мулти офисный алгоритм(чтобы извне никого не волновало. а какой же ворд у пользователя стоит.) 5) Ну и как было раньше сказано, возможность использовать в различных проектах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 10:36 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Если интересуют готовые dll для генерации отчетов в WORD стучитесь...договоримся) ANagorny_NOSPAM_mail_NOSPAM_ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 10:46 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Andrew NagornyСмысла дублировать в DLL структуру языка VBA FOR APPLICATIONS нет. Если что-то и реализовывать в ДЛЛ то это готовые механизмы для конкретных целей. В идеале это передача параметров в DLL из Билдера, затем вызов функции ДЛЛ построения данных (или что там у Вас еще будет) на основании переданных параметров. Да конечно, именно это мы и хотим сделать. Andrew Nagorny Если интересуют готовые dll для генерации отчетов в WORD стучитесь...договоримся) Спасибо. Как-нибудь сами. :) Если серьезно. То проблем с реализацией DLL нет, т.к. есть опыт формирования отчетность из C++ Builder в Word/Excel. Но было бы интересно увидеть набор функций, т.е. интерфейс библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 12:21 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
У нас он вот такой SUBROUTINE Reset() LIBRARY "WGRODBC.dll" SUBROUTINE SetDisplayNameMenu(String DisplayNameTextMenu) LIBRARY "WGRODBC.dll" alias for "SetDisplayNameMenu;Ansi" SUBROUTINE SetDisplayNameMenuButtonTable(String DisplayNameTextMenuButtonTable) LIBRARY "WGRODBC.dll" alias for "SetDisplayNameMenuButtonTable;Ansi" SUBROUTINE SetRegimeBuildDocumentInFIELD(Boolean BuildInFIELD) LIBRARY "WGRODBC.dll" SUBROUTINE AddFieldValue(String DisplayNameText,String Value) LIBRARY "WGRODBC.dll" alias for "AddFieldValue;Ansi" SUBROUTINE AddFieldValueSQLSelect(String DisplayNameText,String SQLSelect) LIBRARY "WGRODBC.dll" alias for "AddFieldValueSQLSelect;Ansi" SUBROUTINE AddFieldTableSQLSelect(String DisplayNameText,String SQLSelect) LIBRARY "WGRODBC.dll" alias for "AddFieldTableSQLSelect;Ansi" SUBROUTINE AddFieldColumn(String TableDisplayNameText,String DisplayNameText,String SQLName,String Format) LIBRARY "WGRODBC.dll" alias for "AddFieldColumn;Ansi" SUBROUTINE AddMenuButton(String DisplayNameText) LIBRARY "WGRODBC.dll" alias for "AddMenuButton;Ansi" SUBROUTINE AddMenuButtonTable(String DisplayNameText) LIBRARY "WGRODBC.dll" alias for "AddMenuButtonTable;Ansi" SUBROUTINE AddMenuButtonColumn(String TableDisplayNameText,String DisplayNameText) LIBRARY "WGRODBC.dll" alias for "AddMenuButtonColumn;Ansi" SUBROUTINE AddVariable(String Name,String Value) LIBRARY "WGRODBC.dll" alias for "AddVariable;Ansi" SUBROUTINE RefreshMenu() LIBRARY "WGRODBC.dll" SUBROUTINE RefreshVariables() LIBRARY "WGRODBC.dll" SUBROUTINE SetDSN(String DSN) LIBRARY "WGRODBC.dll" alias for "SetDSN;Ansi" SUBROUTINE SetPWD(String PWD) LIBRARY "WGRODBC.dll" alias for "SetPWD;Ansi" SUBROUTINE SetUID(String UID) LIBRARY "WGRODBC.dll" alias for "SetUID;Ansi" SUBROUTINE SetDataBaseHandle(Long ODBCDataBaseHandle) LIBRARY "WGRODBC.dll" SUBROUTINE BuildDocument(String TemplateFileName) LIBRARY "WGRODBC.dll" alias for "BuildDocument;Ansi" SUBROUTINE BuildInActiveDocument() LIBRARY "WGRODBC.dll" SUBROUTINE BuildTemplate(String TemplateFileName) LIBRARY "WGRODBC.dll" alias for "BuildTemplate;Ansi" SUBROUTINE BuildInActiveTemplate() LIBRARY "WGRODBC.dll" FUNCTION Long GetWordDocumentCount() LIBRARY "WGRODBC.dll" FUNCTION String GetWordActiveDocumentName(ref String Value) LIBRARY "WGRODBC.dll" alias for "GetWordActiveDocumentName;Ansi" FUNCTION Long GetWordVariablesCount() LIBRARY "WGRODBC.dll" SUBROUTINE GetWordVariable(String Name,ref String Value) LIBRARY "WGRODBC.dll" alias for "GetWordVariable;Ansi" SUBROUTINE Open(String FileName) LIBRARY "WGRODBC.dll" alias for "open;Ansi" SUBROUTINE SaveAs(String FileName) LIBRARY "WGRODBC.dll" alias for "SaveAs;Ansi" SUBROUTINE Close() LIBRARY "WGRODBC.dll" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 12:42 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
авторХотелось бы услышать авторитетное мнение, основанное на реальном опыте использования PowerBuilder+OLE. Powerbuilder+Excel через OLE - это достаточно гемморойная, глючная и тормознутая вещь. Отчетик на пару десятков страниц может формироваться до получаса при этом иногда после формирования отчета процесс Excel не закрывается корректно и остается висеть в памяти. Если пользователь активно формирует отчеты в Excel, таких процессов может накопиться достаточное количество чтобы наглухо завесить машину. авторКакой нам выбрать путь развития? Если отчетность уже есть в виде Datawindow, то самый простой вариант использовать export datawindow в excel с помощью библиотеки dw2xls авторКакие плюсы/минусы у каждого? Минусы первого варианта уже упоминались Минусы второго - это то, что библиотека платная, но стоимость ее смехотворна в сравнении с трудозатратами, которые вам предстоят в случае реализации первого варианта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 14:49 |
|
||
|
Вопрос по использованию OLE
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2005, 07:34 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33154391&tid=1338221]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 405ms |

| 0 / 0 |
