Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2008, 22:43   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию БД библиотека

Доброго времени суток.
Разбирался я долго с базой в Акцессе (отдельное спасибо mihali4), начал делать приложение которое управляет БД(я новичок в этом деле, 1 раз делаю). Вроде главную часть сделал. Осталось организовать запросы и некоторые детали уточнить.

1. Помогите сделать так, чтобы при запуске приложения во все поля атрибута DateOfReal из таблицы Distribution заносилась текущая дата.

2. И как сделать, чтобы при занесении книги в таблицу Distr, её нельзя было занести другому читателю? Ну т.е. исключить выдачу одной и той же книги 2 или более читателей.

Ну пока с вопросами всё...
Arkuz вне форума Ответить с цитированием
Старый 21.10.2008, 22:44   #2
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Вот моя БД...
Вложения
Тип файла: rar db.rar (37.1 Кб, 366 просмотров)
Arkuz вне форума Ответить с цитированием
Старый 21.10.2008, 23:28   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

1. Что же тут сложного?
Код:
procedure TMainForm.FormCreate(Sender: TObject);
begin
DataModule2.ADOQuery1.SQL.Text:='update distribution set dateofreal='+QuotedStr(DateToStr(now));
DataModule2.ADOQuery1.ExecSQL;
end;
2. А если несколько экземпяров книги в наличии?
Введите в таблицу книг еще 2 поля: количество экземпяров всего на учете AllEx и количество экземпляров, доступных к выдаче DostEx (уменьшается при каждой выдаче и увеличивается при возврате книги). А список книг, доступных к выдаче вообще, получите выборкой по условию DostEx>0.
mihali4 вне форума Ответить с цитированием
Старый 22.10.2008, 00:05   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Если так как сделано т.е на AdoTable то чтото типо этого

Код:
datamodule2.Distrib.First;
while Not datamodule2.Distrib.Eof do
begin
datamodule2.Distrib.edit;
datamodule2.Distrib.FieldByName('DateOfReal').AsDateTime:=Date;
datamodule2.Distrib.Post;
datamodule2.Distrib.Next;
end;
Но лучше сразу с запросами тренироватся с таблицами всё просто если уж сильно потребуется то разобратся недолго. Я вот наклепал тут BD Paradox все датасеты TTable Приложение постоянно растёт и усложняется, надо уже несколько клиентов теперь делать. Жуть в общем. Сижу учу SQL

Только если честно смысла этого действия не понимаю. Эта дата должна отображать когда человек реально принёс книгу? а в дате возврата когда должен был принести? Если так то как же вы узнаете какую книгу уже сдали а какая на руках ? в общем тут не понял.
Ну и п. 2) от этого зависит как раз.

Последний раз редактировалось vovk; 22.10.2008 в 00:33.
vovk вне форума Ответить с цитированием
Старый 22.10.2008, 00:14   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
1. Что же тут сложного?
Код:
procedure TMainForm.FormCreate(Sender: TObject);
begin
DataModule2.ADOQuery1.SQL.Text:='update distribution set dateofreal='+QuotedStr(DateToStr(now));
DataModule2.ADOQuery1.ExecSQL;
end;
2. А если несколько экземпяров книги в наличии?
Введите в таблицу книг еще 2 поля: количество экземпяров всего на учете AllEx и количество экземпляров, доступных к выдаче DostEx (уменьшается при каждой выдаче и увеличивается при возврате книги). А список книг, доступных к выдаче вообще, получите выборкой по условию DostEx>0.
Если так то мне кажется одного поля хватит DostEx. Илм может я недопонял функцию поля AllEx ?
vovk вне форума Ответить с цитированием
Старый 22.10.2008, 00:17   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Только если честно смысла этого действия не понимаю. Эта дата должна отображать когда человек реально принёс книгу? а в дате возврата когда должен был принести? Если так то как же вы узнаете какую книгу уже сдали а какая на руках ? в общем тут не понял.
Я тоже этого не понял. Но, видимо, у автора свои соображения.
Вот что я забыл еще сказать.
1. В файле проекта первым должно идти создание датамодуля, а уж потом - главной формы приложения.
2. Если хотите привыкнуть к грамотному стилю программирования, то там же больше не должны создаваться НИКАКИЕ вспомогательные формы. Они ДОЛЖНЫ создаваться динамически, например:
Код:
procedure TMainForm.EditBtnClick(Sender: TObject);
begin
 //создаем EditForm,показываем модально
