0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
1 | |
Извлечение данных из связанных таблиц12.07.2010, 16:45. Показов 3612. Ответов 16
Метки нет (Все метки)
Всем привет. Опыта у меня не сильно много, поэтому прошу сразу не издеваться))
Дело такое. Нужно вытащить из двух связанных таблиц записи. Ну, например, первая таблица поля (id и текст), вторая таблица тоже (id2, текст2). Таблицы связываются по этим id. Задача как можно проще вытащить из двух таблиц ТЕКСТы и отобразить в двух DBMemo. Можно конечно для каждой таблицы создать свой DataSource, но хотелось бы чтобы DBNavigator этим всем синхронно управлял. Заранее спасибо за любые предложения!
0
|
12.07.2010, 16:45 | |
Ответы с готовыми решениями:
16
Добавление данных в несколько связанных таблиц и просмотр этих данных на одной форме Удаление данных из связанных таблиц Удаление связанных данных из таблиц Просмотр данных из двух связанных таблиц |
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
12.07.2010, 17:25 | 2 |
Вопрос требует уточнения.
Если это действительно связанные таблицы, то необходимо знать тип связи. Напимер таблицы могуб быть связаны 1:1 (один к одному). То есть каждой записи из первой таблицы соответствует только одна запись из второй. Таблицы могут быть связаны по типу 1:N (одтн ко многим). При этом каждой записи первой таблицы может соответсвовать некоторое множество N (в том числе и пустое) записей второй таблицы. Может иметь место и другой тип связи, но об этом сейчас говорить не будем. Так, вот, надо знать, какой вид связи Вас интересует. Необходимо ли извлекать записи таблицы 1, которым в таблице 2 ничего не соответствует.
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
12.07.2010, 18:10 [ТС] | 3 |
ну тут дело в том, что база на postgresql и таблицы жестко не связаны, но при добавлении/обновлении/удалении срабатывают триггеры на серверной стороне и обновляют связи. но нас это сейчас мало волнует. нам надо как бы сопоставить два id из разных таблиц и вывести соответствующие поля. Чтоб было понятнее - одна из таблиц это справочник. Ну, т.е. id в первой таблице является как бы ссылкой на ТЕКСТ из второй таблицы. И нам нужно взять вывести текст из 1 таблицы в первый мемо, взять оттуда id, сопоставить с id из второй таблицы и вывести во второй мемо текст из второй таблицы.
Насчет типа связей все сложно. вообще, связи разные (полей ID много, я привел один для простоты), есть все три случая, даже многие-ко-многим. но мне сейчас каркас надо сделать, поэтому можно считать что связи один-к-одному. На самом деле все просто, может я не совсем понятно выражаюсь, мне кажется делов на минуту. Есть таблица с полем id, но на форму id же не выведешь, нужно вместо него значение, которое хранится в другой таблице подставить...
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
||||||
12.07.2010, 18:47 | 4 | |||||
Попробуй так
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
12.07.2010, 20:00 [ТС] | 5 |
Ну свой обработчик написать не проблема, мне интересно стандартными инструментами обойтись нельзя? Просто чтоб дбнавигатор листал записи, а это само подставлялось...
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 07:23 | 6 |
Да причем здесь обработчик. Я тебе привел текст SQL. Пропиши его в DataSet и получишь набор с этими полями. А там хоть навигатором, хоть чем листай данные смотри и наслаждайся
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 14:45 [ТС] | 7 |
если я правильно понял, этот запрос надо вписать в свойство DataSet DataSourсe'а? Если так, то ничего не получается - выводит ошибку "Invalid property value"
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 14:52 | 8 |
Начнем сначала. Какие средства доступа к данным ты используешь. Другими словами какие у тебя на форме компоненты, с помощью которых ты просматириваешь данный, находящиеся в БД
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 15:00 [ТС] | 9 |
у меня на форме DataSource, DBNavigator и Table.
Нужно теперь много много DBEdit'ов, чтобы они отображали поля базы
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 15:12 | 10 |
Если это компонента Table из закладки BDE, то она для формирования наборов данных из нескольких связанных таблиц не годится. С ее помощью можно обрабатывать данные, содержащиеся в одной таблице. Тебе нужно использовать TQuery (если я угадал и ты действительно используешь компоненты доступа BDE). TQuery имеет свойство SQL. Там и необходимо указать текст селекта.
Кстати, а СУБД какую используешь?
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 15:13 [ТС] | 11 |
да, компоненты из BDE. субд postgre
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 15:16 | 12 |
Плнятно. PosrGre - это твой выбор или настоятельная необходимость
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 15:22 [ТС] | 13 |
необходимость((
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 15:29 | 14 |
Если необходимость, то советов по поводу выбора СУБД давать не буду.
По поводу компонент доступа к данным. Вопрос на нашем форуме обсуждался много раз. Если ты начинаешь работать с БД прими во внимание следующее. Библиотека BDE разрабатывалась давно и предназначена в основном для БД, работающих в технологии "файл - сервер". Можно, конечно, работать и с СУБД клиент - серверными, но при этом рано или поздно упрешься в ограничения BDE. Поэтому присмотрись к другим средствам доступа к БД.
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 15:32 [ТС] | 15 |
может что посоветуешь?
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
13.07.2010, 15:40 | 16 |
Тут мне советовать сложно. Я давно и плотно подсел на компоненты FIBPlus, но они работают только с ограниченным набором СУБД (FireBird, Interbase, Yafil)
Присмотрись к компонентам ADO. По моим наблюдениям они пользуются наибольшей популярностью. Я их повехностно посмотрел и как-то не увидел там важного, на мой взгляд функционала явного управления транзакциями. Но это, м.б. от поверхностности.
0
|
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 17
|
|
13.07.2010, 15:55 [ТС] | 17 |
ок, большое спасибо за помощь!
0
|
13.07.2010, 15:55 | |
13.07.2010, 15:55 | |
Помогаю со студенческими работами здесь
17
Вывод данных из связанных таблиц в DBGrid Создание связанных таблиц и добавление в них данных (mySQL) Вывод данных связанных таблиц в одном DBGrid и без SQL Вывод в DBGrid данных из связанных таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |