1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

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

Notesdocument.getitemvalue("fieldname")

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

  1. dimat

    dimat Well-Known Member
    Lotus team

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

    nvyush Well-Known Member
    Lotus team

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

    xKlonx Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    410
    Симпатии:
    0
    dimat
    Проверил,у меня есть поле "multiply" с опцией Allow Multiple Values
    Код:
    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 Well-Known Member
    Lotus team

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

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

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

    doc.GetItemValue("FieldName")
     
  6. Omh

    Omh Well-Known Member
    Lotus team

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

    dimat Well-Known Member
    Lotus team

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

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

    hosm * so what *

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

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

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

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

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

    xKlonx Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    410
    Симпатии:
    0
    dimat
    Код:
    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 Well-Known Member
    Lotus team

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

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

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

    TIA :-)
    Lotus team

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

    xKlonx Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    410
    Симпатии:
    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
     
Загрузка...

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