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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
4-1239652712
Unlocker
2009-04-13 23:58
2010.09.05
Запуск под админом


2-1276157798
novichek
2010-06-10 12:16
2010.09.05
работа с БД


2-1275991560
Cannon
2010-06-08 14:06
2010.09.05
Авторизация


2-1276061538
Delphist2
2010-06-09 09:32
2010.09.05
работа с excel


2-1275975584
программер
2010-06-08 09:39
2010.09.05
500 пикселей размесить в формате 4:3