Побороть Listtag

  • Автор темы allex
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

allex

#1
Имеется код, который в текущем доке забирает значения из нужных полей

Нужно просуммировать каждый эллемент массива: A1( Listtag(x1)) + A1( Listtag(x2)) + A1( Listtag(x3)) и записать это в новый массим

Код:
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
uidoc.EditMode = True
Set doc = uidoc.Document
Stop

Dim A List As Double
Dim A1 List As Double
Dim A2 List As Double
Dim A3 List As Double
For i = 1 To 15
A("ju_" + Cstr(i) ) = 0				' имена полей результата суммирования
A1("ju_srjp_" + Cstr(i) ) = 0	' имена полей участвующих в суммировани
A2("ju_vjbo_" + Cstr(i) ) = 0	' имена полей участвующих в суммировани
A3("ju_vtbo_" + Cstr(i) ) = 0	' имена полей участвующих в суммировани
Next
Stop
'%REM	
Forall x1 In A1
If doc.HasItem(Listtag(X1)) Then 
A1( Listtag(x1) ) = doc.getitemvalue( Listtag(x1) )(0)
End If
End Forall
Stop		
Forall x2 In A2
If doc.HasItem(Listtag(X2)) Then 
A2( Listtag(x2) ) = doc.getitemvalue( Listtag(x2) )(0)
End If
End Forall
Stop
Forall x3 In A3
If doc.HasItem(Listtag(X3)) Then 
A3( Listtag(x3) ) = doc.getitemvalue( Listtag(x3) )(0)
End If
End Forall
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
А зачем тебе списки? В первом цикле For..Next можно сразу и сумму посчитать и записать.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Не совсем понятно, что суммировать нужно.
A1( Listtag(x1)) + A1( Listtag(x2)) + A1( Listtag(x3))
Т.к. элементов A1( Listtag(x2)) и A1( Listtag(x3)) не существует.
Если я правильно думаю, то что-то типа такого:
Код:
For i = 1 To 15
d = 0
If doc.HasItem("ju_srjp_" + Cstr(i)) Then d = d + doc.getitemvalue("ju_srjp_" + Cstr(i)(0)
If doc.HasItem("ju_vjbo_" + Cstr(i)) Then d = d + doc.getitemvalue("ju_vjbo_" + Cstr(i)(0)
If doc.HasItem("ju_vtbo_" + Cstr(i)) Then d = d + doc.getitemvalue("ju_vtbo_" + Cstr(i)(0)
...
Next
Также конструкция вида A1( Listtag(x1) ) равна просто x1.
 
Статус
Закрыто для дальнейших ответов.