Номер ячейки в массиве

P

PeNgViN213

Добрый день коллеги!

Подскажите пожалуйста, мне нужно найти номер ячейки массива поля (MoveName) где содержится слово "доработк", и прочитать из документа значение с этим номером из другого поля HistoryComment. Помогите реализовать. Я вот начал, дальше не понимаю как двигаться.
Код:
Sub Initialize
    Dim coll As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim ses As New NotesSession
    Dim i As integer

    
    Set db = ses.CurrentDatabase
    Set coll= db.Unprocesseddocuments
    Set doc = coll.Getfirstdocument()
    
    For i = 0 To UBound(doc.HistoryMoveName)
        MsgBox doc.HistoryMoveName(i)
    Next
    

End Sub
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ну? раскрывай тему или написать вместо тебя?
 
P

PeNgViN213

Код:
Sub Click(Source As Button)

    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim i,x As Integer
  
    Set db = ses.CurrentDatabase
    Set view = db.GetView("имя текущей View")
    Set doc = view.GetFirstDocument
    x=0
    Do Until doc Is Nothing
        For i=0 To Ubound(doc.MoveName)
            If Instr(doc.MoveName(i),"подписан") <> 0 Then
                If doc.HistoryComment(i) = "-" Then
                    x=x+1
                    Exit For
                End If
            End If
        Next
        Set doc = view.GetNextDocument(doc)
    Loop
    Print x
End Sub

Сделал вот так, может кому пригодиться
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
Отсортировать документы где на определенной стадии, был пустой комментарий
Если я правильно понимаю, "пустой комментарий" означает, что количество записей MoveName не совпадает с количеством HistoryComment. Правильно?
Если же вы уверены, что все комментарии не пустые, т.е. количество MoveName и HistoryComment совпадает, то надо сделать примерно такой цикл
Код:
For i = 0 To UBound(doc.MoveName)
       Dim mn As String
       mn = doc.MoveName(i)
       Dim code As Variant
       code = InStr(mn, "доработк")
       If Not IsNull(code) Then
            If code > 0 Then
                  MessageBox doc.HistoryComment(i)
            End If
       End If
Next
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
Сделал вот так, может кому пригодиться
Если doc.MoveName(i) = Null, то Instr вернёт Null, т.е. не равно нулю. В таком случае тут должна выскочить ошибка несоответствия типов.
<> проверять не обязательно, меньше нуля быть не может, достаточно проверить >0
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
45
Если я правильно понимаю, "пустой комментарий" означает, что количество записей MoveName не совпадает с количеством HistoryComment. Правильно?
Если же вы уверены, что все комментарии не пустые, т.е. количество MoveName и HistoryComment совпадает, то надо сделать примерно такой цикл
Код:
For i = 0 To UBound(doc.MoveName)
       Dim mn As String
       mn = doc.MoveName(i)
       Dim code As Variant
       code = InStr(mn, "доработк")
       If Not IsNull(code) Then
            If code > 0 Then
                  MessageBox doc.HistoryComment(i)
            End If
       End If
Next
ващще нинада никаких цыклов - инфа жэ из въюшки у него берётся, вот пусть она и считает сортировкой и сразу брать первый (последний) док
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
ващще нинада никаких цыклов - инфа жэ из въюшки у него берётся, вот пусть она и считает сортировкой и сразу брать первый (последний) док
из вьюшки и док не нужен, синхронные поля можно вывести отдельными строками и сформировать "правильный" ключ - просто получим энтрис по ключу
 
Мы в соцсетях:

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