Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Правильная связь нескольких таблиц. Как?   Найти похожие ветки 

 
VitGun ©   (2005-02-02 20:58) [0]

Господа. Прошу прощения за тупой вопрос, но вот такое дело.

Значит есть таблица. Скажем "Tab1".  У нее есть поле "ID" - автоинкремент.

Есть таблицы "Tab2" и "Tab3". У них тоже есть "ID" которое равно полю "ID" таблицы "Tab1".
Т.е. задумка такая, что в "Tab1" хранятся данные типа "Покупаель" - "Поставщик", а в "Tab2" и "Tab3"
некие данные. Так вот при выборе записи в "Tab1" неоюходимо в "Tab2" и "Tab3" отобразить данные
соответствующие конкретной записи "Tab1". Как это правильно реализовать? Я пробовал через
Dataset.Filer, но это не сработало.


 
dBASE   (2005-02-02 22:20) [1]

- лукапное поле в наборе данных
- TDBLookupComboBox


 
VitGun ©   (2005-02-02 23:09) [2]

Нет. Ты не понял. Данные в таблицу уже добавлены.
Теперь при выборе записи в "Tab1" нужно отфильтовать данные в "Tab2" и "Tab3" таким образом, чтобы отобразились только данных принадлежащие выбранной записи в "Tab1".


 
Anatoly Podgoretsky ©   (2005-02-02 23:17) [3]

Master-Detail


 
VitGun ©   (2005-02-02 23:27) [4]

//Anatoly Podgoretsky
Пробовал. Не получается. Не подскажите, где об этом можно подробно почитать, или пример простой. С маленькими таблицами, а то в примерах от Delphi таблицы здоровые - разобраться сложно.


 
kaif ©   (2005-02-03 02:16) [5]

Берешь два компонента 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



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

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.082 c
14-1108373227
r.o.o.t
2005-02-14 12:27
2005.03.06
ПРЕДПЧТЕНИЯ МАСТЕРОВ DELPHI!!!!!!


3-1107432598
denis24
2005-02-03 15:09
2005.03.06
из mdb в gdb


14-1108381409
Игорь нтк
2005-02-14 14:43
2005.03.06
Посоветуйте литературу


1-1108822344
Ivolg
2005-02-19 17:12
2005.03.06
Глюк с MediaPlayer


3-1107514881
Yerbol
2005-02-04 14:01
2005.03.06
как быстро открыть БД из 130000 зап с небольшой потерей памяти