![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильная связь нескольких таблиц. Как? [D7, IB6.x]
VitGun © (2005-02-02 20:58:00)Господа. Прошу прощения за тупой вопрос, но вот такое дело.
Значит есть таблица. Скажем "Tab1". У нее есть поле "ID" - автоинкремент.
Есть таблицы "Tab2" и "Tab3". У них тоже есть "ID" которое равно полю "ID" таблицы "Tab1".
Т.е. задумка такая, что в "Tab1" хранятся данные типа "Покупаель" - "Поставщик", а в "Tab2" и "Tab3"
некие данные. Так вот при выборе записи в "Tab1" неоюходимо в "Tab2" и "Tab3" отобразить данные
соответствующие конкретной записи "Tab1". Как это правильно реализовать? Я пробовал через
Dataset.Filer, но это не сработало.
kaif (2005-02-03 02:16:00) [1]Берешь два компонента IBDataSet. И один DataSource.
Вписываешь в "подчиненный датасет" запрос (свойство SelectSQL)
SELECT * FROM Tab2 WHERE ID=:ID
Соединяшь свойство DataSource этого датасета с компонентом DataSource1, а свойство компонента DataSource1.DataSet с компонентом "главного запроса", в который записываешь:
SELECT * FROM Tab1.
Когда это заработает, добавь аналогично еще один "подчиненный датасет" для Tab3, подцепив его к "главному датасету".
Предполагается, что поле ID во всех таблицах это поле, по которому устанавливается связь и названо везде 'ID'. Если названо иначе, то в подчиненном запросе нужно писать другие имена.
SELECT * FROM Tab2
WHERE <имя "поля связи" в подчиненной таблице Tab2>=
:<имя "поля связи" в главной (скорее всего ID)>
"Полем связи" я назвал здесь поле, в котором в той и другой таблице будет присутствовать одинаковое значение, скажем ID=113. И это будет означать, что строки этих двух таблиц "связаны"
А вообще долго объяснять, хотя все просто на самом деле.
Лучший ресурс по IB:
http://www.ibase.ru
VitGun (2005-02-02 23:27:00) [2]//Anatoly Podgoretsky
Пробовал. Не получается. Не подскажите, где об этом можно подробно почитать, или пример простой. С маленькими таблицами, а то в примерах от Delphi таблицы здоровые - разобраться сложно.
Anatoly Podgoretsky (2005-02-02 23:17:00) [3]Master-Detail
VitGun (2005-02-02 23:09:00) [4]Нет. Ты не понял. Данные в таблицу уже добавлены.
Теперь при выборе записи в "Tab1" нужно отфильтовать данные в "Tab2" и "Tab3" таким образом, чтобы отобразились только данных принадлежащие выбранной записи в "Tab1".
dBASE (2005-02-02 22:20:00) [5]- лукапное поле в наборе данных
- TDBLookupComboBox