我目前有一个由三个表组成的Access 2013数据库,在三个单独的表中包含以下字符串字段:
alert_id (primary key)
ID (primary key),
alert_id,
email_address,
date_added
ID (primary key),
alert_id,
phone_number,
date_added
我目前将关系定义为一对多关系,从alert_id
表中的主键alert
连接到两个中的非主键alert_id
字段email
和phone
表。
我将输入此表的数据通常包含一个警报ID,该ID与多个电子邮件地址和/或电话号码相关联。我会在一天之内分几批收到新信息,并相应地输入。
我有一个输入表单,允许一次将alert_id
,一个email_address
和一个phone_number
输入数据库。我还有另一个输入表单,使用子表单,允许在alert_id
和email_address
字段中输入单个phone_number
以及多个条目。
我遇到的问题是,我经常需要在一天内输入email_address
和phone_number
个特定alert_id
的数据,然后第二天使用相同的alert_id
输入更多电子邮件和电话数据。表关系当前的结构方式,alert_id
是主键,我在尝试将现有alert_id
输入表单字段时会遇到困难。
有没有办法对表单进行编码,这样就不会出现问题?我认为当前的结构已经正确规范化了,问题更多的是我正在做的形式。但是,如果数据库的结构不适合使用,我也愿意改变它。
非常感谢任何建议!
答案 0 :(得分:0)
您应该从表单中删除alert.alert_ID
。用户不应该直接指定此字段,并且就像您已经布置的那样,这会导致问题。
相反,请使用控制源等于您的表alert
的组合框,并让用户选择将alert_ID
添加电子邮件地址或电话号码。
如果这是您的组合框中尚未指定的全新alert_ID
,请在其旁边添加一个命令按钮,该按钮将在您的alert_ID
表格中创建新的alert
。还可以使用命令按钮重新查询组合框,以便立即显示新创建的alert_ID
(甚至让宏为它们选择新的alert_ID
)。这应该可以防止主键中重复值的错误。
我没有看到表的结构方式存在任何问题,但这假设用户将知道如何在没有名称或说明字段的情况下解释alert_ID
。错误是由于构造表单的方式,而不是数据库的底层结构。