Динамическое поле

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

Статус темы:
Закрыта.
  1. zigfrid

    zigfrid Гость

    Добрый день.
    Создавал я тему по поводу динамического заполнения поля типа Dialog List.
    Решил в данном случае выкрутиться таким образом.
    На форме form1 находятся 2 поля field1 и field2. При изменении данных в поле field1 происходит событие, которое меняет содержимое view1 в зависимости от значеня поля field1.

    Sub Onchange(Source As Field)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim formula As String
    Dim workspace As New NotesUIWorkspace
    Dim curdoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim var As Variant

    Set db = session.CurrentDatabase
    Set curdoc = workspace.CurrentDocument
    Set doc=curdoc.Document
    Set view = db.GetView("(view1)")
    var = doc.GetItemValue("field1")
    formula= | select form = "form1" & field1 ="| & var(0) & |"|
    view.SelectionFormula = formula
    End Sub

    View1 состоит из 2-х столбцов. 1-й отсортированный и указывает на поле field1, 2-й указывает на поле field2.
    В свойствах поля field2 указано: Use view dialog for choices --- view1 --- 2-й столбец. В результате при вызове dialog list field2 отображает только те значения, которые соответствуют field1.
    Но имеется один нюанс - в этом dialog list дублируются значения. Т.е. если для одному и тому же значению field1 было поставлено в соответсвие несколько одинаковых значений field2, то в dialog list field2 они повторяются.

    Может кто-то посоветует как избавиться от дубликатов в dialog list ?????
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: zigfrid
    Менять Selection Formula занятие не очень хорошее. Это могут делать только дизайнеры и администраторы базы. Имхо можно обойтись простыми функциями типа @DbColumn или @DbLookup. Это, конечно, если ты не преследуешь имеено цель смены формулы выбора.

    Есть функция @Unique. Убирает дубликаты. Но тогда в Dialog List'е нужно сделать Use formula for choice. И значения отбирать через те же @DbColumn или @DbLookup.
     
  3. zigfrid

    zigfrid Гость

    Ладно
    Как я понимаю плохой способ я выбрал, раз с правами играться надо.
    Тогда позвольте задать несколько вопросов по Вашему методу.
    Зачем делать поле Multiple Values???
    Как заполнить поле Values как список/массив???

    >>Как делал я.
    >>Создаем еще одно скрытое текстовое. Пусть будет Values. И оно будет >>Multiple Values.
    >>В поле типа DialogList в формуле выбора пишем - Values.
    >>А поле Values заполняем как хотим и когда хотим (только как
    >>список/массив).
     
  4. _OLSA_

    _OLSA_ Гость

    Объясните, пожл.

    Если у меня есть поле типа computed (Multiple Values), скажем - вес.
    Можно ли отобразить его значения в столбце вьювера?
     
  5. VZH

    VZH Гость

    <!--QuoteBegin-_OLSA_+4:10:2005, 08:52 -->
    <span class="vbquote">(_OLSA_ @ 4:10:2005, 08:52 )</span><!--QuoteEBegin-->Объясните, пожл.

    Если у меня есть поле типа computed (Multiple Values), скажем - вес.
    Можно ли отобразить его значения в столбце вьювера?
    [snapback]25469" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Вы будете смеятся - да. Но, учитывайте что автоматически пересчитываться это поле будет только в момент рефреша формы (например при сохранении).
     
  6. _OLSA_

    _OLSA_ Гость

    <!--QuoteBegin-VZH+4:10:2005, 08:39 -->
    <span class="vbquote">(VZH @ 4:10:2005, 08:39 )</span><!--QuoteEBegin-->Вы будете смеятся - да. Но, учитывайте что автоматически пересчитываться это поле будет только в момент рефреша формы (например при сохранении).
    [snapback]25471" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Это понятно, а как если нет этого рефреша? Как нибудь из одной формы (где равчитывается этот вес на скрипте) можно ли вызвать обновление другой формы, где и отображается по полю computed эти значения?
     
  7. VZH

    VZH Гость

    <!--QuoteBegin-_OLSA_+4:10:2005, 09:57 -->
    <span class="vbquote">(_OLSA_ @ 4:10:2005, 09:57 )</span><!--QuoteEBegin-->Это понятно, а как если нет этого рефреша? Как нибудь из одной формы (где равчитывается этот вес на скрипте) можно ли вызвать обновление другой формы, где и отображается по полю computed эти значения?
    [snapback]25472" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Привет.

    2 рабочих варианта -
    1. Скрипт на QuerySave 1 формы -мгновенно отображение, но требуется доступ и медленно сохраняется
    2. Агент по расписанию - работает в бэкграунде сервера, но требуется время на актуализацию.
     
  8. _OLSA_

    _OLSA_ Гость

    <!--QuoteBegin-VZH+4:10:2005, 09:01 -->
    <span class="vbquote">(VZH @ 4:10:2005, 09:01 )</span><!--QuoteEBegin-->Привет.

    2 рабочих варианта -
    1. Скрипт на QuerySave 1 формы -мгновенно отображение, но требуется доступ и медленно сохраняется
    2. Агент по расписанию - работает в бэкграунде сервера, но требуется время на актуализацию.
    [snapback]25473" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    По пункту 1:
    нужно именно мгновенное отображение. Доступ по уровням в ACL?
    Как программно вызвать обновление формы, можно идею?
     
  9. VZH

    VZH Гость

    <!--QuoteBegin-_OLSA_+4:10:2005, 10:28 -->
    <span class="vbquote">(_OLSA_ @ 4:10:2005, 10:28 )</span><!--QuoteEBegin-->По пункту 1:
    нужно именно мгновенное отображение. Доступ по уровням в ACL?
    Как программно вызвать обновление формы, можно идею?
    [snapback]25474" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    У автора изменений формы1 должен быть авторский доступ к документу2.
    на QuerySave пишется скрипт по поиску и изменению связанного документа.

    документ по форму можно обновить через ComputeWithForm. или через @Command( [RefreshHideFormulas] )
     
  10. zigfrid

    zigfrid Гость

    <!--QuoteBegin-Medevic+3:10:2005, 16:01 -->
    <span class="vbquote">(Medevic @ 3:10:2005, 16:01 )</span><!--QuoteEBegin-->Для: zigfrid
    Менять Selection Formula занятие не очень хорошее. Это могут делать только дизайнеры и администраторы базы. Имхо можно обойтись простыми функциями типа @DbColumn или @DbLookup. Это, конечно, если ты не преследуешь имеено цель смены формулы выбора.

    Есть функция @Unique. Убирает дубликаты. Но тогда в Dialog List'е нужно сделать Use formula for choice. И значения отбирать через те же @DbColumn или @DbLookup.
    [snapback]25443" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Всё!!!
    Разобрался я с этими динамическим полями!
    Большое спасибо за совет и помошь :)
     
Загрузка...
Статус темы:
Закрыта.

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