![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSSQL и ADO - Отображение значения Lookup-поля [D5, MSSQL]
SnapIn © (2004-01-25 21:53:00)
Возникла проблема, когда в текущей записи меняется значение Lookup-поля,
новое значение не отображается.. Поясняю:
Есть таблица видов выпускаемой продукции, в ней есть поле, в котором
находится единица измерения этой продукции, которая выбирается из справочника (кг, шт, ...)
При заполнении таблицы видов выпускаемой продукции отображаю только
поле с названием единицы измерения ei_naim, а сам ID находится в поле ed_izm
(сам код единицы измерения пользователю видеть ведь не нужно)
Когда из справочника вибирается новая единица измерения -
ее код заношу естественно в ed_izm, но в отображаемом поле с названием
единицы измерения ei_naim значение не обновляется пока запись не будет сохранена!
Соответственно пользователь не видит, что он действительно выбрал нужное ему значение...
Как быть?
ЗЫ: Lookup-поле - это DBButtonEdit, а не DBLookupCombo
ЗЗЫ: Пытался присваивать сразу значение полю ei_naim, в котором название единицы измерения, но MSSQL, модифицирует не значение таблицы выпускаемой продукции, а значение справочника единиц измерения (если до этого единица измерения была "кг" под ID=5, а мы выбрали "шт" по ID=4 - в единицах измерения под ID=5 просто появляется строка "шт".. становится две учетных записи с названием "шт", под двумя ID). А ведь в свойствах Unique Table выставил "Вид выпускаемой продукции"!!!!!!!!!!! И Resync Command свою задал:
select vp.*,
u.kod users_kod, u.naim users_naim, u.naimen users_naimen,
ei.kod ei_kod, ei.naim ei_naim, ei.naimen ei_naimen
from GGK.dbo.vid_prod vp
INNER JOIN GGK.dbo.users u ON vp.modik = u.kod
INNER JOIN GGK.dbo.ed_izm ei ON vp.ed_izm = ei.kod
where vp.kod = ?
ЮЮ (2004-01-29 03:34:00) [1]
>sergvc (28.01.04 14:30) [7]
Этого мало. Грид-то нарисует что хочешь, а когда войдешь в редактор, то там окажется "код", а хочется "значение"
sergvc (2004-01-28 14:30:00) [2]
Можно воспользоваться DBGrid.onDrawColumnCell
SnapIn (2004-01-27 14:07:00) [3]
ok, попробуем
ЮЮ (2004-01-27 03:40:00) [4]
Ради бога, но корректировать надо поле vp.ed_izm, тем не менее.
Тогда, допиши обработчики TField.OnGet(Set)Text для этого поля, чтобы показывать одно, а на самом деле редактировать другое
SnapIn (2004-01-26 16:23:00) [5]
> если религия не позволяет использовать DBLookup-компоненты
гыы.. просто если в списке значений сотни, а нужно быстро находить нужное, лучше вытащить окошечко, в котором уж есть расширенный поиск, фильтрация и т.д. *!* =)
ЮЮ (2004-01-26 08:10:00) [6]
>Нет, пользователь ничего не вводит, он просто выбирает запись из справочника
Тогда надо корректировать не ei.naim ei_naim, а vp.ed_izm и, если религия не позволяет использовать DBLookup-компоненты, то эмулировать его работу в DBButtonEdit-е.
SnapIn (2004-01-26 06:50:00) [7]
Нет, пользователь ничего не вводит, он просто выбирает запись из справочника
Выход я нашел, просто нужно отменить обязвтельные поля и сохранять после выбора из справочника, но это, конечно, коряво..
ЮЮ (2004-01-26 02:34:00) [8]
>значение не обновляется пока запись не будет сохранена!
естественно, что пока запись не сохранена, "подстановочное значение" соответствует тому, что в наборе данных, т.е. старому.
Для визуализации изменений и придумали DBLookup-компоненты. Если же ты упорно хочешь, чтобы пользователь вводил в поле 4, а в другом сразу видел "шт", то сделай это поле вычислимым на клиенте