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

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

  1. MAZ

    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) ???
     
  2. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Хм. Меня гуру поправят, но простейший способ такой:
    Код (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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    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 Гость

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

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

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

    Omh Lotus team
    Lotus team

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

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

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

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