Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
6-1225550596
Andrey_
2008-11-01 17:43
2010.09.05
TIdHTTP


6-1218895407
Twilight91
2008-08-16 18:03
2010.09.05
Как насроить порты в модеме Billion BiPAC 5210S


15-1276031254
Юрий Зотов
2010-06-09 01:07
2010.09.05
Кто знает Висту и семерку - нужна консультация


8-1184912317
__Unknown__
2007-07-20 10:18
2010.09.05
Как без заиканий проиграть звук с микрофона!


15-1276159597
George
2010-06-10 12:46
2010.09.05
Iptables





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