Object Variable Not Set

Тема в разделе "Lotus - Программирование", создана пользователем Liquid, 16 окт 2012.

  1. Liquid

    Liquid Гость

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

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

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

    Код:
    Код (LotusScript):
    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
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Код (LotusScript):
    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
     
  3. Liquid

    Liquid Гость

    Выдает следующую ошибку в строке
    Код (LotusScript):
    Set numDoc = numView.GetFirstDocument
    Посмотреть вложение Ошибка.bmp
    Да, представление RecordNoView существует, я его создавал.
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Код (LotusScript):
    Set numView = db.GetView ("(RecordNoView)")
    if numView is nothing then Error 5001, {View "(RecordNoView)" not found.}
    Set numDoc = numView.GetFirstDocument
    Если оно точно есть в текущей базе, то мог ошибиться в названии. Проверь.
    Если вставишь себе этот кусок кода, то увидишь фразу:
     
  5. Liquid

    Liquid Гость

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

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    значит его нет :)
    получи список всех вьюх из базы и посмотри)
    Код кнопки
    Код (LotusScript):
    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
    Если вьюха скрыта под роль, убедись что она у тебя есть, попробуй открыть данный вид.
    Возможно одна буква русская и все.
     
  7. Liquid

    Liquid Гость

    :>
     
Загрузка...
Похожие Темы - Object Variable Not
  1. Cleric-Lviv
    Ответов:
    19
    Просмотров:
    5.312
  2. iosif88
    Ответов:
    11
    Просмотров:
    5.153
  3. motogarri
    Ответов:
    6
    Просмотров:
    327
  4. vsokol
    Ответов:
    0
    Просмотров:
    1.090
  5. imendan
    Ответов:
    7
    Просмотров:
    1.546

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