• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы MAZ
  • Дата начала
M

MAZ

Пишу через 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
545
93
BIT
8
Хм. Меня гуру поправят, но простейший способ такой:
Код:
	'чтение только админу и юзеру
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
 
O

Omh

Я бы выпилил 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

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Darker прав. Нельзя использовать Replace. Вместо него нужен ArrayReplace.
И на всякий случай можно так:
Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical)).isAuthors = True
 
Мы в соцсетях:

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