Помогите разобраться с Repeatform

Тема в разделе "Lotus - Программирование", создана пользователем nik3528, 4 июн 2010.

Статус темы:
Закрыта.
  1. nik3528

    nik3528 Гость

    Всем доброго времени суток.
    Уважаемые мастера подскажите следующий момент
    Нашел пример использования RepeatForm как в почтовой базе только у меня возникла с ним проблема
    При создании документа Repeat Test и назначении повторов до его сохранения все хорошо,
    но если сперва создать документ сохранить а потом войти в него и попробовать назначить повторы он выдает ошибки
    Пример базы которую нашол
     
  2. nik3528

    nik3528 Гость

    Код (Text):
    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    ' since subform is used by by both To Do's and CalendarEntries we need to calculate EventType
    On Error Goto processError
    Dim bEventType As Integer
    Dim bInitFlags As Long
    bInitFlags = 128

    If source.Document.hasItem("TaskType") Then
    bEventType = 2
    Else
    bEventType=1
    End If

    '** the form name of the underlying document MUST be "Appointment"
    '** when we call Init on the NotesCSEventOwnerDocument object (we can
    '** change it back after the Init call is done)
    oldform = source.Document.Form
    source.Document.Form = "Appointment"
    Set csEventObj= New CSCalendarEntry( bEventType, source.document, source )
    Call csEventObj.m_BEobject.Init(source.document, bInitFlags)
    source.Document.Form = oldform
    Exit Sub

    processError:
    Dim errMsg As String
    If (Err = 4670) Then
    errMsg = "Error 4670: make sure there's a form called 'CalendarProfile' in this database."
    Else
    errMsg = "Error " & Err & " on line " & Erl & ": " & Error$
    End If

    Print errMsg
    Msgbox errMsg
    Resume Next

    End Sub
    Вот код на котором срабатывает ошибка
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    nik3528
    Не мешало бы ещё указать, что за ошибка, в какой строке и при каких условиях возникает. "Портянки" кода желательно заворачивать в спойлер.
     
  4. nik3528

    nik3528 Гость

    Учту :maybe:
    Как можно выполнить трассировку кода в SubForm :unsure:
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если речь о диалоге — никак. Можно выводить контрольные значения переменных с помощью Print или MsgBox.
     
  6. nik3528

    nik3528 Гость

    Если вставить msgbox после каждой строчки кода то ошибка выскакивает на

    Код (Text):
    Call csEventObj.m_BEobject.Init(source.document, bInitFlags)
    вот сам класс

    Код (Text):
    Class CSCalendarEntry
    Public m_ws As NotesUIWorkspace
    Public m_uidoc As NotesUIDocument
    Public m_note As notesdocument
    Public m_nEventType As Integer
    Public m_beobject As Variant

    Sub New(nEventType As Integer, note As notesdocument, source As notesuidocument)
    Set m_ws = New NotesUIWorkspace
    Set m_uidoc = source
    Set m_note = note
    m_nEventType = nEventType
    Msgbox"3/5"
    Set m_beobject = New NotesCSEventOwnerDocument(nEventType)
    Msgbox"3/6"
    End Sub

    Sub Delete()
    If Not (m_beobject Is Nothing) Then Delete m_beobject
    End Sub

    End Class
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    nik3528
    В огороде бузина, в Киеве — дядька... Судя по строке, где вылетает ошибка, csEventObj является ссылкой на объект совсем другого класса. Сообщения трассировки лучше выводите в строку состояния Print'ом, так нагляднее, видны все сообщения сразу. И, в конце концов, где текст сообщения об ошибке? Здесь не телепаты, важно знать не только где ошбика, но и какая именно.
     
  8. nik3528

    nik3528 Гость

    Ошибки следующие

    Error item not found
    далее
    Object variable not set
    и так несколько раз

    я не могу понять какая переменная не установлена :)
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ошибка "Object variable not set" возникает при попытке выполнить метод или получить свойство не инициализированного объекта, например, для новых документов такой код в событии формы QueryOpen вызывает подобную ошибку:
    Код (LotusScript):
    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    Msgbox Source.Document.GetItemValue("Form")(0)
    End Sub
    потому что Source.Document — Nothing.
    Попробуйте в подозрительных местах прежде чем обращаться к объектам проверять их на Nothing:
    Код (LotusScript):
    Set doc = Source.Document
    If doc Is Nothing Then ...
     
  10. nik3528

    nik3528 Гость

    В том то и дело что ошибка возникает не на новых документах а на старых, то есть если создать документ и сразу добавить список повторов то все хорошо и в дальнейшем документ работает нормально, но если в созданный документ пытаешься добавить повторы после его сохранения то появляется эта ошибка.
    А за
    Код (Text):
    If doc Is Nothing Then
    спасибо попробую
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Советую во всех процедурах/функциях иметь обработчики ошибок. Кое-чего можно почерпнуть тут:
    Обработка ошибок
     
Загрузка...
Статус темы:
Закрыта.

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