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

  • Автор темы Sandro
  • Дата начала
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#2
Sandro
Не ясно, что значит "он заполняется выборкой из реляционной БД"? Значения для выбора (Choices) берутся из РДБ? В комбобоксе и так сохраняется только выбранное значение.
 
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#4
Sandro
В родительском документе тоже значения задваиваются? Если в родителе одно значение, а в дочернем они двоятся, значит ошибка где-то при создании дочернего. Если значения двоятся в родителе, значит нужно искать ошибку в коде обновления поля, также стоит глянуть, что в событиях сохранения делается.
 
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#6
Ошибка в родительском, я вот думаю может при сохранении принудительно удалять, все значения кроме первого, только если честно не могу сообразить как, я же не знаю кол-во значений в поле.
Вариантов масса. Если значения повторяющиеся — см. ArrayUnique, @Unique, если нет и точно нужно первое значение — doc.ReplaceItemValue("fld_client", doc.GetItemValue("fld_client")(0)), @SetField("fld_client", fld_client[1]).
Но лучше всё-таки разобраться с первопричиной, почему значения размножаются.
 

Xalet

Well-known member
08.08.2008
410
0
#7
А как они там могут вообще появляться, если комбобокс мальтивелуе не бывает?
 
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#9
Sandro
Ошибка повторяется/воспроизводится для одних и тех же значений? Может в РДБ ввели данные криво и для определённых клиентов выбранное значение "распадается" на два?
 
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#11
Ну заметил что в выборке из РБД , почему то эти значения повторяются, если я выбираю одно из повторяющихся в combobox, это может быть причиной того что сохраняются 2 одинаковых названия ? Сейчас поставил @Unique, посмотрим поможет или нет.
Тогда уж лучше привести в порядок данные в РБД или по крайней мере брать из неё сразу уникальные значения (см. Distinct).
 
S

Sandro

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

nvyush

Lotus team
22.04.2009
2 317
0
#14
:) Про SQL я в курсе ))). То есть получается что если в списке есть 2 одинаковых значения и мы выбираем одно из них, то в поле запишется 2 значения ?
Поведение подтверждается. Создал cfd поле, в котором помимо уникальных были и повторяющиеся значения, и назначил его источником значений для комбобокса. При выборе повторяющихся значений в комбобоксе сохранялось то число значений, сколько раз они повторялись в источнике, т.е. двоились, троились и т.д.
Вывод: значения в источнике должны быть уникальными, причём делать это нужно не в Лотусе, а в РБД или запросе, поскольку есть ограничение на размер поля (32к) и в этом случае больше полезных (т.е. уникальных) данных можно получить.

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