Object Variable Not Set

  • Автор темы Liquid
  • Дата начала
L

Liquid

#1
Здравствуйте.
Мне нужно сделать счетчик документов, который будет записывать номер документа в поле. База в которой хранятся эти документы уже существует, я просто добавил на форму создания/редактирования документа поле RecordNo (Число, Вычисляемое). Я решил взять пример из книги, т.к. начал заниматься Lotus недавно

При попытке сохранения выдает ошибку Object variable not set, номер документа не добавляет, но сохраняет. Проверял дебаггером - останавливается на строке Set numDoc = numView.GetFirstDocument

Помогите разобраться, что не так.

Код:
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim s As NotesSession
Dim w As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim num As Integer
Dim numView As NotesView
Dim numDoc As NotesDocument

Set s = New NotesSession
Set db = s.CurrentDatabase
Set w = New NotesUIWorkspace
Set uidoc = w.CurrentDocument
Set doc = uidoc.Document

If doc.RecordNo(0) = "" Then
Set numView = db.GetView ( "(RecordNoView)" )
Set numDoc = numView.GetFirstDocument
If (numDoc Is Nothing) Then
num = 1
Else
num = numDoc.RecordNo( 0 ) + 1
End If
doc.RecordNo = num
End If

End Sub
 

savl

Lotus team
28.10.2011
2 136
105
#2
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
On Error GoTo handler
Const FuncName = {Querysave} ' 

' Твой код 

Goto endh

handler:
Msgbox FuncName & ": " & Err &", в стр " & Erl & " " & Error$
Resume endh
endh:

End Sub
Узнаешь в какой строке ошибка

Но возможно, что прямо тут Set numDoc = numView.GetFirstDocument
вьюха "(RecordNoView)" точно в текущей базе есть?

Set uidoc = w.CurrentDocument лучше заменить на Set uidoc = Source
 

savl

Lotus team
28.10.2011
2 136
105
#4
Код:
Set numView = db.GetView ("(RecordNoView)")
if numView is nothing then Error 5001, {View "(RecordNoView)" not found.}
Set numDoc = numView.GetFirstDocument
Если оно точно есть в текущей базе, то мог ошибиться в названии. Проверь.
Если вставишь себе этот кусок кода, то увидишь фразу:
View "(RecordNoView)" not found.
 
L

Liquid

#5
Да, ошибка в наименовании была, забыл заключить имя в скобки в списке представлений
Прошу прощения за свою невнимательность
 

savl

Lotus team
28.10.2011
2 136
105
#6
значит его нет :)
получи список всех вьюх из базы и посмотри)
Код кнопки
Код:
Sub Click(Source As Button)
dim ses as new notessession
dim db as notesdatabase
dim views as string

set db = ses.currentdatabase
views =""
forall x in db.views
views = views & x.name & chr(10) & chr(13)
end forall
msgbox views 
End Sub
Если вьюха скрыта под роль, убедись что она у тебя есть, попробуй открыть данный вид.
Возможно одна буква русская и все.