Формирование имени поля документа

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

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Сразу пардон за название темы, незнал как обозвать)
    В общем следующий вопрос, возможно ли как то формировать имя поля для обращения к нему путём неявного ввода.
    Например есть поля:
    поле1,поле2....полеN
    Сейчай обрабатываю так:
    doc.Поле1=....
    doc.Поле2=....
    .........
    doc.Поле3=....
    Хотелось бы сделать так чтобы не обращаться к каждому полю выделяя на это новую строчку кода, а формировать имя поля по формуле и обрабатывать в цикле например, в данном случае у нас имя полей отличаются только цифрой это было бы удобно)
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    NotesDocument.GetItemValue ?
    @GetField ?
     
  3. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    если я правильно понял

    For i = 1 To 999
    nam = "поле"+ Fulltrim(Str(i)) 'имя поля

    znac = uidoc.FieldGetText(nam) 'значение поля. Можно через doc.getitemvalue

    Next

    ??
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Я стормозил. Конечно же NotesDocument.ReplaceItemValue и @SetField. ;)
     
  5. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Gor
    Код (Text):
    For i = 1 To 999
    nam = "field"+ Str(i) 'имя поля
    znac = uidoc.Document.ReplaceItemValue(nam, "NEW_VALUE")
    Next
     
  6. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Чёт у мну сёня день мистики)))или тупки)

    Names = "Поле" + Cstr(i)
    Tmp=doc.GetItemValue(Names)
    Messagebox(Tmp) или Messagebox(Cstr(Tmp)) <----Тут ругается на несоответствие типов данных...

    Для: Gor
    Для: Medevic
    Для: Morpheus
    Спасибо
     
  7. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    Tmp=doc.GetItemValue(Names)(0)

    Tmp - это строка по всей видимости а GetItemValue - это массив значений
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Для: Morpheus
    Угу пасип, разобрался, там в зависимости от типа поля возвращаемое значение может быть и массив и число и текст)
     
  9. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    ну да, тольк GetItemValue это всегда Array(0 ... n)
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Вот опять залип:
    For i = 1 To 999
    nam = "field"+ Str(i) 'имя поля
    znac = uidoc.Document.ReplaceItemValue(nam, "NEW_VALUE")
    Next

    тут ругаемся)
    ReplaceItemValue присваивает полю "nam" значение "NEW_VALUE", и возврашает NotesItem (не пойму зачем нужен)
    так вот, на конструкцию типа
    znac = docST.ReplaceItemValue(Name2, ms)
    ругается.
    где Name2 - поле числовое, ms - число.
     
  11. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Кавычки где?
    docST.ReplaceItemValue("Name2", ms) ?
     
  12. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Для: Medevic
    set required on class instance assignment
     
  13. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Млин. Я кратко написал. Еще Call нужен.
    Call docST.ReplaceItemValue("Name2", ms)
     
  14. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    просто

    Call uidoc.Document.ReplaceItemValue("Name2", ms)
     
  15. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    А вот и не надо там кавычки)
     
  16. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-kizarek+23:01:2008, 12:29 -->
    <span class="vbquote">(kizarek @ 23:01:2008, 12:29 )</span><!--QuoteEBegin-->А вот и не надо там кавычки
    [snapback]94681" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну так телепатов здесь нету. :)
     
  17. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Кстати вот ещё проблемка возникла интересная. Переполняется стек при создании массива.
    Причем если создавать просто кнопку на форме, то всё отлично, если кнопку с тем же кодом поместить на панель действий, получаем ошибку о переполненном стеке( кто нить сталкивался?
     
  18. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    а код можо привести, бо телепатом и вправду тут нету
    скорее всего у Вас где то бесконечный цикл
     
  19. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Medevic+23:01:2008, 12:31 -->
    <span class="vbquote">(Medevic @ 23:01:2008, 12:31 )</span><!--QuoteEBegin-->телепатов здесь нету
    [snapback]94682" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    :)
     
  20. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Для: Morpheus
    Ошибка возникает именно при инициализации массива, причём в 1 случае работает нормально, в другом нет.
    Код (Text):
    Dim Detal(40,20,2) As String 'собраные из док. за месяц данные
    Dim VybDet(800,2) As String 'вспомогательный массив
    ругается на вторую строчку. Если интересует могу и весь код выложить)

    причём ещё и не всегда ругается)) как на скрипте программно стек почистить?))
     
Загрузка...

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