9.1 и глюк OLE ?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

9.1 и глюк OLE ?

Сообщение Андрей »

Есть приложение собранное на 9.0 - все работает
Перекомпиллирую на 9.1.10789 - и.... виснет вывод в Excel - появляется пустое окно Excel и висит пока не снимешь принудительно.
Возвращаюсь на 9.0 - опять все Ок.
Прошу проверить у кого есть возможность
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Привет !

Да, действительно. Какая-то проблема есть.
Проверили - в приложении собранном на C9.1 экспорт в MS Excel через OLE не выполняется.
Не проходит инициализация и запуск объекта (EO_{'Application.Name'} = 'No ole automation interface')
Надо разбираться. Интересно, что практически точно такой обмен с MS Word прекрасно работает.

Проверял на коде:

EO_ = Create(0,Create:Ole)
EO_{Prop:Create} = 'Excel.Sheet'
If EO_{'Application.Name'} = 'No ole automation interface'
Message(' Неудачная попытка запуска Microsoft Excel !','Сообщение',Icon:Exclamation,'&1. Закрыть')
Display
end
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: 9.1 и глюк OLE ?

Сообщение kreator »

А попробуйте так:

Код: Выделить всё

    LOC:OLE = create(0, CREATE:ole)
    LOC:OLE{prop:Create} = 'EXCEL.Sheet.12'
, например. Может поддержка Sheet закончилась.
А ещё можно так попробовать:

Код: Выделить всё

    LOC:OLE = create(0, CREATE:ole)
    LOC:OLE{prop:Create} = 'EXCEL.Application'
Проверьте, если не сложно.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Проверил. С91 10789

Замена 'Excel.Sheet' на 'Excel.Application' полностью снимает эту проблему.

Спасибо ! :)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: 9.1 и глюк OLE ?

Сообщение kreator »

Игорь Столяров писал(а):Проверил. С91 10789

Замена 'Excel.Sheet' на 'Excel.Application' полностью снимает эту проблему.

Спасибо ! :)
Ну ни чудо ли? :mrgreen:
Ещё бы понять, в чём отличие, да? Мы как-то изначально пользуем конструкцию 'Excel.Application', не знаю почему, исторически сложилось.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

А вот интересно 'Excel.Application' запускает Excel из MS Office 365 ?
Помню, что с этим тоже были проблемы ...
Make Clarion Great Again ! 😎
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

хммм....

А у меня и так было l:ole{Prop:Create} = 'EXCEL.Application'

Сначала я решил, что дело в том, что OLE контроль у меня не программно создавался, а визуально. Переделал на программное - тот же результат - висит пустое окно.
Пробую L:OLE{prop:Create} = 'EXCEL.Sheet.14' (у меня Excel 2010)- не работает и в 9.0 - вообще окно не появляется.
Как то можно отлавливать результаты отработки OLE{prop:Create} ?
В визуальном компоненте включал совместимости какие то 32-bit и Mode в разных сочетаниях - не помогает. Кстати, что это за совместимости ?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Игорь Столяров писал(а):Как то можно отлавливать результаты отработки OLE{prop:Create} ?
Я же показал это в своем примере ниже:

EO_{Prop:Create} = ''EXCEL.Application'
Message(EO_{'Application.Name'})

При ошибке возвращает: EO_{'Application.Name'} = 'No ole automation interface'
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: 9.1 и глюк OLE ?

Сообщение kreator »

Сто пудов - ошибки создания нет. Надо смотреть что дальше происходит.
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

Да, действительно - ошибки создания нет.
Дальше идет собственно открытие
l:ole{'workbooks.open("' & l:FileName & '")'}

или l:ole{'Workbooks('& l:FileName & ').Activateopen'}
Не работает тут ? Как проверить ?
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

ааа.... вот нашел как включить диагностику
l:OLE{Prop:ReportException}=TRUE
в результате имеем "Метод Open из класса Workbooks завершен неверно"
проку впрочем мало от сего
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Замени открытие на l:ole{'Application.Workbooks.Open("' & Clip(Left(l:FileName)) & '")'}
Make Clarion Great Again ! 😎
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: 9.1 и глюк OLE ?

Сообщение Андрей »

l:ole{'Application.Workbooks.Open("' & Clip(Left(l:FileName)) & '")'} - не помогает

Вообще кто то пробовал - работает 9.1 с Excel ? Открываются файлы ?
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: 9.1 и глюк OLE ?

Сообщение kreator »

Железно работающий кусок:
LOC:OLE = create(0, CREATE:ole)
LOC:OLE{prop:Create} = 'EXCEL.Application'
LOC:OLE{'Workbooks.Open("' & clip(GLO:TempPath) & 'rap008.xml")'}
LOC:OLE{'ActiveWorkbook.SaveAs("' & clip(LOC:FileName) & '",51)'}
LOC:OLE{'Workbooks.Close'}
LOC:OLE{prop:Deactivate}
destroy(LOC:OLE)
Проверь, существует ли l:FileName.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: 9.1 и глюк OLE ?

Сообщение Игорь Столяров »

Андрей писал(а):Вообще кто то пробовал - работает 9.1 с Excel ? Открываются файлы ?
Я пробовал. После замены 'Excel.Sheet' на 'Excel.Application' все операции: создание, открытие, запись, чтение, печать, форматирование и т.д. - работают.
Я правда все операции делаю в коде, без, как ты их называешь "визуальных" компонент Clarion. Сборка на С91 10789.

Единственный пока открытый вопрос - будет ли это работать с Excel из MS Office 365 ...
Make Clarion Great Again ! 😎
Ответить