Arcview и OpenOffice

0 голосов
спросил 12 Окт, 08 от Apocalypse (360 баллов) в категории Программные продукты Esri
Кто-нибудь знает как создать DDE-подключение к OpenOffice?

Например пытаюсь подключиться к Writer:

System.ExecuteSynchronous("C:/Program Files/OpenOffice.org 3/program/swriter.exe")

Writer = DDEClient.Make("soffice", "system")

if (Writer.HasError OR (Writer = nil)) then
MsgBox.Error(Writer.GetErrorMsg, "")
end

Writer.Execute("[Insert ""123""]")
Writer.Close


Об ошибке не пишет, значит к чему-то подключается, а вот команду не выполняет - текст в открывающемся документе не появляется. Похоже что "system" подключает к чему-то не тому, пробовал писать название документа ("Без имени 1") - выскакивает ошибка.
К Calc подключиться пока тоже не получается.

P.S. С MS Word работать научился. Однако и в 2003, и в 2007 версии MS Office DDE-соединение работает очень медленно, на большие документы тратятся минуты, в Office XP всё гораздо быстрее. Поэтому хотелось бы попробовать OpenOffice.

5 Ответы

0 голосов
ответил 24 Дек, 08 от geo_teacher (360 баллов)
читаем Роджерсон Д. "Основы СОМ",где ясно сказано,что дде по сути медленная и недоработанная технология
сом- развитие технологии OLE1
0 голосов
ответил 25 Дек, 08 от Vasiliy2 (8,240 баллов)
2 geo_teacher

ну не скажи.Через DDE Из Акцесса поиск и отображение объекта на карте и из арквью поиск на форме акцесса выбранных на карте объектов, происходит в реальном масштабе времени
0 голосов
ответил 26 Янв, 09 от TDenis (42,620 баллов)
Возможно Роджерсон Д. и прав, но разве есть еще какие-то варианты работы с Office/OpenOffice из Arcview кроме DDE?
Кстати говоря, связь с Office 2003 через COM тоже скоростью, мягко говоря, не блещет.
0 голосов
ответил 27 Янв, 09 от TDenis (42,620 баллов)
Кстати, а как происходит поиск из/в access в реальном масштабе времени? Передаётся одна команда (select from where)?
С Access не пробовал, но вот если заполнять достаточно большую таблицу в Word 03/07 (Insert "SomeText", NextCell, Insert "SomeText", NextCell...), то это кошмар. Немного выручает только возможность запихать несколько команд в одну "транзакцию" (передаваемую строку).
    
0 голосов
ответил 28 Янв, 09 от Vasiliy2 (8,240 баллов)
2 TDenis вопросы правда не по теме топика.
из арквью в акцесс:
ThesystemClient.Execute ("[Openform frmNameForm,,,"+strSQL+",,3]")
где strSQL SQL запрос длиной ~ 500 символов (увы не более). Последняя цифра влияет на модальность формы.
Для фильтрации десятка выбранных на карте объектов в базе с сотнями тысяч записей этого хватает для условно-реального времени.

Из акцесс в арквью сложнее: в арквью объявляем при запуске сервер
DDEServer.StartNamed("ArcMyName")

в акцесс формируем канал связи
chan = DDEInitiate("ArcMyName", "system")
потом загоняем в арквью команду на запуск скрипта:
DDEPoke chan, "string DoAccessCommand", strGISObj
где DoAccessCommand имя скрипта в акцесс а strGISObj текстовая строка с параметрами, которые хотим передать.
Ну а в арквью скрипт с именем DoAccessCommand эту текстовую строку должен разодрать и обработать.
Для реализации функции "Показать на карте" этого хватает
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...