проблема с ComboBox | |
---|---|
Nick Автор Сообщений: 140 Откуда: Lvov Дата регистрации: 11.01.2001 |
Всем привет
давно не писал Попросили в проект добавить Классификатор профессий база профессий master.code n(3) master.name c(40) основная база куда заносится значение с базы master base.posada n(3) В Data Envirom... есть обе базы Добавил ComboBox - через билдер указал все параметры ControlSource - base.posada RowSource - master.code,name RowSource Type - 6 - fields На валид повесил код ThisForm.LblPosada2.Caption=IIF(SEEK(posada,'master'),ALLTRIM(MASTER.NAME),'*') ThisForm.Refresh И эта падла вносит в base.posada номер записи в базе master ,а не значение master.Code Если руками в базе вбить код профессии - то нормально отображает есть старый проект - такихй же комбо 20 штук - все ок Где трабл ?? Исправлено 2 раз(а). Последнее : Nick, 23.07.21 12:28 |
Re: проблема с ComboBox | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Если код - это поле числового типа, то надо добавить настройку
ComboBox.BoundTo = .T. Но в этом случае возможны некие глюки, если этот Combo внутри Grid |
Re: проблема с ComboBox | |
---|---|
Nick Автор Сообщений: 140 Откуда: Lvov Дата регистрации: 11.01.2001 |
СПАСИБО!
Добавил на комбо BoundTo = .T. заработало! Зато второй комбо с подразделениями - не работает - хотя идентичен первому И Добавлял на комбо BoundTo = .T. БЛИН! Открываю другие проекты - все работает без ComboBox.BoundTo = .T. Все поля числового типа! Есть какой то сцуко нюанс! |
Re: проблема с ComboBox | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
То, что отображается в раскрывающемся списке ComboBox - это отдельный список. Причем все (т.е. вообще все) значения в этом раскрывающемся списке только и исключительно символьного типа и никак иначе. Если источником какого-то столбца, например, является число, то в раскрывающемся списке это будет уже текст, сформированный из этого числа
Выбранное значение в этом списке может быть идентифицировано двумя способами 1. Как порядковый номер строки в этом выпадающем списке (число) 2. Как значение, прочитанное из столбца, номер которого указан в свойстве BoundColumn. Точнее, из этого столбца будет взято значение для заполнения свойства Value Куда выбранное значение записать определяется значением реквизита ControlSource. И вот тут вступает в действие некий автоматизм. Если ControlSource - это числовое значение, то в качестве выбранного значения элемента списка будет взят порядковый номер элемента в списке. Число же! Если ControlSource - это символьное значение, то в качестве выбранного значения элемента списка будет взято значение из BoundColumn. Т.е. значение Value Однако поскольку идентификатор записи зачастую - это числовое поле, то ввели дополнительное свойство BoundTo при установке которого в значение .T. вне зависимости от типа данных в ControlSource выбранное значение будет взято из BoundColumn, а затем это символьное значение будет конвертировано в тот тип данных, который указан в ControlSource Нужен ли BoundTo = .T. ? Так смотрите, нет ли у Вас совпадения кода и порядкового номера. Может, просто не было необходимости их различать? Но, разумеется, весь этот автоматизм может быть вообще выброшен и организован "закат солнца вручную". Т.е. чистым программированием определяют выбранное значение и в коде записывают куда надо |
Re: проблема с ComboBox | |
---|---|
Nick Автор Сообщений: 140 Откуда: Lvov Дата регистрации: 11.01.2001 |
Спасибо Владимир ,все понятно обьяснили!
|
© 2000-2024 Fox Club  |