![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Связанные таблицы [D5, Access]
Vitual © (2003-04-16 15:41:00)Привет всем! Такой вопрос: есть две таблицы - Книги и Читатели.
На форме два DBGrid. Нужно чтоб при листании таблицы Читатели во втором DBGride отображались книги, которые на руках.Понятно что нужно устанавлвать связь master detail, но хотелось бы чтоб на пальцах объяснили.Я не профи - курсовик пишу.
Vitual (2003-04-16 17:15:00) [1]>Y
Спасибо огромное! Завтра попробую - рабдень кончается.
Vitual (2003-04-16 17:11:00) [2]>Y
Примерчик бы какой завалящий по "ADOQuery с параметрами"
Y (2003-04-16 17:11:00) [3]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 16:54:00) [4]To Tomkat
Всё равно не врубаюсь, можно поподробнее?
Tomkat (2003-04-16 16:49:00) [5]
> А сначала книги надо выдать.
Тебе сначала нада заполнить два справочника - КНИГИ и ПОЛЬЗОВАТЕЛИ,
а потом ОПЕРАЦИИ по мере выдачи/возврата
Vitual (2003-04-16 16:45:00) [6]Это я как понимаю отбираются книги и юзеры у которых они на руках.А сначала книги надо выдать.
Y (2003-04-16 16:45:00) [7]Надо же, только недавно было 2 табл., потом 3, а теперь уже 7 :)
ADOQuery с параметрами:
insert into Vidacha(список полей) values (список значений)
Tomkat (2003-04-16 16:37:00) [8]типа того ?
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
Vitual (2003-04-16 16:36:00) [9]Что значит мало? Подключаемся через ADOConnection. На каждую таблицу, а у меня их семь(включая справочники) DataSource с ADOTable. Все уже работает.Новые книги и читатели добавляются и редактируются. Осталось организовать выдачу. КАК?
Y (2003-04-16 16:33:00) [10]Можно вручную - открыть табл. Выдача, добавить запись, заполнить поля, сохранить новую запись. Примерно так:
Table.Open; Table.Append;
Table.FieldByName("Data_Vidachi").AsDateTime:=Date; Table.FieldByName("Book_Id").AsInteger:=BookTable.FieldByName("Id").AsInteger; ...
Table.Post;
- если, например, через BDE работать
Можно запрос написать на SQL
Жук (2003-04-16 16:28:00) [11]Этого мало :-)
Vitual (2003-04-16 16:26:00) [12]to Johnmen
Есть DataModule, а в нем ADOConnection
Y (2003-04-16 16:24:00) [13]>Oops © (16.04.03 16:19)
Уж лучше 1 запись - дата выдачи, дата возврата (если пусто, то не сдали книгу)
Vitual (2003-04-16 16:24:00) [14]Ну к примеру - выбираем читателя нажимаем кнопку "Выдать".Открывается таблица "Книги". Выбираем книгу.
До этого места всё понятно. А теперь какой код надо написать, чтобы в таблице "Выдача" прописались данные о книге и читателе?
Johnmen (2003-04-16 16:20:00) [15]>Жук © (16.04.03 15:54)
:))) Не буду, т.к. не люблю этого дела...
>Vitual
Для полноты неплохо бы указать компоненты доступа к аксесовской БД.
Y (2003-04-16 16:20:00) [16]Что - это?
Все равно придется Вам книжку почитать :) ...
Oops (2003-04-16 16:19:00) [17]+ надо сдавать книгу,
Я когда делал курсак на ту же тему, делал так
Операция(id,id_kniga,id_reader,ondate,optype)
где optype
-1 - Выдача
1 - Сдавание
Тогда можно легко проверить состояние книги простым суммированием optype по даной книге (select sum(optype)...):
если 0 то в библиотеке
если -1 то на руках
Vitual (2003-04-16 16:17:00) [18]А как это реализовать?
Жук (2003-04-16 16:08:00) [19]Книги(id,name)
Читатели(id,fam,in,ot,...)
Выдача(id,id_kniga,id_reader,ondate)
Примерно такая структура, имхо.
Vitual (2003-04-16 16:07:00) [20]Это я понял.Примерчик бы какой посмотреть или ссылочку на эту тему.