Показать сообщение отдельно
Старый 20.04.2004, 15:27     # 1
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
Master-Detail многие ко многим?

Есть база на InterBase 6.0 и программа-клиент пишущаяся на D6 c FIB+ 5.2.

На форме есть два pFIBDataSet'a у каждого из которых есть свой DataSource. Первый pFIBDataSet выбирает из таблицы коды значений, второй по этим кодам выбирает занчения из других таблиц и показывает их в DBGrid.

SQL запросы выполняются путем установки свойства Active у pFIBDataSet (которые и содержат эти запросы, естественно)

Запрос второго pFIBDataSet'a содержит параметры, которые берутся из первого DataSource. Т.е. у втрого pFIBDataSet'a в свойстве DataSource прописан первый DataSource.

Все это работает, но DBGrid (второй DataSource) содержит только одну строку значений, котороая соответствует первой (в общем случае активной) строке параметров из первого DataSource (типичное отношение Master-Detail).

Вопрос, как сделать так, что бы DBGrid отображались значения, соответствующии всем строкам кодов из первого DataSet.

Нутром чую, что таким способом это не получтися, но как? Понятно, что для этого надо делать объединение таблиц в запросе во втором pFIBDataSet, но, дело в том, что это противоречит принципиальному моменту: коды занчений должны поставляться независимо от значений (разными pFIBDataSet'ами), т.е. надо в одном запросе получать коды значений (строки из одной таблицы), а во втором отображать значения, в соответствии с этими кодами (т.е. это теже строки, только вместо цифр нормальные названия).

Какие есть пути решения проблемы? Желательно на примерах... ссылки на толковые статьи приветствуются.

Зарание спасибо!
Felan вне форума