Notesdocument.getitemvalue("fieldname")

Тема в разделе "Lotus - Программирование", создана пользователем dimat, 27 ноя 2009.

  1. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Редактируемое поле FieldName - DialogList с опцией Allow Multiple Values, в нем отмечены несколько значений.
    На LS пытаюсь взять все значения, но берется только первое. как взять все?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Прежде чем задавать такие вопросы, почитайте в справке про NotesDocument, NotesItem и их свойства/методы.
     
  3. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    dimat
    Проверил,у меня есть поле "multiply" с опцией Allow Multiple Values
    Код (Text):
    Dim w As New NotesUIWorkspace    
    Dim uidoc As NotesUIDocument       
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim mult As Variant


    Set db = session.CurrentDatabase
    Set uidoc = w.CurrentDocument  
    Set doc = uidoc.Document

    mult =doc.GetItemValue("multiply")
    переменная mult берет все значения
     
  4. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Прошу прощенья :rolleyes: , действительно по хелпу разобрался.
    Сделал вот так:
    Код (Text):
    dim rt as notesItem
    Set rt= doc.GetFirstItem("FieldName")
    print rt.Text
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    dimat
    делайте так как указал ув. xRomax

    doc.GetItemValue("FieldName")
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Morpheus
    :rolleyes:
     
  7. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Пробовал так, но почему то все равно берет только первое значение :rolleyes:

    а так не правильно?
    Код (Text):
    dim rt as notesItem
    Set rt= doc.GetFirstItem("FieldName")
    Print rt.text
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Я тоже, но вы ж не в курсе, человек с Variant умеет работать?
    может, ему все значение в строку слепить надо и в мессаджбокс вывести :rolleyes:
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    dimat
    следите за мыслью

    doc.GetItemValue("FieldName")(0) - ПЕРВОЕ значение
    doc.GetItemValue("FieldName")(1) - ВТАРОЕ значение
    ...
    doc.GetItemValue("FieldName")(N) - N-ное значение

    сответственно GetItemValue возвращает массив, и ну ни как не только первое значение
     
  10. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    dimat
    Код (Text):
    Dim w As New NotesUIWorkspace    
    Dim uidoc As NotesUIDocument       
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim mult As Variant

    Set db = session.CurrentDatabase
    Set uidoc = w.CurrentDocument  
    Set doc = uidoc.Document

    mult =doc.GetItemValue("multiply") 
    Call doc.ReplaceItemValue("result",mult)
    Вот вам доказательство что берёт все выбранные значения.Для проверки создайте ещё одно текстовое поле как у меня "result"
    и для примера кнопку куда поместите вышеприведённый код
     
  11. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    то есть:
    Код (Text):
    dim s as string
    s=doc.GetItemValue("FieldName")
    в s будет одно значение?

    Код (Text):
    dim s as Variant
    s=doc.GetItemValue("FieldName")
    в s будут все значения?

    Правильно я думаю?
    P.S.: Эти значения я вывожу в ексель
    Код (Text):
    xlWorksheet.cells(i%,4).value=
     
  12. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    В данном случае будет рантайм-ошибка "тайп мисматч". Т.к. в стринг нельзя поместить массив
     
  13. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Variant is a special data type: variables of type Variant can hold values of any of the following data types that LotusScript recognizes, except for user-defined data types:

    1) A value of any of the scalar data types that LotusScript supports -- Boolean, Byte, Integer, Long, Single, Double, Currency, String
    2) A date/time value
    3) An array or list
    4) An object reference, that is, a pointer to an OLE Automation object or to an instance of a product-defined or user-defined class, or an object
    reference to a Java Object.
    5)The NULL value
    6) The EMPTY value
     
Загрузка...

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