我正在Access中建立一个数据库,以管理我们的化学产品库存并记录谁使用它们。我还希望它显示有关产品的一些常规信息。
每种化学物质都与许多Hazard和Precautionary陈述相关。
我有一个表格“ Hazards”,通过“ ProductNumber”字段链接到表格“ Products”。在“危险”中,有很多“是/否”字段,称为H200,H201,H202 ...,其中的语句为描述。 (我必须创建一个“危害”表和一个“注意事项”表并将其链接到“产品”表,因为Access每张表最多只能有255个字段)
我想要在ProductForm中(显示具有特定ProductNumber的特定产品的信息)是要有一个文本框或一个列表框,或包含所有H-和P-语句的东西,其形式为:
H206:火灾,爆炸或投射危险:减少脱敏剂会增加爆炸的危险
H229:压力容器:如果加热可能会破裂
我认为可以结合使用 Displaying field's description in label or textbox on form 和 https://community.spiceworks.com/topic/429306-access-only-display-true-items-in-report,但我真的不知道从哪里开始。
我也不知道这是否是组织此类数据的最佳方法,因此,如果有更好的方法,请告诉我:)
答案 0 :(得分:2)
数据库设计是一门艺术,是一门科学。数据库架构师获得高薪是有原因的。就像在观看Youtube视频后尝试进行牙科手术一样。
不过,我可以给您一些帮助的指点。首先,您通常只想写入一次数据。您接触数据的次数越少,您的生活就越好。因此,在这种情况下,您将需要一个仅包含Hazzards及其说明的表:
tbl危险:
HazardNumber HazardDescription
H101 Fire hazard
H102 Compression hazard
etc....
由于危险编号是唯一的,因此HazardNumber字段将充当其自己的“键”。如果您有一个非唯一数据表,则应在其中添加一个ID字段,以使其易于引用。
现在您有了产品表。看起来像这样:
tblProducts:
ProductID ProductName Manufacturer Cost
XX302 Some Product ABC Company 750.00
YY110 Another Product XYZ Company 500.00
etc...
这是假定ProductID是唯一的。也就是说,您将永远不会有两种具有相同ID或条形码或用于分类产品的产品。如果您可能有2个具有相同ID的产品,请在此处添加一个ID字段并将其设置为AutoNumber。
最后,您具有“交叉引用”表,其中包含所有产品/危害匹配项:
tblProductHazardCrosswalk:
ID ProductID HazardID
1 XX302 H101
2 YY110 H101
3 YY110 H102
etc...
您在最后一张表上放置了一个ID,因为如果必须删除或编辑一条记录,则说“ Where ID = 20”比“ Where ProductID = XX110 and HazardID = H160”要容易。排队后,您可以使用人行横道表在表格和报表上将危害与产品连接起来。实际上,您可以将一个子表单放到“产品”表单上,并按ProductID进行过滤,并且可以轻松地添加,编辑和删除与产品相关的危害。
永远记住;在领域上,少即是多。不要在表中放置75个字段,也不必在必须继续添加字段的地方创建表。如果您以这种方式创建数据库,那就错了。