Импорт Из Excel По Времени

Тема в разделе "Lotus - Программирование", создана пользователем toli4sky, 18 ноя 2013.

  1. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Доброго времени суток!
    Пришел я к выводу, что нужно упростить работу и двумя вариантами это все автоматизировать. Варианты похожи, но пока не совсем работают, поэтому я опять здесь)))
    Суть вопроса в следующем, есть либо список компов, либо конкретный ресурс сетевой. И там и там файлы Excel с конкретным шаблоном. Соответственно требуется как то агентом, по времени это все выдергивать и импортировать.
    Агент по импорту я сделал и в том, и в том варианте, он прекрасно работает, но только из меню, а как я ставлю его в режим запуск по времени он дает сбой.
    Права безопасности агента стоят полные (в разделе безопасность свойства агента), я в базе менеджер, агент подписан мной. Ошибка в следующем месте.
    Когда выполнение кода доходит до строки "Call xlWorkBooks.Open(xlPath)" и смотря через консоль сервера, выдает ошибку, что неправильно указан путь ...там то... или файл используется другой программой...
    Путь пытался указывать просто на конкретный адрес, сначала своего компа, потом и на сам сервер такого вида:
    \\имя сервера\с$\папка\*.* и так пробовал с:\папка, ошибка одна и та же, файл лежа на сервере занят быть не может, некому просто его трогать.
    Вроде все объяснил, если кому это знакомо, очень прошу помощи
     
  2. duchan

    duchan Well-Known Member

    Репутация:
    0
    Регистрация:
    20 сен 2006
    Сообщения:
    107
    Симпатии:
    3
    Уже даже не смешно... обсуждалось 100500 раз...
    Сервер работает под SYSTEM, и без "танцев с бубном" не имеет доступа к сетевым ресурсам...
    ... и это проблема не Domino (!!!) - так работает винда!...

    как обойти ищите на форуме, было описано множество раз!... :)

    ... и еще, раз не работают и локальные, то смотрите права агента в агенте - свойства агента, 2-ая закладка, security level
     
  3. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Ну не надо ругаться, я в тут новичек, про 100500милион тысяч раз я понимаю, что может где то было обсуждено лет 20 назад, и мельком в какой то теме, может даже не касающейся excel, а просто по обращению к файлам, но что то все мои поиски приводят к нулю, может те самые руки из не оттудава растут при написании запроса в поиске.
    Если сталкивались дайте хоть намек, где искать, а то пришел спросить, а мне в ответ типа гугл и хелп в помощь, давай дуй отсюдава
     
  4. rinsk

    rinsk Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    12 ноя 2009
    Сообщения:
    893
    Симпатии:
    84
    Не нужно обижаться - коллега верно заметил, что этот вопрос следует адресовать в другой форум. И так же коллега дал полностью исчерпывающую информацию по разрешению Вашей проблемы. Читайте внимательно.
     
  5. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Репутация:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    3.171
    Симпатии:
    21
    Toli4sky
    Запускай сервер домино под учёткой Админа с максимальными правами и он будет иметь доступ к папке
    Это в свойствах службы - указать от чьего имени она будет работать
     
  6. afest

    afest Well-Known Member

    Репутация:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    я вообще в таких случаях запускал агента под именем сервера, а не юзверя (даже при доступе манагера)
     
  7. rinsk

    rinsk Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    12 ноя 2009
    Сообщения:
    893
    Симпатии:
    84
    Речь тут не о домино вообще то)
     
  8. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    ну вроде нашел такую штуку, указать там и перезапустить ее, ну даже если так, вроде интересная штука, а как путь до папки с файлами указать?
    так:
    \\сервер\папка\*.*
    или так:
    c:\папка\*.*
    ?
     
  9. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    Toli4sky
    \\сервер\папка\*.* или \\IP-сервера\папка\*.*
    Сервер не обязательно может быть тот же, где лотусня работает.
    Но мы выгружаем.

    Добавлено: А еще лучше сделать документ-настройку в базе, где будет лежать путь до папки.
    И тянуть путь оттуда, тогда можно будет легче его сменить.
     
  10. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    335
  11. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Разведал все штуки, сервер запущен от имени системы, т.е. права все есть, ескель тоже там стоит, если пишу своим вариантом
    \\сервер\c$\папка\*.* то пишет, что указан не верный путь или файл, или файл занят другой программой, а если просто пишу \\сервер\папка\*.* то пишет illegal function call
     
  12. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    А процессов excel на серванте не висит в адовом количестве теперь?
     
  13. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Смотрел, в на серваке процессов нет екселя, максимум смотрю через управление, там только строка, что к моей папке висит сеанс и открыт один файл от системы, я его отбрубаю, запускаю заново, и опять ничего, опять один сеанс появляется...
     
  14. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    хм... Через IP сервера вместо имени тоже ошибка?
    Может стоит на сервере, где работает агент сделать подключение сетевого диска через путь к той папке.
    И тогда обращаться через букву этого диска.
     
  15. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    savl
    По ИП та же ерунда, ошибка, а вот про подключение сетевого диска я как то где то слышал, что можно на него будет ссылаться, только вот не пойму в чем будет разница от обычного, для сервера, своего диска?
    если на локальный диск сервера я пишу путь \\Сервер\C$\папка\*.*
    а на сетевой как лезть?
     
  16. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    Toli4sky
    Так... Что-то я запутался откуда мы читаем...

    1. Если агент на серванте читает/пишет на свой же локальный диск серванта, то можно через букву {c:\ или d:\ и тд}
    2. Если агента на серванте читает/пишет сетевой диск другого серванта: расшариваем тот диск в сеть, обращение через сетевой путь или IP или подключаем сетевой диск и через букву.

    Судя по всему первый случай, да?
     
  17. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    savl
    Ну по идее первый вариант, т.к. наверно проще :rolleyes: (кстати в данном случае только читает, если только он не будет создавать временный файл, как при обычном открытии екселя)
    Но этот вариант почему то не срабатывает
     
  18. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    Под идее все равно создает... хотя может вызов поможет: .Open(FileName, , true) типа только на чтение
    Хм... посмотрел один из своих импортеров:
    Код:
    Call ExcelApp.Workbooks.Add(fileName(0))
    Set ExcelBook = ExcelApp.Workbooks(1)
    Вполне работает, попробуйте.
    И еще, создайте в своей папке файлик 1.txt и выполните в том же агенте строку: fileExists = (Dir$ (strPath) <> "" )
    strPath - полный путь к 1.txt
    будет ошибка -> косяк с доступом.

    И еще, в свойствах агента. Выставите сервер где ему работать.
     
  19. toli4sky

    toli4sky Active Member

    Репутация:
    0
    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Косяка с доступом нет, я сделал простущий агент, который просто возьмет из этой папки файл и создаст там же копию с другим именем...и этотзасранец создал....
    FileCopy "C:\Folder\asd.xls", "C:\folder\asdqw.xls"

    может в коде что то у меня косяк (хотя по запуску из меню все Ок работает)
    извините, если не так код пишу в сообщении

    'путь беру из дока с настройкой
    v = Evaluate({@DbLookup(NoCache; "":""; "ViewOpt"; "PathDir";"Values")})
    xlPathOrig$=v(0)
    Print "agent import 3" & xlPathOrig

    xlPathAll$=Dir(xlPathOrig$,0)
    Print "agent import 3.1" & xlPathOrig

    If IsEmpty(xlPathOrig) Then Exit Sub
    Do While xlPathAll$ <> ""

    'напишем полный путь до текущего файла
    xlPath=StrLeft(xlPathOrig,"*") & xlPathAll
    Print "agent import 4"

    'Создаем объект MS Excel и скрываем его
    Set xlApp= CreateObject("Excel.Application")
    xlApp.Visible = False
    Print "agent import 5"

    'Определяем книгу и лист
    Set xlWorkBooks = xlApp.Workbooks
    Print xlpath

    Call xlWorkBooks.Open(xlPath)
    Print "agent import 5.2"

    и в место этого последнего принта идет ошибка
     
  20. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    попробуйте так: вместо Set xlWorkBooks = xlApp.Workbooks
    Код:
    Call ExcelApp.Workbooks.Add(fileName(0))
    Set ExcelBook = ExcelApp.Workbooks(1)
    а значения принтов полагаю верные?
     
Загрузка...

Поделиться этой страницей