Операции с многозначными полями

Тема в разделе "Lotus - Программирование", создана пользователем Chron, 28 июл 2011.

  1. Chron

    Chron Well-Known Member

    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    Всем превед... У мну снова проблема с многозначными полями, а именно такая... в документы есть связанные с друг другом 2 многозначных поля... Суть такова, например: у первого поля такие элементы --> "A";"C";"F";"A";"B", у второго - "x";"x";"x";"x";"x"... Мне необходимо в первом поле выявить значения (или одно значение) "A", узнать его порядковый номер и заменить элементы с такими же номерами во втором поле на другое значение... т.е. второе поле будет выглядеть уже так, например --> "y";"x";"x";"y","x"... Возможно реализации скриптом?.. Я пробовал через формулы, своим недалеким умом допер до

    Код (Text):
    @For(n := 1;
    n <= @Elements(ПОЛЕ1);
    n := n + 1;
    @If(ПОЛЕ1[n]="A";
    @Set(ПОЛЕ2[n];"y");
    "")
    )
    естественно не работает)))... Хотел бы услышать ваши советы...
     
  2. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Попробуйте без @Set.
    ПОЛЕ2[n]:="y";
    должно работать
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вроде как по индексу нельзя менять элемент.
     
  5. Chron

    Chron Well-Known Member

    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    Не получается... Удивительным образом после сохранения агента строчка ПОЛЕ2[n]:="y" преобразуется в ПОЛЕ2[n:="y"] :rolleyes:


    Добавлено:
    С помощью @Replace в пределах одного поля вроде работается....
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    а что смущает-то? :rolleyes:
     
  7. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Код (LotusScript):
        Dim FIELD1 As Variant
    Dim FIELD2 As Variant
    Dim i As Integer

    FIELD1 = doc.getitemvalue("ПОЛЕ1")
    FIELD2 = doc.getitemvalue("ПОЛЕ2")

    For i=0 To Ubound(FIELD1)
    If FIELD1(i)="А" Then FIELD2(i) = "y"
    Next

    Call doc.ReplaceItemValue("ПОЛЕ2", FIELD2)
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код (Text):
    a := "A" : "C" : "F" : "A" : "B";
    b := "x" : "x" : "x" : "x" : "x";
    c := "A";
    d := "y";
    @Right(@Replace(a + "|" + b; c + "|" + b; a + "|" + d); "|")
     
  9. Darker

    Darker Гость

    Medevic, гениально! +1

    единственное - над разделителем надо подумать (посложнее, чтоб не встретился где-нибудь)
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    сделать настраиваемыми (в полях или переменных)
     
Загрузка...

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