Как прикрепить документ

Тема в разделе "Lotus - Программирование", создана пользователем SkyRanger, 20 авг 2007.

  1. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Делаю систему регистрации изменений в БД, т.е. каждое действие юзверя записывается в лог-форму с calculated полями. Вроде все работает, но хочу так же перед сохранением прикреплять документ к лог-форме, и таким образом всегда можно определить каким документ был ДО сохранения :)

    Как прикрепить открытый в данный момент документ к другому???
     
  2. fvoice

    fvoice Гость

    MakeResponse ?
     
  3. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: SkyRanger
    notesDocument.RenderToRTItem ?
    Также посмотри пункт Versions в настройке формы. И метод notesUIDocument.SaveNewVersion.
     
  4. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Вот код который я вызываю при нажатии на кнопку "Удалить", чтобы зарегить удаление текущего документа

    Код (Text):
        Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim uidoc1 As NotesUIDocument
    Dim doc As NotesDocument
    Dim doc1 As NotesDocument
    Dim session As New NotesSession
    Dim user As String
    Dim rtitem As NotesRichTextItem

    Set uidoc1 = workspace.CurrentDocument 
    Set doc1 = uidoc1.document

    Set uidoc = workspace.ComposeDocument( "", "", "(LogCard)" )

    Call uidoc.FieldSetText("dt", Format(Now(), "General Date"))

    user = session.UserName

    Call uidoc.FieldSetText("user", user)

    Call uidoc.FieldSetText("action", ActionName)

    Call uidoc.GotoField("action")

    Set doc1 = uidoc.Document

    Set rtitem = New NotesRichTextItem( doc, "lastver" )
    success = doc.RenderToRTItem( rtitem )

    Call uidoc.Save
    Call uidoc.Close(True)
    Почему то я получаю в результате пустой документ, не заполенный никакими данными...

    Если закоментировать success = doc.RenderToRTItem( rtitem ) то все работает, но мне нужно поместить снимок удаляемой формы в лог-форму, респозны и версии не подойдут...



    Так же есть проблема с удалением текущего документа:

    Код (Text):
        Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = workspace.CurrentDocument
    Dim doc As NotesDocument
    Set doc = uidoc.Document
    Dim session As New NotesSession


    answer% = Messagebox("Удалить ребенка из Базы данных?", 4, "Продолжить?")
    If (Not ( uidoc.EditMode )) And (answer%=6) Then
    fio = uidoc.FieldGetText("fam")+" "+uidoc.FieldGetText("nam")+" "+uidoc.FieldGetText("otc")
    Set doc = uidoc.document
    Call RegisterAction("Удалено из БД: ребенок - "+fio)     
    Call doc.Remove( False )
    На строке Call doc.Remove( False )
    мне грит что я не могу юзать Remove в такой ситуации...

    Как удалить этот документ...
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: SkyRanger
    <!--QuoteBegin-SkyRanger+22:08:2007, 09:01 -->
    <span class="vbquote">(SkyRanger @ 22:08:2007, 09:01 )</span><!--QuoteEBegin-->Set rtitem = New NotesRichTextItem( doc, "lastver" )
    success = doc.RenderToRTItem( rtitem )
    [snapback]75984" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    По первому коду не понятно что такое doc и зачем ты пытаешься скопировать его в самого себя. Также где ты его сохраняешь?
    Подозреваю, что нужно делать так:
    Код (Text):
    Set rtitem = New NotesRichTextItem(doc, "lastver")
    success = doc1.RenderToRTItem(rtitem)
    Перед сохранением doc вызови метод rtitem.Update
    По поводу удаления. Делай агентом. В нем же и сохраняй копию удаленного документа перед удалением.
     
  6. Гость

    <!--QuoteBegin-Medevic+22:08:2007, 09:25 -->
    <span class="vbquote">(Medevic @ 22:08:2007, 09:25 )</span><!--QuoteEBegin-->Подозреваю, что нужно делать так:
    [snapback]75987" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    очень верное подозрение, rtitem.Update вызывать не обязатьно. Вот кусочек кода который содержимое документов помещает в другой документ:
    Код (Text):
            Set db = session.CurrentDatabase
    Set dc = db.AllDocuments
    Set doc = dc.GetFirstDocument
    Set docA = db.CreateDocument
    Set rtf = New NotesRichTextItem (docA, "Body")
    docA.Form = "NewForm"
    While Not (doc Is Nothing)
    Call doc.RenderToRTItem (rtf)
    Set doc = dc.GetNextDocument (doc)
    Wend
    Call docA.Save (True, True)
     
Загрузка...

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