Тема: Window7 Offis7

Добрый день.
ОС Window7 Offis 7. TechologiCS 5.7
Открываю файл Excel, где запускается макрос создания нового сеанса с TCS.
При этом макрос требует указать сервер лицензии. В чем проблема.

В макросе Excel сохраняю файл
    Set Files = Document.Properties("FILES").AsIDispatch
    If Not Files Is Nothing Then
        Application.ActiveWorkbook.Save
       Call Files.AddFileEx(Application.ActiveWorkbook.Path + "\" + Application.ActiveWorkbook.NAME, 1, -1)
    End If
    Set Files = Nothing
Выходит сообщение
"Конфликт инструкции Update с ограниченим CHECK "C_PRJFILES_PRJFILE_DATE",
конфликт произошел в базе данных TCS, Таблица dbo.PRJFILES Column "PRJFILE_DATE"

Как можно обойти данную ошибку.
Спасибо!

Re: Window7 Offis7

При этом макрос требует указать сервер лицензии. В чем проблема.

Странно конечно. Постоянно требует?

"Конфликт инструкции Update с ограниченим CHECK "C_PRJFILES_PRJFILE_DATE",
конфликт произошел в базе данных TCS, Таблица dbo.PRJFILES Column "PRJFILE_DATE"

Сообщение не совсем понятное, хотя судя по коду скорей всего проблема  в том что файл занят ( вы сохраняете файл в котором работаете).

Попробуйте просто файл сохранить (например вот такой макрос работает вроде)

Sub FormMacro_TEST123( TCSActiveModule )                                        'TEST 123
Set Files = TCSActiveModule.Properties("FILES").AsIDispatch
    If Not Files Is Nothing Then       
       Call Files.AddFileEx("C:\Reg1.reg", 1, -1)
    End If
End Sub

то есть просто файл с диска добавить (можно код и в Excel cделать). Если с этим проблем нет, попробуйте закрыть книгу и потом сохранить файл.

(изменено: Олег, 8 декабря 2010 19:40:52)

Re: Window7 Offis7

На счет "странно". Сам ТеchnologiCS уже запущен и при его запуске система не требует сервер лицензию.
По второму ответу, на ОС XP и Offise2003 такой ошибки нет. И макрос запускается из Excel.

Re: Window7 Offis7

На счет "странно". Сам ТеchnologiCS уже запущен и при его запуске система не требует сервер лицензию.

И все таки вопрос - постоянно требует при каждом запуске?  Может банально файрвол блокировать приложение с АПИ.

По второму ответу, на ОС XP и Offise2003 такой ошибки нет. И макрос запускается из Excel.

Значит проблема не в TechnologiCS. Проверьте что я говорил выше, в офисе ведь тоже много изменений может быть, в том числе и блокировки могут поменяться. Сообщение конечно любопытное, но причина не в нем скорей всего, это следствие похоже.

Re: Window7 Offis7

Доброго дня.
Очень интересно, что остальные команды выполняются без проблем: Создание сообщений; изменение статусов; изменение параметров ...
И я не говорил, что проблема в TechnologiCS. Я просто хотел узнать, вы встречались ли с данной проблемой.

Re: Window7 Offis7

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

Re: Window7 Offis7

Может банально файрвол блокировать приложение с АПИ.

Права админа. файрвол отключен.
Вы могли бы провести тест на пк, где установлены Window и Offis7.  В Excel создать конект к базе и добавить файл к документу.

Вот запрос при выполнении AddFileEx
exec sp_executesql N'UPDATE PRJFILES SET
  PRJFILE_DATE = @P1,
  PRJFILE_SIZE = @P2,
  SESSION_ID = @P3
where   PRJFILE_ID = @P4 and   PRJVER_ID = @P5',N'@P1 datetime,@P2 int,@P3 int,@P4 int,@P5 int',NULL,0,97368,65540,67642

т.e. не может найти файл

Re: Window7 Offis7

И все таки такой простой тест у вас не проходит что ли (просто добавить некий файл с диска)?

Call Files.AddFileEx("C:\Reg1.reg", 1, -1)

Re: Window7 Offis7

Олег Зырянов пишет:

И все таки такой простой тест у вас не проходит что ли (просто добавить некий файл с диска)?

Call Files.AddFileEx("C:\Reg1.reg", 1, -1)

А я о чем все?
Непроходит     Call Files.AddFileEx(Application.ActiveWorkbook.Path + "\" + Application.ActiveWorkbook.NAME, 1, -1)
И бесконца требует указать место нахождения сервера лицензии.

(изменено: Олег, 9 декабря 2010 11:58:02)

Re: Window7 Offis7

Добавил в триггере
If @new_PRJFILE_DATE is Null Set @new_PRJFILE_DATE = SYSUTCDATETIME ( )
if @new_PRJFILE_SIZE = 0 Set @new_PRJFILE_SIZE = @old_prjfile_size

Изменение прошли
Вышла ошибка "не найден файл C:\unloaded_docs\V67642\ИНСТР-18.03644-2010.xls"
Но файл имеется

Re: Window7 Offis7

Большая просьба. Ни в коем случае не вносить изменения в код программы.  Помимо того что вы нарушаете лицензионное соглашение и можете лишиться техподдержки, вы еще и все свои данные можете потерять достаточно легко.


Причину я вам сказал выше, файл не находится потому что на нем стоит блокировка.

Re: Window7 Offis7

Причем тут лицензионное соглашение?
В код программы я внести изменение не могу и при желании.
Вы были правы на счет блокировки файла.
Код макроса стал выглядить следующим образом
    If getOSVer > 5 Then
       Filename = Application.ActiveWorkbook.Path + "\" + "Копия_" + Application.ActiveWorkbook.NAME
       Application.ActiveWorkbook.SaveAs (Filename)
       Set FSO = CreateObject("Scripting.FileSystemObject")
       Filename1 = Replace(Filename, "Копия_", "")
       On Error Resume Next
       FSO.CopyFile Filename, Filename1, 1
    Else
       Application.ActiveWorkbook.Save
       Filename1 = Application.ActiveWorkbook.Path + "\" + Application.ActiveWorkbook.NAME
    End If
    Set Files = Document.Properties("FILES").AsIDispatch
    If Not Files Is Nothing Then
        Application.ActiveWorkbook.Save
       Call Files.AddFileEx(Filename1, 1, -1)
    End If
    Set Files = Nothing
    If getOSVer > 5 Then
       On Error Resume Next
       FSO.DeleteFile Filename, 1
       Set FSO = Nothing
    End If
А как на счет бесконечного требования сервера лицензий. Саму программу «TechnologiCS» могу запустить много раз, и при этом не требуется ввод место нахождения сервера.

А вот этот макрос требует
Sub Workbook_Open()
On Error Resume Next
Set TCS = Nothing
On Error Resume Next
Set TCS = CreateObject("CSDN.TCS")
On Error Resume Next
Set TCSApp = TCS.LoginCurrent
    If Err.Number <> 0 Then
       If (Err.Number = -2147418113) Or (Mid(Err.Description, "cоединение")) Then
          On Error Resume Next
          Set TCSApp = TCS.Login
          If TCSApp Is Nothing Then
              MsgBox ("Ошибка при соединении с TCS!")
              FlagConnect = False
              Exit Sub
          End If
       End If
     End If
On Error Resume Next
If FlagConnect Then Application.Caption = TCSApp.LoginUserName
If Application.Cells(1, 7).Value = "" Then Exit Sub
Set TCSActiveModule = TCSApp.SingleDoc(1, Application.Cells(1, 7).Value)
TCSActiveModule.UserModuleName = TCSActiveModule.UniqueUserModuleName
If TCSActiveModule Is Nothing Then
    MsgBox ("Ошибка при поиске документа в TCS!")
    TCSApp.DeleteModuleByUserModuleName TCSActiveModule.UserModuleName
    FlagConnect = False
    Exit Sub
End If
End sub

Re: Window7 Offis7

Добавлю по вопросу обсуждаемому здесь - действительно в Windows Vista SP2 и Windows 7 произошли некоторые изменения, что могло повлечь за собой такое изменение работы ( так что это не обязательно связано с офисом).
СП на 5.7 будет.