Проблемы с присоединением файлов

Тема в разделе "Lotus - Программирование", создана пользователем George1979, 29 авг 2011.

  1. George1979

    George1979 Гость

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

    Я это сделал с помощью @Command [EditInsertFileAttachment].
    В списке документов столбцу прописываю Simple Function
    [Attachment Names].
    Все работает правильно. Но когда присоединяется дважды один и
    тот же файл, на форме все отображается нормально, а в списке документов
    пишется какая-то билиберда: ATTT8VBQ, ATT7DQGJ.

    Посмотрел Help по EditInsertFileAttachment не нашел ничего нужного.
    Решил программно перебрать все уже присоединенные файлы. И если
    встречается повтор, то отменить присоединение.

    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document

    If doc.HasEmbedded Then
    Forall o In doc.EmbeddedObjects
    Messagebox( o.Name )
    End Forall
    Else
    Messagebox "No embedded objects found"
    End If

    Но на строчке 'Forall o In doc.EmbeddedObjects' вылетает ошибка
    "Type mismatch".

    Еще попробовал считать имена файлов через поле $FILE.
    Forall item In doc.Items
    If item.Name = "$FILE" Then
    Forall v In item.Values
    If Cstr(v) = FileName2 Then
    Messagebox "Файл с именем "+v+" уже присоединен к документу"
    End If
    End Forall
    End if
    End forall
    Если документ сохранен, то работает правильно.
    Но если не сохранен, то всегда возвращает имя первого присоединенного
    файла. Т.е. если имя 1-го присоединенного файла, допустим, eulo.doc,
    2-го otgul.doc и т.д. то возвращает каждый раз eulo.doc.
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    У EmbeddedObjecta есть 2 проперти: Name и Source - почитай в хелпе.

    Тебе надо перебирать EmbeddedObjects у NotesRichTextItem'a а не у документа.

    Как решение твоей проблемы, могу посоветовать на QuerySave вызвать Source.Refresh(True), потом перебрать EmbeddedObjects у айтема и если есть пара с одним и тем же Source (или Name, точно не помню), то взвести Continue = False с матом в адрес юзера.
     
  3. George1979

    George1979 Гость

    А у какого NotesRichTextItem'a. Когда файл присоединяется к документу создается поле $FILE.
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Где в это время курсор находится?
     
  5. George1979

    George1979 Гость

    Нашел я поле RichTextItem. Но это годится только для сохраненных документов.
    Я в отладчике смотрел - если документ новый (еще не был сохранен), то
    св-во Embedded Objects пустое.
    А если сохранен, то совсем другое дело, все видно в отладчике и все
    нормально работает.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для этого я говорил это:
     
  7. George1979

    George1979 Гость

    Спасибо большое все заработало.
    Единственное, что когда в QuerySave ставлю Continue=false, тогда
    выдается Lotus'ое сообщение - NotesUIDocument: Save cancelled.
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    посмотрите, где у вас вызывается NotesUIDocument.Save, это можно решить через обработчик ошибок on error (номер ошибки сейчас 4412, емнип)
     
Загрузка...
Похожие Темы - Проблемы присоединением файлов
  1. aliaksandr89
    Ответов:
    3
    Просмотров:
    152
  2. Amfion
    Ответов:
    5
    Просмотров:
    147
  3. wowa
    Ответов:
    7
    Просмотров:
    403
  4. John_Tavarez
    Ответов:
    0
    Просмотров:
    343
  5. Валентин Амбер
    Ответов:
    11
    Просмотров:
    372

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