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

Тема в разделе "Lotus - Программирование", создана пользователем MAZ, 25 окт 2010.

  1. MAZ

    MAZ Гость

    Репутация:
    0
    Пишу через 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) ???
     
  2. NetWood

    NetWood Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    17 апр 2008
    Сообщения:
    353
    Симпатии:
    7
    Хм. Меня гуру поправят, но простейший способ такой:
    Код (Text):
        'чтение только админу и юзеру
    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
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Команда форума Lotus team

    Репутация:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    3.170
    Симпатии:
    21
    MAZ
    call Doc.ReplaceItemValuse(ItemName, ItemValues)
     
  4. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я бы выпилил NotesItem:
    Код (LotusScript):
    Const ITEMNAME = "tmpAuthors"

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

    Darker Гость

    Репутация:
    0
    Const ITEMNAME = "tmpAuthors"
    Call Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical))
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Darker прав. Нельзя использовать Replace. Вместо него нужен ArrayReplace.
    И на всякий случай можно так:
    Doc.replaceItemValue(ITEMNAME, Arrayreplace(Doc.GetItemValues(ITEMNAME), exName.Canonical, newName.Canonical)).isAuthors = True
     
  7. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Тьфу, а я и не доглядел.
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Репутация:
    0
    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    +1
     
Загрузка...

Поделиться этой страницей