Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 21.10.2008, 22:43   #1
Arkuz
Мозголом
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Адрес: Ставропольский край
Сообщений: 466
Репутация: 24

icq: 398608504
По умолчанию БД библиотека

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

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

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

Ну пока с вопросами всё...
__________________
В каждом из нас спит Гений, и с каждым днём всё крепче!
*** EVERYBODY LIES ***
Arkuz вне форума   Ответить с цитированием
Старый 21.10.2008, 22:44   #2
Arkuz
Мозголом
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Адрес: Ставропольский край
Сообщений: 466
Репутация: 24

icq: 398608504
По умолчанию

Вот моя БД...
Вложения
Тип файла: rar db.rar (37.1 Кб, 328 просмотров)
__________________
В каждом из нас спит Гений, и с каждым днём всё крепче!
*** EVERYBODY LIES ***
Arkuz вне форума   Ответить с цитированием
Старый 21.10.2008, 23:28   #3
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,198
Репутация: 2661
По умолчанию

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
Репутация: 424
По умолчанию

Если так как сделано т.е на 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
Репутация: 424
По умолчанию

Цитата:
Сообщение от 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,198
Репутация: 2661
По умолчанию

Цитата:
Только если честно смысла этого действия не понимаю. Эта дата должна отображать когда человек реально принёс книгу? а в дате возврата когда должен был принести? Если так то как же вы узнаете какую книгу уже сдали а какая на руках ? в общем тут не понял.
Я тоже этого не понял. Но, видимо, у автора свои соображения.
Вот что я забыл еще сказать.
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
Репутация: 424
По умолчанию

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

icq: 398608504
По умолчанию

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

Цитата:
Сообщение от 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
Адрес: Ставропольский край
Сообщений: 466
Репутация: 24

icq: 398608504
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


18:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru