Ваши комментарии
Если в генераторе отчетов выбрать шаблон и нажать "Сформировать отчет", появляется указанное окно с ошибкой.
А эта ошибка всегда возникает, независимо от того, какой отчет выбран.
Версия 4.7.6.50 Pro.
В общем, мне так и не удалось найти нормальный способ генерации отчетов.
Мне нужно сделать, чтобы при возникновении определенного события (авария в системе),
делать 10-минутный срез всех основных параметров с секундной дискретностью.
Проблема в том, что модуль генерации отчетов не позволяет выгружать отчет в формате Excel (2007).
Возникает ошибка доступа (скриншот - во вложении).
Формат PDF мне не подходит, поскольку мне нужно потом эти данные обрабатывать и строить по ним графики.
Я пробовал идти другим путем: написал скрипт, который при возникновении определенных условий в системе, запускает посекундную запись в файл csv. Возникает проблема, связанная с тем, что возникают пропуски в данных: значения отдельных каналов не обновляются по 5 и более секунд. Получается, что Simp Light не успевает записывать 2 десятка параметров со скоростью 1 значение в секунду!
Я вижу, на данный момент, единственный вариант решить эту задачу:
в момент определенного события (авария в системе) извлекать данные из базы данных функцией StreamReadFromDatabase, затем извлекать отдельные значения при помощи функции
GetValueFromStream и дальше записывать эти значения с меткой времени в строку,
а из строк формировать уже файл csv.
Однако, мне кажется, данный путь трудоемким и нерациональным - хотелось бы найти более простое решение.
Что вы можете порекомендовать?!
Нет. Я прочитал в документации, как это сделать вручную.
А мне нужно понять по шагам, как это автоматизировать.
Я работаю под учетной записью с правами администратора.
Если вкратце: исходя из того что каждый скрипт в СИМП работает в отдельном потоке, то для создания экземпляра Excel, вызывается функция CoInitializeEx для инициализация работы с СОМ объектом в потоке.
Результат этой функции - успешность или не успешность, инициализации. Одна из ошибок которая может произойти - это то что - библиотека COM уже инициализирована в этом потоке. Могу предположить что после того как создали объект Excel, внесли изменения, и закрыли его, при следующем создании объект находится ещё на стадии завершения работы, т.е. деинициализация библиотеки для работы в потоке ещё не завершена, по этой причине повторная инициализация становится не возможной.
И что с этим делать? Я сделал так, чтобы скрипт вызывался однократно при нажатии на кнопку.
Результат тот же.
Какие возможные причины возникновения данной ошибки?
Опишите, пожалуйста, механизм работы ваших функций с точки зрения ОС.
Что происходит при вызове функции OpenTemplate и процедуры Close?
Можно ли управлять явным образом запуском и остановкой процесса Excel.exe?
Например, через CreateOleObject('Excel.Application').
Если да, то приведите, пожалуйста, пример рабочего кода.
Обычно после запуска Монитора висит процесс Excel. После закрытия Монитора продолжает висеть. Я его вручную убиваю.
Windows 7 SP 1
SimpLight v4.7.5.101
Смысл в том, чтобы заносить данные в журнал периодически (несколько десятков параметров).
После того, как проведу наладку, буду вызывать скрипт раз в час.
Сейчас нужно понять, в чем проблема. В другом проекте практически такой же код работает нормально.
Напишите, пожалуйста, подробнее: изменение каких настроек приводит к разрыву связи с базой данных?
Сервис поддержки клиентов работает на платформе UserEcho
Отправил. Жду ответ