Как сохранять только выбранное значение в Combobox&

Тема в разделе "Lotus - Программирование", создана пользователем Sandro, 29 апр 2010.

  1. Sandro

    Sandro Гость

    Есть combobox, он заполняется выборкой из реляционной БД, как сделать, что бы в поле сохранялось только "выбранное" значение?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Sandro
    Не ясно, что значит "он заполняется выборкой из реляционной БД"? Значения для выбора (Choices) берутся из РДБ? В комбобоксе и так сохраняется только выбранное значение.
     
  3. Sandro

    Sandro Гость

    Ну вообщем не пойму почему, но в поле комбобокса иногда получается так , что значение двоится, то есть когда заполняю дочерний документ @GetDocField(@Text($REF); "fld_client") название клиента повторяется, то есть есть fld_client(0) и fld_client(1), если в combobox-e сохраняется только выбранное значение, то откуда появляется fld_client(1). Извините если туплю, но с Лотусом недавно знаком )))
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Sandro
    В родительском документе тоже значения задваиваются? Если в родителе одно значение, а в дочернем они двоятся, значит ошибка где-то при создании дочернего. Если значения двоятся в родителе, значит нужно искать ошибку в коде обновления поля, также стоит глянуть, что в событиях сохранения делается.
     
  5. Sandro

    Sandro Гость

    Ошибка в родительском, я вот думаю может при сохранении принудительно удалять, все значения кроме первого, только если честно не могу сообразить как, я же не знаю кол-во значений в поле.
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Вариантов масса. Если значения повторяющиеся — см. ArrayUnique, @Unique, если нет и точно нужно первое значение — doc.ReplaceItemValue("fld_client", doc.GetItemValue("fld_client")(0)), @SetField("fld_client", fld_client[1]).
    Но лучше всё-таки разобраться с первопричиной, почему значения размножаются.
     
  7. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    А как они там могут вообще появляться, если комбобокс мальтивелуе не бывает?
     
  8. Sandro

    Sandro Гость

    :wacko: Если б я понимал ))) При чём повторяются далеко не все . Там вообще схема такая. Идёт выборка из ODBC и заполняется мульти текстовое поле, а поле на комбобокса стоит ссылка на это замаскированное поле. Но в любом случае по идее должно сохраняться только выбранное значение((((
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Sandro
    Ошибка повторяется/воспроизводится для одних и тех же значений? Может в РДБ ввели данные криво и для определённых клиентов выбранное значение "распадается" на два?
     
  10. Sandro

    Sandro Гость

    Ну заметил что в выборке из РБД , почему то эти значения повторяются, если я выбираю одно из повторяющихся в combobox, это может быть причиной того что сохраняются 2 одинаковых названия ? Сейчас поставил @Unique, посмотрим поможет или нет.
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Тогда уж лучше привести в порядок данные в РБД или по крайней мере брать из неё сразу уникальные значения (см. Distinct).
     
  12. Sandro

    Sandro Гость

    :wacko: Про SQL я в курсе ))). То есть получается что если в списке есть 2 одинаковых значения и мы выбираем одно из них, то в поле запишется 2 значения ?
     
  13. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Скорее всего "криво" заполняется.
     
  14. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Поведение подтверждается. Создал cfd поле, в котором помимо уникальных были и повторяющиеся значения, и назначил его источником значений для комбобокса. При выборе повторяющихся значений в комбобоксе сохранялось то число значений, сколько раз они повторялись в источнике, т.е. двоились, троились и т.д.
    Вывод: значения в источнике должны быть уникальными, причём делать это нужно не в Лотусе, а в РБД или запросе, поскольку есть ограничение на размер поля (32к) и в этом случае больше полезных (т.е. уникальных) данных можно получить.

    P.S. Проверялось на 8.0.1.
     
  15. Sandro

    Sandro Гость

    Спасиб , теперь понятно стало
     
Загрузка...

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