Вниз
Скачать: CL | DM;

TDBLookupCombobox замучил   Найти похожие ветки 

 
Солер ©   (2002-06-30 08:57) [0]

Уважаемые Мастера помогите решить проблему.
Есть DBGrid с таблицей, TDBLookupComboBox1 и несколько TDBEdit в
которые выводятся данные через TDBLookupComboBox. Всё работает хорошо.
Но при добавлении TDBLookupComboBox2 и к нему соответствующих TDBEdit,
начинаются затруднения: При выборе значения в TDBLookupComboBox1 автоматически
меняется значение TDBLookupComboBox2 на аналогичное TDBLookupComboBox1
и соответственнои данные в TDBEdit.Т.е. если в TDBLookuCombopBox1
выбираем фамилию Ивановто в TDBLoorukComboBox2 автоматически тоже
выскакивает Иванов, если меняем значение в TDBLookupComboBox2 - автоматически
меняется TDBLookupComboBox1. Как сделать,чтобы они работали автономно.
TDBLookupComboBox1 выбирал из базы данные своей строки, а
TDBLookupComboBox2 своей и также для TDBLooupComboBox3,TDBLookupComboBox4 и т.д.
Такая же история с TDBCombobox и TDBListBox
Спасибо.


 
VasilyNew ©   (2002-06-30 12:59) [1]

НИКАК!!!
TDBLookupComboBox отбражает значение поля текущей строки.
Lookup-ит из другой таблицы ( ListSource) значение ( ListField) по, скажем, ссылочному индексу и записывает ( KeyField) в поле ( DataField) таблицы набора данных DataSource.
Другими словами в наборе данных DataSource в текущую строку поля DataField записывается ссылка на значение поля ListField другого набора данных ListSource.
А поскольку в поле отображается лишь единая запись, то ни о какой "автономности" TDBLookupComboBox(1,2..n) и речи не может быть.


 
Lola ©   (2002-06-30 13:05) [2]


> VasilyNew © (30.06.02 12:59)
прав. Вообще советую поменьше использовать прямой доступ к записям базы: одно неверное движение - и данные уже изменены, а пользователь и не заметил как. Лучше используй TComboBox и TListBox, код будет длиннее, зато работать корректнее.


 
VasilyNew ©   (2002-06-30 13:06) [3]

НИКАК!!!
TDBLookupComboBox отбражает значение поля текущей строки.
Lookup-ит из другой таблицы ( ListSource) значение ( ListField) по, скажем, ссылочному индексу и записывает ( KeyField) в поле ( DataField) таблицы набора данных DataSource.
Другими словами, в наборе данных DataSource в текущую строку поля DataField записывается ссылка на значение поля KeyField, а отображается в TDBLookupComboBox ListField другого набора данных ListSource.
А поскольку в поле отображается лишь единая запись, то ни о какой "автономности" TDBLookupComboBox(1,2..n) и речи не может быть.
ЧИТАТЬ ЭТО !!! В предыдущем пояснении ошибка


 
Cobalt ©   (2002-06-30 13:06) [4]

Попробуйте использовать разные DataSet-ы


 
VasilyNew ©   (2002-06-30 13:23) [5]

DataSet-ы можно, но что это тогда за приложение получится если к одному и тому же набору данных будет несколько TTable или TQuery подключено. Да и полная путаница получается. Важно знать задачу которую решает "Солер", тогда и решение можно найти более изящное.


 
VasilyNew ©   (2002-06-30 13:28) [6]

>>>Lola © (30.06.02 13:05)
Вы предлагаете в TListBox каждый раз закачивать данные требуемого поля из другой таблицы. Это возможность... Но!
Чаще всего в таблице (Т1), в которую Вы записываете значение из другого набора данных (Т2) содержится только индекс (ссылка) на запись последнего. Это дает возможность автоматически изменять значения данных в Т1 при изменении его в Т2. Главное, чтобы индекс записи в Т2 оставался неизменным.
Индексы в Т2, как правило, в локальных БД определяются типом поля Autoincrement, а в Client|Server – генераторами и триггерами.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
3-70587
masik
2002-06-28 15:51
2002.07.22
Помогите подключить Linked Server


14-70864
Алоэ
2002-06-22 22:26
2002.07.22
Как подключить локалку к инету ?


14-70899
dron1
2002-06-24 15:28
2002.07.22
поле с возможностью выбора


1-70750
Guerrillero Che
2002-07-09 14:50
2002.07.22
Фреймы


7-70941
Snake2000
2002-05-01 21:33
2002.07.22
Геймпад Sega Genesis и PC




   Наверх