Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];

Вниз

Связанные таблицы   Найти похожие ветки 

 
Vitual   (2003-04-16 15:41) [0]

Привет всем! Такой вопрос: есть две таблицы - Книги и Читатели.
На форме два DBGrid. Нужно чтоб при листании таблицы Читатели во втором DBGride отображались книги, которые на руках.Понятно что нужно устанавлвать связь master detail, но хотелось бы чтоб на пальцах объяснили.Я не профи - курсовик пишу.


 
Жук   (2003-04-16 15:42) [1]

А вот мне совсем не "Понятно что нужно устанавлвать связь master detail"... :-(


 
Vitual   (2003-04-16 15:51) [2]

А разве их не надо связывать? Тогда как по другому сделать?


 
Жук   (2003-04-16 15:54) [3]

Я бы рассказал, Johnmеn, будет ругаться...


 
Y   (2003-04-16 15:57) [4]

Почему не 3 таблицы (Читатели, Книги, ВыдачаКниг), а две? :)


 
Vitual   (2003-04-16 16:02) [5]

Я тоже сейчас подумал что надо сделать ещё одну таблицу - "Выдача".
Тогда вопрос: как туда заносить записи из "Книги"?

toЖук
А чего бы не рассказать, для чего тогда эта конфа?


 
Y   (2003-04-16 16:05) [6]

Туда будут заноситься код выданной книги и код Читателя, взявшего эту книгу


 
Vitual   (2003-04-16 16:07) [7]

Это я понял.Примерчик бы какой посмотреть или ссылочку на эту тему.


 
Жук   (2003-04-16 16:08) [8]

Книги(id,name)
Читатели(id,fam,in,ot,...)
Выдача(id,id_kniga,id_reader,ondate)
Примерно такая структура, имхо.


 
Vitual   (2003-04-16 16:17) [9]

А как это реализовать?


 
Oops   (2003-04-16 16:19) [10]

+ надо сдавать книгу,
Я когда делал курсак на ту же тему, делал так
Операция(id,id_kniga,id_reader,ondate,optype)
где optype
-1 - Выдача
1 - Сдавание

Тогда можно легко проверить состояние книги простым суммированием optype по даной книге (select sum(optype)...):
если 0 то в библиотеке
если -1 то на руках


 
Y   (2003-04-16 16:20) [11]

Что - это?
Все равно придется Вам книжку почитать :) ...


 
Johnmen   (2003-04-16 16:20) [12]

>Жук © (16.04.03 15:54)

:))) Не буду, т.к. не люблю этого дела...

>Vitual

Для полноты неплохо бы указать компоненты доступа к аксесовской БД.


 
Vitual   (2003-04-16 16:24) [13]

Ну к примеру - выбираем читателя нажимаем кнопку "Выдать".Открывается таблица "Книги". Выбираем книгу.
До этого места всё понятно. А теперь какой код надо написать, чтобы в таблице "Выдача" прописались данные о книге и читателе?


 
Y   (2003-04-16 16:24) [14]

>Oops © (16.04.03 16:19)
Уж лучше 1 запись - дата выдачи, дата возврата (если пусто, то не сдали книгу)


 
Vitual   (2003-04-16 16:26) [15]

to Johnmen
Есть DataModule, а в нем ADOConnection


 
Жук   (2003-04-16 16:28) [16]

Этого мало :-)


 
Y   (2003-04-16 16:33) [17]

Можно вручную - открыть табл. Выдача, добавить запись, заполнить поля, сохранить новую запись. Примерно так:
Table.Open; Table.Append;
Table.FieldByName("Data_Vidachi").AsDateTime:=Date; Table.FieldByName("Book_Id").AsInteger:=BookTable.FieldByName("Id").AsInteger; ...
Table.Post;

- если, например, через BDE работать

Можно запрос написать на SQL


 
Vitual   (2003-04-16 16:36) [18]

Что значит мало? Подключаемся через ADOConnection. На каждую таблицу, а у меня их семь(включая справочники) DataSource с ADOTable. Все уже работает.Новые книги и читатели добавляются и редактируются. Осталось организовать выдачу. КАК?


 
Tomkat   (2003-04-16 16:37) [19]

типа того ?

SELECT
o.data //дата выдачи книги
b.name //наименование книги
u.name //имя юзера книги
FROM
books b //книги
,users u //юзеры
,orders o //выдачи книг
WHERE
u.id=o.id_user
and b.id=o.id_book


 
Y   (2003-04-16 16:45) [20]

Надо же, только недавно было 2 табл., потом 3, а теперь уже 7 :)

ADOQuery с параметрами:
insert into Vidacha(список полей) values (список значений)


 
Vitual   (2003-04-16 16:45) [21]

Это я как понимаю отбираются книги и юзеры у которых они на руках.А сначала книги надо выдать.


 
Tomkat   (2003-04-16 16:49) [22]


> А сначала книги надо выдать.

Тебе сначала нада заполнить два справочника - КНИГИ и ПОЛЬЗОВАТЕЛИ,
а потом ОПЕРАЦИИ по мере выдачи/возврата


 
Vitual   (2003-04-16 16:54) [23]

To Tomkat
Всё равно не врубаюсь, можно поподробнее?


 
Y   (2003-04-16 17:11) [24]

ADOQuery1, св-во SQL

insert into Vidacha (Field1, Field2 ...) values (:Parameter1, :Parameter2 ...)
-------------------------------
В программе - допустим, обработчик кнопки Выдать:

ADOQuery1.Parameters.ParamValues["Parameter1"] := ADOTableBooks.FieldByName("Book_Id").AsInteger;
ADOQuery1.Parameters.ParamValues["Parameter2"]:= ...;
...
ADOQuery1.ExecSQL;



 
Vitual   (2003-04-16 17:11) [25]

>Y

Примерчик бы какой завалящий по "ADOQuery с параметрами"


 
Vitual   (2003-04-16 17:15) [26]

>Y
Спасибо огромное! Завтра попробую - рабдень кончается.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
3-12643
K_AV
2003-04-16 07:24
2003.05.05
В базе ACCESS


6-12855
chum
2003-03-10 16:30
2003.05.05
Использование HttpQueryInfo


1-12709
Андре
2003-04-23 11:56
2003.05.05
Обновление программы


9-12591
CyB3r
2002-09-15 22:28
2003.05.05
Определение направления в движке


14-12882
Вадим
2003-04-17 03:32
2003.05.05
Интерпретатор





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