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

Вниз

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

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

Наверх




Память: 0.52 MB
Время: 0.018 c
3-12632
Suharew
2003-04-07 19:45
2003.05.05
Paradox.


14-12936
slaj
2003-04-18 12:17
2003.05.05
Проблема закрытия доступа на ПК отдельного юзера в Win2000 при вк


14-12906
alxx
2003-04-14 15:19
2003.05.05
Жутко извиняюсь, но вакансия.


1-12690
ДмитрийК
2003-04-22 23:26
2003.05.05
Можно ли в программе получить информацию о стеке вызоаов функций?


3-12650
sapsi
2003-04-08 13:49
2003.05.05
Потеря связей в таблицах