Доступ: отображение списка (логических) имен и описаний полей, если их значение истинно

Я создаю базу данных в Access, чтобы управлять нашим запасом химических продуктов и вести учет того, кто их использует. Я также хочу показать некоторую общую информацию о продуктах.

Каждое химическое вещество связано с рядом утверждений Опасность и Меры предосторожности.

У меня есть таблица «Опасности», связанная с таблицей «Продукты» через поле «ProductNumber». В разделе «Опасности» есть много полей типа «Да / Нет» с именами H200, H201, H202, ... с указанием в качестве описания. (Мне пришлось создать таблицу «Опасности» и «Меры предосторожности» и связать ее с таблицей «Продукты», поскольку в Access есть ограничение в 255 полей на таблицу)

Я хочу, чтобы в моей ProductForm (отображающей информацию для конкретного продукта с определенным ProductNumber) было текстовое поле или список или что-то, содержащее все H- и P-утверждения, которые верны в форме:

H206: Опасность возгорания, взрыва или разбрасывания: повышенный риск взрыва при уменьшении количества десенсибилизирующего агента
H229: Емкость под давлением: при нагревании может произойти взрыв.

Я думаю, что это можно сделать, используя комбинацию Отображение описания поля в метке или текстовом поле формы и https://community.spiceworks.com/topic/429306-access-only-display-true-items-in-report, но я действительно не знаю, с чего начать.

Я также не знаю, лучший ли это способ организовать такие данные, поэтому, если есть лучший способ, дайте мне знать :)

0
0
76
1

Ответы 1

Дизайн баз данных - это искусство в сочетании с наукой. Есть причина, по которой архитекторам баз данных платят хорошие деньги. Это похоже на попытку заняться стоматологией после просмотра видео на Youtube.

Однако я могу дать вам несколько советов, которые помогут. Прежде всего, вы обычно хотите записать данные только один раз. Чем меньше вам придется касаться данных, тем лучше вам будет. Итак, в этом случае вам понадобится таблица, в которой нет ничего, кроме опасностей и их описаний:

tblОпасности:

HazardNumber    HazardDescription
H101            Fire hazard
H102            Compression hazard
etc....

Поскольку номера опасностей уникальны, поле HazardNumber будет действовать как его собственный «ключ». Если у вас есть таблица с неуникальными данными, вам следует добавить в нее поле идентификатора, чтобы упростить обращение.

Теперь у вас есть таблица продуктов. Это выглядело бы примерно так:

Продукция:

ProductID      ProductName        Manufacturer     Cost
XX302          Some Product       ABC Company      750.00
YY110          Another Product    XYZ Company      500.00
etc...

Предполагается, что ProductID уникален. То есть у вас никогда не будет двух продуктов с одинаковым идентификатором, штрих-кодом или чем-то еще, что вы используете для каталогизации своих продуктов. Если у вас может быть 2 продукта с одинаковым идентификатором, добавьте сюда поле идентификатора и установите для него значение AutoNumber.

Наконец, у вас есть таблица «перекрестных ссылок», которая содержит все совпадения продукта / опасности:

tblProductHazardПереход:

ID      ProductID        HazardID
1       XX302            H101
2       YY110            H101
3       YY110            H102
etc...

Вы помещаете идентификатор в последнюю таблицу, потому что, если вам когда-либо придется удалить или отредактировать запись, легче сказать «Где ID = 20», чем «Где ProductID = XX110 и HazardID = H160». После этого вы можете использовать таблицу переходов для присоединения опасностей к продуктам как в формах, так и в отчетах. Фактически, вы можете поместить подчиненную форму в форму «Продукты», которая фильтруется по ProductID, и вы можете легко добавлять, редактировать и удалять опасности, связанные с вашими продуктами.

Всегда помни; Когда дело доходит до полей, меньше значит больше. Не помещайте 75 полей в таблицу и не создавайте таблицу, в которую вам нужно постоянно добавлять поля. Если вы создаете свою базу данных таким образом, вы делаете это неправильно.

Спасибо, что нашли время написать все это. Использование третьей таблицы «перекрестных ссылок» действительно значительно упростило задачу!

titto 13.08.2018 11:02

Другие вопросы по теме