Как правильнее изменять значения поля типа Authors?

  • Автор темы MAZ
  • Дата начала
M
#1
Пишу через variant, но закрадывается сомнение, что есть получше методы...
есть multivalue поле "tmpAuthors"

Dim item As NotesItem
Dim reads as Variant
Set item= doc.GetFirstItem("tmpAuthors")
auths= item.Values
reads = Replace(auths, exName.Canonical, newName.Canonical)
item.Values = auths


И, раз уж спросил, как лучше программно добавлять значения в такие поля (Call item.AppendToTextList(newName.Canonical) ???
 

NetWood

Lotus team
17.04.2008
372
18
#2
Хм. Меня гуру поправят, но простейший способ такой:
Код:
	'чтение только админу и юзеру
Dim ReadersValues( 1 To 2 ) As String
ReadersValues( 1 ) = "[Admin]"		
If Not username="Anonymous" Then
ReadersValues( 2 ) = username	
Else
ReadersValues( 2 ) = "Anonymous"	
End If	
''If Not doc.HasItem("AuthorizedReaders") Then		
Dim ReadersItem As New NotesItem(doc, "AuthorizedReaders", ReadersValues, READERS)
''	  Dim ReadersItem As New NotesItem(doc, "AuthorizedReaders", ReadersValues, AUTHORS) ' для автора вроде так
''End If
 

Omh

Lotus team
04.07.2007
2 210
1
#4
Я бы выпилил NotesItem:
Код:
Const ITEMNAME = "tmpAuthors"

Dim auths As Variant
auths = Doc.GetItemValues(ITEMNAME)
auths = Replace(auths, exName.Canonical, newName.Canonical, , , 5)
Call Doc.replaceItemValue(ITEMNAME, auths)
 
D

Darker

#5
Const ITEMNAME = "tmpAuthors"
Call Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical))
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
Darker прав. Нельзя использовать Replace. Вместо него нужен ArrayReplace.
И на всякий случай можно так:
Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical)).isAuthors = True