EditForm:=TEditForm.Create(self); 
//заголовок ставим в Редактирование
EditForm.Caption:='Редактирование';// редактирование чего? Или юзер должен сам 
догадаться или помнить, что он редактирует?
//тут же можете задать координаты для созданного окна и все другое, что обычно
прописывается в событии OnCreate формы
EditForm.ShowModal;
EditForm.Free;//освобождаем память
end;
Зачем они все время будут толпой висеть в памяти, если их могут и вообще не вызвать ни разу в текущем сеансе работы? Экономьте память...

З.Ы. И еще. Чтобы данные в дбгридах выглядели поприличнее, явно внесите нужные поля в дбгрид (зачем библиотекарю видеть идентификатор записи?) и используйте свойство Width для каждого поля с учетом ширины полосы прокрутки. Обычно полезно также сделать опцию ColumnResize:=False. Ширину грида делайте такой, чтобы наиболее информативные поля помещались полностью, а второстепенные или очень длинные всегда можно вынести в виде дбэдитов под гридом.
Да, а на главной форме я бы кнопки назвал не "Добавить", а "Выдача книги", и не "Удалить", а "Возврат книги"...
Цитата:
Если так то мне кажется одного поля хватит DostEx. Илм может я недопонял функцию поля AllEx ?
Да вы не расстраивайтесь уж так... Бывает...
Исходя из чего будете вычислять DostEx? На бумажке писать будете, сколько первых томов ПСС стоит на учете?

Последний раз редактировалось mihali4; 22.10.2008 в 00:54.
mihali4 вне форума Ответить с цитированием
Старый 22.10.2008, 00:25   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Да вы не расстраивайтесь уж так... Бывает...
Исходя из чего будете вычислять DostEx? На бумажке писать будете, сколько первых томов ПСС стоит на учете?
Это называется стереотип мышления принял за аксиому (читать додумал) что, библиотека домашняя и книг естественно по одной) В общем понял
vovk вне форума Ответить с цитированием
Старый 22.10.2008, 00:31   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А список книг, доступных к выдаче вообще, получите выборкой по условию DostEx>0.
А как связать выборку с DBLookupComboBox1?
Arkuz вне форума Ответить с цитированием
Старый 22.10.2008, 00:36   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
А как связать выборку с DBLookupComboBox1?
Её не надо связывать, надо чтоб в датасете с которого берётся список книг (в данном случае таблица Book) были только записи книг ктороые есть.
Если компонент останется AdoTable и всётаки поля добавятся то фильтр по полю DostEx.
Если на AdoQuery то запрос вида
Код:
Select BookID, Name From Books where DostEx>0

Последний раз редактировалось vovk; 22.10.2008 в 00:42.
vovk вне форума Ответить с цитированием
Старый 22.10.2008, 01:03   #10
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Если хотите привыкнуть к грамотному стилю программирования, то там же больше не должны создаваться НИКАКИЕ вспомогательные формы. Они ДОЛЖНЫ создаваться динамически,
Я учусь программировать, я знаю, что у меня зря 3 формы висят... Как создать динамически форму я представляю, но нужно ещё создать динамически кучу компонентов, расположить их и работать с ними, а это для меня пока высший пилотаж...
Arkuz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
библиотека Free Internet Titan123 Свободное общение 7 20.08.2008 15:19
Библиотека для Delphi Irat Помощь студентам 2 12.02.2008 20:13
Моя библиотека mochaliviy Свободное общение 3 11.01.2008 13:23
библиотека TK и Ruby kpp2 Ruby 5 22.12.2007 02:02
Стандартная библиотека... Sota Общие вопросы C/C++ 3 17.07.2007 19:18