ОБСУЖДЕНИЕ

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

7 ответов 5,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Пишу через 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) ???
 
Хм. Меня гуру поправят, но простейший способ такой:
Код:
	'чтение только админу и юзеру
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
 
Я бы выпилил 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)
 
Const ITEMNAME = "tmpAuthors"
Call Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical))
 
Darker прав. Нельзя использовать Replace. Вместо него нужен ArrayReplace.
И на всякий случай можно так:
Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical)).isAuthors = True
 

Статистика тем

Создано
MAZ,
Последний ответ от
VladSh,
Ответы
7
Просмотры
5 305