D2006. lookup-field. DBControl

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
Aristarh
Сообщения: 1
Зарегистрирован: 29 ноя 2006, 14:41

D2006. lookup-field. DBControl

Сообщение Aristarh » 29 ноя 2006, 16:02

(прошу прощения, что так размусоливаю свой вопрос - просто хочу избежать наводящих вопросов и может быть сам чегой-то пойму по ходу изложения:))

После перевода проекта с D5 на D2006 нарисовался глюк отображения обNULLения lookup-полей

Накидав на форму стандартных компонент
TDataBase (ибо проект наш разрабатывался давно и работает под BDE), TTable (ибо кому-то пришло в голову написать свой датасет наследник от TDataSet)
TDBEdit (потому именно они юзаются)
TdxDBEdit (аналогично и для сравнения)
TDBText (для проверки)

Существует DatasetMain.
В нем присутствуют поля:
Uid - айди записи,
URefId - ссылка на справочник (DataSetSecond)
URefText - lookup-поле, значение которого подсасыватся из DataSetSecond

Всё это лежит на формочке редактирования одной конкретной записи

проявилась следующая ситуация:

URefText выводится через TDBEdit. Заполнение происходит по кнопочке (вызывается справочник, выбирается запись, присваивается айдишник, lookup подхватывает текст) - всё работает как нужно и как было под D5

Для удаления значения отрабатывается TDBEdit.OnKeyDown и айдишнику URefId присваивается NULL. Так вот. Под D2006 айдишник принимает (присваиваемое ему программно) значение NULL. Значение lookup-поля также становится NULL, но визуально оно обнуляется лишь после того как DBEdit теряет фокус. Табом мля с него ушли и только после этого видно что там таки да пустое значение. С TdxDBEdit та же мулька

Если к полю прикрутить скажем TDBText, то его содержимое в принципе изменится только после Post

Сталкивался ли кто-либо с подобным и что собственно рабить:)?

Ответить