Тема: Файловый состав

нужна помощь!
в отчет пытаюсь добавить макрос, чтобы с помощью его найти документ и добавить в его файловый состав этот же отчет. И при использовании TCSApp.Archive.Locate("NOTE", DocNote, 0) почему то не находит документ, хотя он 100% есть.

Re: Файловый состав

Ну, похоже, ответ следует искать в этой ветке

Спасибо сказали: Олег Зырянов, Kyle2

Re: Файловый состав

совершенно верно.  Если есть данные о документе ( да и о многих других объектах) не надо искать его в архиве, надо пользоваться простыми функциями (если они конечно есть) SingleDoc

Спасибо сказали: Kyle1

Re: Файловый состав

допустим документ нашел, а как в его файловый состав положить отчет который запустил?

Re: Файловый состав

Берем у объекта свойство FILES ( TCS Api Explorer в помощь) реализующее интерфейс IDocFiles

(изменено: Kyle, 27 марта 2013 17:24:38)

Re: Файловый состав

в итоге получилось
Sub Implement()
Dim TCS As CSDN.TCS
Dim App As CSDN.Tcs_Application
Dim RSt As Object

Set RSt = CreateObject("ADODB.Recordset")
   
    SQLtext = "SELECT DISTINCT RS.P19 FROM RptSheet AS RS"
    RSt.Open SQLtext, Application.CurrentProject.Connection, adOpenKeyset
    DocNote = RSt.Fields(0)
   
   
   
Filename = Left(DocNote, Len(DocNote) - 3)
fName = "c:\Program Files (x86)\CSoft\TechnologiCS\TEMP\" & Filename & ".xls"

ChDir "C:\Program Files (x86)\CSoft\TechnologiCS\TEMP"
ActiveWorkbook.SaveAs Filename:=fName
   
Set Doc = TCSApp.SingleDoc(0, DocNote)
If Not Doc Is Nothing Then

Set Files = Doc.Properties("FILES").AsIDispatch
Call Files.AddFile(fName, -1)

End If
Set Doc = Nothing
End Sub

но при запуске возникает ошибка User - defined type not defined на строчке Dim TCS As CSDN.TCS, хотя библиотеки подключены

скорее всего этот SQL запрос не будет тут работать, как сделать так чтобы получить значение DocNote из RptSheet

Re: Файловый состав

Для простоты можно просто убрать все типы и написать их As Object.

TCSApp не определена скорей всего (не знаю есть ли еще какой код)...Она у нас в скриптах определена (это мы сами делаем). В вашем случае возможно понадобится что-то типа

Dim TCS As Object 'CSDN.TCS
Dim TCSApp As Object 'CSDN.Tcs_Application

Public Sub Login()

'Создадим объект ТКС АПИ

If TCS Is Nothing Then Set TCS = CreateObject("CSDN.TCS")

'Создадим экземляр приложения (сеанс). 

'If TCSApp Is Nothing Then Set TCSApp = TCS.Login 'вызывает стандартное окно аутентификации пользователя

'Set TCSApp = TCS.LoginEx("Администратор", "0")  ' Если вы сами пишите диалог ввода пользователя и пароля или просто его знаете

Set TCSApp = TCS.LoginCurrent ' если вы хотите использовать сеанс уже запущенного ТКС

End Sub

скорее всего этот SQL запрос не будет тут работать,

Почему не будет работать запрос?

Re: Файловый состав

Почему не будет работать запрос?

На этом месте RSt.Open SQLtext, Application.CurrentProject.Connection, adOpenKeyset выдает ошибку Object doesn't support this property or method

Re: Файловый состав

Так это в Access есть CurrentProject.Connection, а в Excel его самому создавать надобно.

Re: Файловый состав

Set DatConct = CreateObject("ADODB.Connection")
DatConct.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.ActiveWorkbook.Path + "\" + Application.Range("RGN_Data").Cells(1, 1).Value

Set RSt = CreateObject("ADODB.Recordset")
  
SQLtext = "SELECT DISTINCT RS.P19 FROM RptSheet AS RS"

RSt.Open SQLtext, DatConct , adOpenKeyset

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

Спасибо сказали: Kyle1