1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

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

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

Наш партнер Genesis Hackspace
  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 Well-Known Member
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    347
    Симпатии:
    6
    Хм. Меня гуру поправят, но простейший способ такой:
    Код (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.125
    Симпатии:
    19
    MAZ
    call Doc.ReplaceItemValuse(ItemName, ItemValues)
     
  4. Omh

    Omh Well-Known Member
    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 Well-Known Member
    Lotus team

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

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

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

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