Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
ВнизADO ACCESS связанные таблицы просмотр инфо Найти похожие ветки
← →
linox (2010-06-10 15:55) [0]Добрый день. У меня есть такой вопрос:
Есть база данных в Access (Библиотека). В бизе 2-е таблицы связанные между собой (книги и посетители). Подключаю базу к проге.
На форме єсть DBGrid в которм отображается список книг. И нужно добавить кнопку, когда ее нажимаеш должно выводить фамилию посетителя с таблицы "Посетители" у которго находится книга (на которой стоит указатель в DBGrid). И как это сделать?
Я дела так:
showmessage("У посетителя находится книга: "+datasource2.DataSet.FieldValues["nazva"]); - в таком случае
выдает одно и тоже значение для разных книг.
← →
Sergey13 © (2010-06-10 16:18) [1]> [0] linox (10.06.10 15:55)
> когда ее нажимаеш должно выводить фамилию посетителя с таблицы "Посетители"
> Я дела так: showmessage("У посетителя находится книга: "+datasource2.DataSet.FieldValues["nazva"])
Нужно одно, а делаешь другое. Странно по крайней мере.
> выдает одно и тоже значение для разных книг.
Значит у тебя ошибка в 17-ой строке.
← →
linox (2010-06-10 17:13) [2]тоесть да... ноборот
в списке с посетителями .. нужно чтобы выводило книгу
← →
Sergey13 © (2010-06-10 17:44) [3]> [2] linox (10.06.10 17:13)
Значит мало того, что
> В бизе 2-е таблицы связанные между собой
надо еще и в программе их связать. Читай про мастер-детальное соединение.
← →
Anatoly Podgoretsky © (2010-06-10 19:19) [4]> linox (10.06.2010 15:55:00) [0]
Используй соединение.
← →
linox (2010-06-11 00:10) [5]А можно поподробней.. какой компонент использовать?
← →
Виталий Панасенко(дом) (2010-06-11 09:51) [6]можно все те же DBGridы для отображения
← →
Плохиш © (2010-06-11 10:32) [7]
> linox (11.06.10 00:10) [5]
>
> А можно поподробней.. какой компонент использовать?
Те же, что и сейчас, просто надо справку по ним прочитать.
← →
linox (2010-06-11 11:58) [8]про справку понятно.... просто интересно как правильно организовать связь... для правильного отображения
← →
Плохиш © (2010-06-11 12:27) [9]
select <требуемые поля из таблицы книги>, <фамилия посетителя>
from <таблица книги>
left join <таблица посетители> on <критерий посетитель имеет книгу>
и достаточно одного TADODataSet. Поле <фамилия посетителя> можно показывать в гриде или не показывать на усмотрение пользователя.
← →
linox (2010-06-11 12:55) [10]on <критерий посетитель имеет книгу> - можно сдесь поподробней?
← →
12 © (2010-06-11 13:43) [11]неправильно
надо 3 таблицы
<таблица книги>
idbook
namebook
<таблица посетители>
iduser
nameuser
<таблица посетители-книги>
id
iduser
idbook
select <требуемые поля из таблицы книги>, <фамилия посетителя>
from <таблица книги>
left join <таблица посетители-книги> on <таблица книги>.idbook = <таблица посетители-книги>.idbook
left join <таблица посетители> on <таблица посетители>.iduser = <таблица посетители-книги>.iduser
но в A так писать геморно, поэтому все
left join
переписываем на
where
<таблица книги>.idbook = <таблица посетители-книги>.idbook
and <таблица посетители>.iduser = <таблица посетители-книги>.iduser
← →
Anatoly Podgoretsky © (2010-06-11 13:43) [12]> Плохиш (11.06.2010 12:27:09) [9]
Может быть не LEFT, а INNER JOIN
И в связи не "имеет книгу", это в WHERE, a.id=b.id
← →
Anatoly Podgoretsky © (2010-06-11 13:55) [13]> 12 (11.06.2010 13:43:11) [11]
Так правильно, отношение многие ко многом обязательны для библиотеки.
← →
Плохиш © (2010-06-11 14:23) [14]
> linox (11.06.10 12:55) [10]
>
> on <критерий посетитель имеет книгу> - можно сдесь поподробней?
>
Это твоё домашнее задание
> 12 © (11.06.10 13:43) [11]
> <таблица посетители-книги>
> id
> iduser
> idbook
А смысл? Книга не может быть выдана одновременно больше чем одному посетителю.
> Anatoly Podgoretsky © (11.06.10 13:43) [12]
>
> > Плохиш (11.06.2010 12:27:09) [9]
>
> Может быть не LEFT, а INNER JOIN
Так ему, вроде, не только выданные книги показывать надо.
← →
Anatoly Podgoretsky © (2010-06-11 14:38) [15]> Плохиш (11.06.2010 14:23:14) [14]
Книга может быть выдана более чем одному посетителю, посколько обычно более
одного экземпляра.
← →
Плохиш © (2010-06-11 15:02) [16]
> Anatoly Podgoretsky © (11.06.10 14:38) [15]
Вот блин, об этом как-то сразу не подумал.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c