|
|
|
DataWindow OLE контрол
|
|||
|---|---|---|---|
|
#18+
Добрый день! У меня есть несколько External DataWindow, которые используются для отображения и печати данных из БД. Возникла необходимость отображать документы MS Word, хранимые в БД. Делать это через OLE DataBase BLOB не слишком удобно по причине совместимости с написанные старым кодом. Меня бы больше устроил OLE Object контрол. Проблема с тем, как получить доступ к такому контролу. Мне нужно по крайней мере вставить в такой контрол содержимое документа Word через blob-переменную. Пробовал использовать синтаксис типа dw_1.Object.[ole_control_name].[Property_Name] = Value dw_1.Object.[ole_control_name].Object.[Property_Name] = Value Не работает. Пробовал активировать OLE контрол, а потом подцепляться к нему через создание локального OLE контрола и ConnectToObject( ... ). Не работает. Кто нибудь знает, как можно получить доступ OLE контролу в DataWindow? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2005, 16:54 |
|
||
|
DataWindow OLE контрол
|
|||
|---|---|---|---|
|
#18+
Хранить документы Word в базе - не есть гуд. Чтобы вносить изменения, корректировки в такие документы - нужно вмешательство программиста или написать хороший интерфейс в программе. Лучший вариант - хранить документы на диске в какой-то директории (путь к ней будет храниться в базе). Если нужна вставка данных из базы в такой документ, то это делается слиянием. При таком подходе, документ может редактировать даже безмозглая секретарша. IMHO пересмотри свои взгляды на хранение Word документов в базе. Если воспользоваться поиском, то на этом сайте можно многое найти на сей счет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2005, 09:58 |
|
||
|
DataWindow OLE контрол
|
|||
|---|---|---|---|
|
#18+
Хранить документы Word в базе - не есть гуд. Чтобы вносить изменения, корректировки в такие документы - нужно вмешательство программиста или написать хороший интерфейс в программе. Чушь. Пользователи спокойно юзают web-mail типа Яндекса и Mail.ru. И вполне способны осознать что такое download/upload. Так что никаких OLE не требуется на самом деле. Достаточно SELECTBLOB/UPDATEBLOB. Вытащил - изменил - залил обратно. А уж сделать "хороший интерфейс" для извлечения и сохранения файлов труда не составит. И централизованно в базе хранить документы и привязывать их к даннным это гораздо лучше того бардака который пользователи устраивают в "какой-то директории на диске". Плюс нет необходимости отдельно разбираться с правами доступа и маппингом дисков. Типа Вася пишет в базу "S:\XXX\XXX\XXX.doc" , а у Пети мало того что диска S: нет так еще и права доступа на XXX не настроены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2005, 14:09 |
|
||
|
DataWindow OLE контрол
|
|||
|---|---|---|---|
|
#18+
Работать с OLE желательно в отдельном окне с OLE контролом. Т.е. сделать спец. окно которое будет открываться при активации документа.Так же в это окно положить кнопку на закрытие. Закрываем окно - закрываем активированный документ. это для того что бы после глюков которые иногда проскакивают при работе с ОЛЕ, можно было закрыть все-таки закрыть документ. Читаем из базы SELECTBLOB. Открываем окно с передачей параметров(в том числе и Блоба документа). В пост опене запоняем ОЛЕ ole_blob.objectdata = lblb_blob затем активируем его...(или не активируем) а дальше как у кого фантазия будет работать... можно редактировать, ловить события, записывать в базу (UPDATEBLOB) по закрытию... конкретно, для Word идет обращение к его VBA. ole_blob.Object.Application.Visible=True по поводу переменных см. хелп по VBA For MS Word. будет что-то типа этого ole_blob.Object.ActiveDocument.Variables.Add('Value1', '1') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2005, 14:29 |
|
||
|
DataWindow OLE контрол
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Частично проблему мне удалось решить. Подцепиться к OLE контролу в DataWindow возможно следующим способом: Код: plaintext 1. 2. 3. 4. Ну дальше возможно использовать обычные функции и макросы Word используя объект lole_Word. ole_1 был создан именно как OLE контрол в DataWindow, тип объекта "Документ Microsoft Word". Кстати, если я указываю тип активации не Offsite! а InPlace!, то все равно появляется окно Word , однако после этого окно моего приложения не закрывается и убить его можно только через диспетчер задач. Почему так? Конечно, мне было бы удобнее при отображении документов использовать не DataWindow, а отдельные OLE контрол в окне. Однако, по причине совместимости с существующим кодом, это сделать довольно сложно. Технология такова, что сам шаблон DataWindow хранится в БД, на его основе приложением создается External DataWindow, которое заполняется данными из БД. Сейчас данные могут быть текстовыми, числовыми, дата/время. Хотелось бы использовать так же BLOB и работать с документами MS Office. Может быть кто нибудь предложить другой способ отображать документы Word в DataWindow? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2005, 15:40 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32996325&tid=1338438]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 442ms |

| 0 / 0 |
