LotusScript - настройка элемента в цикле for - PullRequest
0 голосов
/ 06 мая 2010

У меня установлен массив

Dim managerList(1 To 50, 1 To 100) As String

что я пытаюсь сделать, это установить первый, второй и третий элементы в строке

managerList(index,1) = tempManagerName
managerList(index,2) = tempIdeaNumber
managerList(index,3) = 1    

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

С другой стороны, у меня есть следующий код, который позволит установить элемент,

For x=1 To 50
  If StrConv(tempManagerName,3) = managerList(x,1) Then
    found = x 
      For y=3 to 100
        If managerList(x,y) = "" Then                                                                       
          managerList(x,y) = tempIdeaNumber                                                                                             
            Exit for
    End If
      Next

     Exit For
  End If
Next

Он вращается через массив (сбоку), пытаясь найти пустой элемент. В идеале я хотел бы установить индекс элемента, в котором находится переменная y, в 3-й элемент строки, чтобы вести подсчет количества идей в строке.

Каков наилучший способ вести такой подсчет? Любая идея, почему я получаю переменную объекта не установить ошибку, когда я пытаюсь вручную установить элемент?

1 Ответ

1 голос
/ 12 мая 2010

object variable not set означает, что вы пытаетесь вызвать методы или получить доступ к свойствам неинициализированного объекта. Я не вижу ничего подобного в опубликованных вами фрагментах кода. Вы уверены, что ошибка возникает в этих строках?

Хороший способ точно определить ошибки - включить модуль и номер строки в сообщение об ошибке. Добавьте это вокруг своей подпрограммы, чтобы получить более подробное сообщение:

Sub Initialize
    On Error Goto errorthrower  
    //
    // your code goes here...
    //
    Exit sub
ErrorThrower:
    Error Err, Str$(Err) & " " & Error & Chr(13) + "Module: " & Cstr( Getthreadinfo(1) ) & ", Line: " & Cstr( Erl )
End sub

(я изначально нашел это в Ферди Кристантс блог)

Не совсем понятно, какую проблему вы пытаетесь решить, но похоже, что у вас есть 1.50 «менеджеров», которые могут иметь 1. 100 «идей»? Вместо менеджеров я бы сделал class:

Class manager
    Private managername As String
    Private ideas(1 To 100) As String

    Sub new(managername As String)
            Me.managername=managername
    End Sub

    // whatever methods you need....

End Class

Тогда я бы отслеживал их со списком этих объектов:

    Dim managerlist List As manager

    Dim key As String
    key = Strconv(tempmanagername,3)

    if not iselement(managerlist(key)) then 
        set managerlist(key) = new manager(key)
    end if

    Dim currentmanager As manager
    Set currentmanager = managerlist(key)

Это всего лишь пример для начала, вам придется адаптировать его для решения вашей актуальной проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...