Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

MSSQL и ADO - Отображение значения Lookup-поля   Найти похожие ветки 

 
SnapIn   (2004-01-25 21:53) [0]

Возникла проблема, когда в текущей записи меняется значение 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-26 02:34) [1]

>значение не обновляется пока запись не будет сохранена!

естественно, что пока запись не сохранена, "подстановочное значение" соответствует тому, что в наборе данных, т.е. старому.
Для визуализации изменений и придумали DBLookup-компоненты. Если же ты упорно хочешь, чтобы пользователь вводил в поле 4, а в другом сразу видел "шт", то сделай это поле вычислимым на клиенте


 
SnapIn   (2004-01-26 06:50) [2]

Нет, пользователь ничего не вводит, он просто выбирает запись из справочника

Выход я нашел, просто нужно отменить обязвтельные поля и сохранять после выбора из справочника, но это, конечно, коряво..


 
ЮЮ   (2004-01-26 08:10) [3]

>Нет, пользователь ничего не вводит, он просто выбирает запись из справочника

Тогда надо корректировать не ei.naim ei_naim, а vp.ed_izm и, если религия не позволяет использовать DBLookup-компоненты, то эмулировать его работу в DBButtonEdit-е.


 
SnapIn   (2004-01-26 16:23) [4]


> если религия не позволяет использовать DBLookup-компоненты


гыы.. просто если в списке значений сотни, а нужно быстро находить нужное, лучше вытащить окошечко, в котором уж есть расширенный поиск, фильтрация и т.д. *!* =)


 
ЮЮ   (2004-01-27 03:40) [5]

Ради бога, но корректировать надо поле vp.ed_izm, тем не менее.

Тогда, допиши обработчики TField.OnGet(Set)Text для этого поля, чтобы показывать одно, а на самом деле редактировать другое


 
SnapIn   (2004-01-27 14:07) [6]

ok, попробуем


 
sergvc   (2004-01-28 14:30) [7]

Можно воспользоваться DBGrid.onDrawColumnCell


 
ЮЮ   (2004-01-29 03:34) [8]

>sergvc (28.01.04 14:30) [7]
Этого мало. Грид-то нарисует что хочешь, а когда войдешь в редактор, то там окажется "код", а хочется "значение"



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
1-79852
siriusP
2004-02-10 17:17
2004.02.25
Помогите найти ошибку в классе


1-79817
Edik86
2004-02-13 22:25
2004.02.25
Программа дала сбой


1-79694
Leksss
2004-02-14 22:00
2004.02.25
Как отловить изменение буфера обмена ? (-)


6-80083
beeper
2003-12-16 19:31
2004.02.25
Изменить настройки сети


1-79732
Серёга
2004-02-02 15:29
2004.02.25
TStringgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский