Форум: "Базы";
Текущий архив: 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