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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
1-1108986773
lehich
2005-02-21 14:52
2005.03.06
повторы в ListBox и сохранение элементов в переменную


1-1108380610
Дельфёнок
2005-02-14 14:30
2005.03.06
Подскажите как добавить у ActiveX Control-а новые свойства?


1-1108866786
snowkam
2005-02-20 05:33
2005.03.06
время деньги! Или как запустить в фоне.


1-1109060871
Maks Realov
2005-02-22 11:27
2005.03.06
Как лучше реализовать запись множества дин. данный в файл?


3-1107345775
zunder
2005-02-02 15:02
2005.03.06
как продублировать датасет?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский