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

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Access
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 21.02.2019, 21:02   #1
artems67
Форумчанин
 
Регистрация: 17.11.2015
Адрес: Смоленск
Сообщений: 59
Репутация: 10
Печаль Не получается написать макрос для БД

Добрый день,

Есть база данных на MS Access 2007 под названием "Учет книг на кафедрах".

Внизу небольшое описание БД + Прикреплю саму БД и схему данных.

Предметная область – база данных по книгам кафедры. Необходимо вести учет, – какие книги, по какой теме и где находятся. Разработанная структура данных имеет 7 таблиц. Ключевыми из них являются таблицы: «Книги», «Экземпляры», «Размещение книг по аудиториям».
В таблице «Книги» хранятся данные о книгах, а именно – это название книги, жанр, год издания. Уникальным ключом выступает ISBN. В таблице «Экземпляры» каждой книге присваивается свой уникальный инвентарный номер, а так же в примечаниях указывается характерные черты книжного экземпляра, которому присваивается инвентарный номер, например, это может быть указание о каких-то характерных дефектах книги.
Далее книги, с присвоенным инвентарным номером, распределяют по аудиториям кафедр с указанием даты поступления. Эта информация хранится в таблице «Размещение книг по аудиториям». Номер аудитории берется из таблицы «Помещения», где указано название аудитории, номер кафедры, к которой эта аудитория приписана, а также указывается ФИО ответственного за аудиторию и его номер телефона.
Информация по кафедрам хранится также в отдельной таблице под названием «Кафедры», где указывается уникальный номер кафедры, её название, а также ФИО и номер телефона заведующего кафедрой.
Две оставшиеся таблицы «Авторы» и «Авторы книг» хранят информацию об авторах, так как книги могут быть написаны совместно несколькими авторами, фамилии которых могут повторяться.


Собственно задача состоит в следующем, в БД есть простая форма "1 экземпляр в помещении". Форма связана с таблицей "Размещение книг по аудиториям".

Так вот нужно написать для неё макрос, чтобы соблюдалось проверка условия -> "В любом помещении КАЖДАЯ КНИГА должна быть в 1-м экземпляре."

То есть, например, в этой форме человек пытается добавить новую запись с уникальным инвентарным номером в помещение, где уже есть экземпляр так же с уникальным инвентарным номером и оба экземпляра это одна и та же книга с уникальным ISBN (ключ).

Соответственно в этом случае должно появляться сообщение, оповещающая о том что 1 экземпляр такой книги уже есть в этом помещении. А запись не должна добавляться в таблицу.

Ну, а иначе всё ок.

Вот прошу помощи. Так как человеку уже надо завтра показать результат. А я в БД не силён шибко.

Пытался что-то придумать с командой DCount, но не выходит.

Надеюсь кто-то откликнется и поможет. Хотя бы команды какие подсказать или на ход мыслей верный направить.
Изображения
 
Вложения
Тип файла: zip Учет книг на кафедрах.zip (172.9 Кб, 7 просмотров)
artems67 вне форума   Ответить с цитированием
Старый 22.02.2019, 10:37   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,911
Репутация: 2242
По умолчанию

1. строим ЗАПРОС (View)
1.1. начинаем(from ) с размещения книг
1.2. узнаем (присоединяем(inner join ) какие ЭКЗЕМПЛЯРЫ там есть
1.3. узнаем экземпляры каких КНИГИ
1.4. узнаем в каких ПОМЕЩЕНИЯ
1.5. РЕШАЕМ (выбираем(where ) нужное нам помещение и книгу
1.6. СЧИТАЕМ(count) сколько их там

должно получиться что-то типа этого
Код:
select count(*) --1.6
from размещение  --1.1
inner join экземпляр on ...  --1.2
inner join книги on ...  --1.3
inner join помещения on ...  --1.4

where isbn =.... --нужная книга --1.5
  and назвауд = ... --нужная аудитория
ну еще нужны скобки по правилам Access
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается написать программу. Sandra_Miomi Visual C++ 2 23.03.2012 23:08
Не получается написать код hello19 Visual C++ 1 04.08.2011 13:52
не получается написать прогу serga71 Паскаль 0 17.03.2011 06:44
Не получается использовать макрос GetStr(Assembler) depocomp Помощь студентам 8 16.05.2009 15:12
Хочу написать макрос, не получается. Прошу помощи kzld Microsoft Office Excel 8 14.04.2009 09:51


22:33.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru