![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TDBLookupCombobox замучил [D6, Paradox]
Солер © (2002-06-30 08:57:00)Уважаемые Мастера помогите решить проблему.
Есть DBGrid с таблицей, TDBLookupComboBox1 и несколько TDBEdit в
которые выводятся данные через TDBLookupComboBox. Всё работает хорошо.
Но при добавлении TDBLookupComboBox2 и к нему соответствующих TDBEdit,
начинаются затруднения: При выборе значения в TDBLookupComboBox1 автоматически
меняется значение TDBLookupComboBox2 на аналогичное TDBLookupComboBox1
и соответственнои данные в TDBEdit.Т.е. если в TDBLookuCombopBox1
выбираем фамилию Ивановто в TDBLoorukComboBox2 автоматически тоже
выскакивает Иванов, если меняем значение в TDBLookupComboBox2 - автоматически
меняется TDBLookupComboBox1. Как сделать,чтобы они работали автономно.
TDBLookupComboBox1 выбирал из базы данные своей строки, а
TDBLookupComboBox2 своей и также для TDBLooupComboBox3,TDBLookupComboBox4 и т.д.
Такая же история с TDBCombobox и TDBListBox
Спасибо.
VasilyNew (2002-06-30 13:28:00) [1]>>>Lola © (30.06.02 13:05)
Вы предлагаете в TListBox каждый раз закачивать данные требуемого поля из другой таблицы. Это возможность... Но!
Чаще всего в таблице (Т1), в которую Вы записываете значение из другого набора данных (Т2) содержится только индекс (ссылка) на запись последнего. Это дает возможность автоматически изменять значения данных в Т1 при изменении его в Т2. Главное, чтобы индекс записи в Т2 оставался неизменным.
Индексы в Т2, как правило, в локальных БД определяются типом поля Autoincrement, а в Client|Server – генераторами и триггерами.
VasilyNew (2002-06-30 13:23:00) [2]DataSet-ы можно, но что это тогда за приложение получится если к одному и тому же набору данных будет несколько TTable или TQuery подключено. Да и полная путаница получается. Важно знать задачу которую решает "Солер", тогда и решение можно найти более изящное.
VasilyNew (2002-06-30 13:06:00) [3]НИКАК!!!
TDBLookupComboBoxотбражает значение поля текущей строки.
Lookup-ит из другой таблицы ( ListSource) значение ( ListField) по, скажем, ссылочному индексу и записывает ( KeyField) в поле ( DataField) таблицы набора данных DataSource.
Другими словами, в наборе данных DataSourceв текущую строку поля DataFieldзаписывается ссылка на значение поля KeyField, а отображается в TDBLookupComboBox ListFieldдругого набора данных ListSource.
А поскольку в поле отображается лишь единая запись, то ни о какой "автономности" TDBLookupComboBox(1,2..n) и речи не может быть.
ЧИТАТЬ ЭТО !!! В предыдущем пояснении ошибка
Cobalt (2002-06-30 13:06:00) [4]Попробуйте использовать разные DataSet-ы
Lola (2002-06-30 13:05:00) [5]
> VasilyNew © (30.06.02 12:59)
прав. Вообще советую поменьше использовать прямой доступ к записям базы: одно неверное движение - и данные уже изменены, а пользователь и не заметил как. Лучше используй TComboBox и TListBox, код будет длиннее, зато работать корректнее.
VasilyNew (2002-06-30 12:59:00) [6]НИКАК!!!
TDBLookupComboBox отбражает значение поля текущей строки.
Lookup-ит из другой таблицы ( ListSource) значение ( ListField) по, скажем, ссылочному индексу и записывает ( KeyField) в поле ( DataField) таблицы набора данных DataSource.
Другими словами в наборе данных DataSourceв текущую строку поля DataFieldзаписывается ссылка на значение поля ListFieldдругого набора данных ListSource.
А поскольку в поле отображается лишь единая запись, то ни о какой "автономности" TDBLookupComboBox(1,2..n) и речи не может быть.