Тема: Ошибка при формировании отчета

Добрый день! Имеется отчет для формирования маршрутной карты. Отчет сделан давно, проблемы с его формированием никогда не возникало. На двух компьютерах сети переустановили операционную систему. После этого при формировании отчета появляется ошибка. См. вложение. При этом естественно обозначение инструкции по охране труда (которое должно выводится с помощью функции IOT)  в отчет не выводится. Не можем справится с этой проблемой. Подскажите, в чем может быть проблема?

Post's attachments

Doc1.doc 120.5 Кб, 13 скачиваний с 2013-09-24 

You don't have the permssions to download the attachments of this post.

Re: Ошибка при формировании отчета

Для начала необходимо увидеть, какой код в функции IOT. Возможно, в ней используется какая-то библиотека, которую при установке новой операционной системы забыли установить.

Остальные отчёты формируются нормально?

Какая операционная система стояла до этого и какая сейчас стоит?

И точную версию TechnologiCS, пожалуйста, укажите.

Re: Ошибка при формировании отчета

Здравствуйте! ну тут видимо без самого отчета не обойтись. Что-то такое используется там видимо.

(изменено: Ольга, 24 сентября 2013 12:07:25)

Re: Ошибка при формировании отчета

Во вложении см. бланк отчета и базу Access где можно посмотреть функцию IOT. Операционная система была сначала Win2000 , переустановили Win XP. Версия Technologics 6.2.0.0. Остальные отчеты формируются нормально.

Ольга пишет:

Во вложении см. бланк отчета и базу Access где можно посмотреть функцию IOT. Операционная система была сначала Win2000 , переустановили Win XP. Версия Technologics 6.2.0.0

на других компах в сети, где тоже стоит Win XP, этот отчет работает

Post's attachments

???????????????_?????????_??_??1.mdb 392 Кб, 5 скачиваний с 2013-09-24 

MK3.1118-82?1(??)__??.xls 59.5 Кб, 10 скачиваний с 2013-09-24 

You don't have the permssions to download the attachments of this post.

Re: Ошибка при формировании отчета

Здравствуйте!
Посмотрите параметры макросов в Access и Excel.
Пример настройки: TCAHelp 13.7.6.1 Установка и настройка дополнительного ПО

Re: Ошибка при формировании отчета

Виктор Бебякин пишет:

Здравствуйте!
Посмотрите параметры макросов в Access и Excel.
Пример настройки: TCAHelp 13.7.6.1 Установка и настройка дополнительного ПО


Параметры макросов все установлены.

Re: Ошибка при формировании отчета

По коду обнаружил что используется + вместо &, это приведет к ошибке если поле источника данных содержит число или NULL. В заголовке функции указан тип Recordset, это тоже приведет к ошибке если тип окажется неизвестным. Используйте Variant или Object. Из-за строки

On Error GoTo 111

в случае ошибки результат функции будет не определен.

Исправленный код:

Public Function IOT(IsD as Object, dopIsD as Object, Ms as Variant) 
Dim Marsh
Dim k, I
On Error GoTo 111
 If Not IsEmpty(dopIsD) Then
     k = dopIsD.Fields.Count
     Marsh = ""
     c = ""
    If Not k Then
         For I = 1 To k - 1
        If c <> dopIsD.Fields(I) Then
         If I > 1 Then Marsh = Marsh & "; "
         Marsh = Marsh & dopIsD.Fields(I)
         c = dopIsD.Fields(I)
        End If
         Next I
    End If

 IOT = Marsh
 Exit Function
 End If
111:
 IOT = ""
End Function

Если это не поможет, то попробуйте выполнить такой код:

Public Function IOT(IsD as Object, dopIsD as Object, Ms as Variant)
IOT = "OK"
End Function

Если в отчет не попадет строка "ОК", то надо искать причину по которой функция не выполняется.

Re: Ошибка при формировании отчета

Эта функция совершенно нормально работает на всех компьютерах в сети, кроме двух, про которые я говорила. Разве может быть тогда причина в коде функции??

Re: Ошибка при формировании отчета

Эта функция совершенно нормально работает на всех компьютерах в сети, кроме двух, про которые я говорила. Разве может быть тогда причина в коде функции??

Может быть причина в системных компонентах которая использует эта функция.

По сообщению причина не понятна, поэтому приходится по шагам разбираться что именно случилось.

(изменено: Ольга, 25 сентября 2013 09:26:43)

Re: Ошибка при формировании отчета

Заменила функцию на Ваш исправленный вариант. Все заработало. Большое спасибо. Получается, что действительно все дело в системных компонентах, которые использует эта функция?? Хочется понять точно причину.

Re: Ошибка при формировании отчета

А на какой именно код?

(изменено: Ольга, 25 сентября 2013 12:28:09)

Re: Ошибка при формировании отчета

на первый, который предложил Виктор Бебякин

Re: Ошибка при формировании отчета

Было

Public Function IOT(IsD, dopIsD As Recordset, Ms)
Dim Marsh
Dim k, I

On Error GoTo 111

 If Not IsEmpty(dopIsD) Then
     k = dopIsD.Fields.Count
     Marsh = ""
     c = ""
    If Not k Then
         For I = 1 To k - 1
        If c <> dopIsD.Fields(I) Then
         If I > 1 Then Marsh = Marsh + "; "
         Marsh = Marsh + dopIsD.Fields(I)
         c = dopIsD.Fields(I)
        End If
         Next I
    End If

 IOT = Marsh
 End If
111:
End Function

Шаг 1. Убираем тип Recordset (заменяем на Object). Наиболее вероятная ошибка. Код просто не может даже выполниться так как не может определить тип  ( что-то с библиотеками типов, так как в итоге работает же).
Если после этого уже заработает, то вот и ответ. Если не поможет, следующий шаг.

Шаг 2. Доработаем обработку ошибок  ( это уже полный вариант что привел Виктор ). Если  заработало только сейчас надо искать что дает ошибку (попробуйте ее вывести на экран - возможно там будет ответ).

Шаг 3. Я бы и еще понятней написал,  хитро написано, но возможно с точки зрения тонкостей  VB и совершенно правильно.

(изменено: Ольга, 25 сентября 2013 13:04:59)

Re: Ошибка при формировании отчета

все же опять хочу акцентировать Ваше внимание на том, что с исходным кодом на всех компьютерах в сети отчет формируется нормально, кроме двух, так почему же мы опять пытаемся найти ошибки в коде функции? может быть что-то не так с MDAC на этих компах?

Re: Ошибка при формировании отчета

что-то не так с MDAC на этих компах

Скорей всего, но начиная с Windows XP его переставить очень проблематично, так как он уже встроен в систему.

так почему же мы опять пытаемся найти ошибки в коде функции

Мы пытаемся  написать универсальный код, работающий на разных машинах (код один, а библиотеки с которыми он работает и его окружение может быть сильно разным). Если есть вещи которые стоит поправить, надо попробовать и исправить.

Re: Ошибка при формировании отчета

Понятно. Спасибо