отображение респонсов

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 14 сен 2005.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Вот не пойму в чём ошибка может что не так делаю...
    ситуация такая...
    у документа есть 3 Response document...
    все они создаются программно...
    на событии Postsave во всех документах висят коды
    Код (Text):
    Sub Postsave(Source As Notesuidocument)
    Dim workspace As New NotesUIWorkspace
    Dim User5 As Variant
    Dim uidoc As NotesUIDocument

    Set uidoc = workspace.CurrentDocument
    User5= "DAP"
    Call uidoc.FieldSetText( "sap1" ,User5)

    End Sub
    это пример одного из кодов. Но они все идентичные только в них по закрытию заполняются разные поля разными значениями т.е. в первом к примеру
    sap1 - User5 во втором sap2 - user6 итд

    У меня есть кнопка в родительском документе которая должна выбирать определённый родительский документ с определённым значением в определённом поле
    Код (Text):
    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim flag As Boolean

    Set dc = ws.CurrentDocument.Document.Responses
    Set doc = dc.GetLastDocument

    flag = False
    Do While Not doc Is Nothing
    If doc.sap1(0) = "DAP" Then
    Call ws.EditDocument(True, doc)
    flag = True
    Exit    Do
    End If
    Set doc = dc.GetNextDocument(doc)
    Loop
    If Not Flag Then Msgbox "История на данный компьютер отсутствует"

    End Sub
    т.е. по идее по кнопке должен выбираться документ значение поля sap1 в котором должно быть равно DAP
    а у меня либо документ не находится, либо находится другой Response document для этого родительского в котором поля sap1 и в помине нету!!!
    Естественно сохранение Responsa всегда проходит успешно и по первому коду поле заполняется. А вот выборка не проходит....
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Gor
    Ошибки.
    Во-первых. Событие по закрытию - это QueryClose.
    Во-вторых. PostSave происходит после того, как документ сохранен. Следовательно, все твои изменения ("sap1 - User5 во втором sap2 - user6 итд") не сохраняются. Если ты, конечно, вручную не сохранишь. Т.е. делай в QuerySave.
    В-третьих. Нафига брать текущий документ uidoc, если текущий документ находится в переменной Source ?
    В-четвертых. Сначала ты используешь dc.GetLastDocument (т.е. берешь самый последний документ), а в цикле dc.GetNextDocument(doc) (т.е. берешь следующий документ). Но следующего документа не может быть, т.к. текущий документ - последний.
     
  3. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Да конечно по сохранению орисался... Дело в том что у меня документ сохраняется обязательно так построены условия... Но в QuerySave действительно будет лучше...
    Вот этого я не совсем понял....а можно немного поподробнее? :)
    так мне же надо изменить просто значение поля в текущем респонс документе? и оно по сохранению меняется видно из дебаггера...по этому коду...вроде бы...
    Ааааа....... тогда тут просто надо изменить на dc.GetFirstDocument?
     
  4. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Что то я ступиЛЛЛ!!!)) :D
    Действительно код поместил в QuerySave исправил на GetFirstDocument и всё заработало!! пасиб огромное!
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Gor+15:09:2005, 07:03 -->
    <span class="vbquote">(Gor @ 15:09:2005, 07:03 )</span><!--QuoteEBegin-->Вот этого я не совсем понял....а можно немного поподробнее? ohmy.gif
    [snapback]24839" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Твой код можно заменить на:
    Код (Text):
    Sub Postsave(Source As Notesuidocument)
    Dim User5 As Variant

    User5= "DAP"
    Call Source.FieldSetText( "sap1" ,User5)

    End Sub
     
Загрузка...

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