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

  • Автор темы nik3528
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

nik3528

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

nik3528

#2
Код:
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
Вот код на котором срабатывает ошибка
 

nvyush

Lotus team
22.04.2009
2 317
0
#3
nik3528
Не мешало бы ещё указать, что за ошибка, в какой строке и при каких условиях возникает. "Портянки" кода желательно заворачивать в спойлер.
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
Если речь о диалоге — никак. Можно выводить контрольные значения переменных с помощью Print или MsgBox.
 
N

nik3528

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

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

Код:
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
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
nik3528
В огороде бузина, в Киеве — дядька... Судя по строке, где вылетает ошибка, csEventObj является ссылкой на объект совсем другого класса. Сообщения трассировки лучше выводите в строку состояния Print'ом, так нагляднее, видны все сообщения сразу. И, в конце концов, где текст сообщения об ошибке? Здесь не телепаты, важно знать не только где ошбика, но и какая именно.
 
N

nik3528

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

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

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

nvyush

Lotus team
22.04.2009
2 317
0
#9
Ошибка "Object variable not set" возникает при попытке выполнить метод или получить свойство не инициализированного объекта, например, для новых документов такой код в событии формы QueryOpen вызывает подобную ошибку:
Код:
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:
Код:
Set doc = Source.Document
If doc Is Nothing Then ...
 
N

nik3528

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