• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Sandro

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

nvyush

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

Sandro

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

nvyush

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

Sandro

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

nvyush

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

Xalet

А как они там могут вообще появляться, если комбобокс мальтивелуе не бывает?
 
S

Sandro

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

nvyush

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

Sandro

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

nvyush

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

Sandro

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

nvyush

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

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

P.S. Проверялось на 8.0.1.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!