• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Object Variable Not Set

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

Liquid

Здравствуйте.
Мне нужно сделать счетчик документов, который будет записывать номер документа в поле. База в которой хранятся эти документы уже существует, я просто добавил на форму создания/редактирования документа поле 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 597
310
BIT
180
Код:
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 597
310
BIT
180
Код:
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

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
значит его нет :)
получи список всех вьюх из базы и посмотри)
Код кнопки
Код:
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
Если вьюха скрыта под роль, убедись что она у тебя есть, попробуй открыть данный вид.
Возможно одна буква русская и все.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!