Forms 将连接表和查找表与基本Access数据库集成

Forms 将连接表和查找表与基本Access数据库集成,forms,ms-access-2007,lookup-tables,junction-table,Forms,Ms Access 2007,Lookup Tables,Junction Table,我有一个简单的数据库,存储客户的姓名、城市和州。我在这两张新桌子上加了一张。一个是用于描述车型的查找表,第二个是用于设置一个或多个具有客户记录的车型的连接表 以下是截至目前的关系布局: 和每个表的数据表cust\u id和model\u id是自动递增列 人口统计数据 查找\u模型 交叉口_模型 使用脚本语言MySQL和HTML,我可以在几分钟内快速生成一个完整的表单。我在弄清楚Access 2007是如何做到这一点上有点困难 我需要的两个特性是 编辑/向查找表添加项目的能力 能够添加新

我有一个简单的数据库,存储客户的姓名、城市和州。我在这两张新桌子上加了一张。一个是用于描述车型的查找表,第二个是用于设置一个或多个具有客户记录的车型的连接表

以下是截至目前的关系布局:

和每个表的数据表
cust\u id
model\u id
是自动递增列

人口统计数据

查找\u模型

交叉口_模型

使用脚本语言MySQL和HTML,我可以在几分钟内快速生成一个完整的表单。我在弄清楚Access 2007是如何做到这一点上有点困难

我需要的两个特性是

  • 编辑/向查找表添加项目的能力
  • 能够添加新的客户记录,包括从查找表中找到的车辆中进行选择,同时维护主键关系 例:

    “玛丽·简”拥有一辆福特平托和达森510。当我添加她的信息时 对于要创建的表单,她的客户id将是5,两个新的 条目将显示在连接表中,其客户id为:2 (福特)和5(达特桑)

    在Access 2007中是否有一种相对轻松的方式来设置此表单

    编辑:到目前为止,这就是我一直努力做到的。此子窗体列出了正确的模型/客户关联,但我希望显示一个组合框,其中只显示模型描述(而不是模型id)

    在这种情况下,包含“子表单”的表单将很好地为您服务

    • 您可以创建名为“所有者”的表单,该表单绑定到[demographics]表,您可以在该表中添加/编辑所有者信息(姓名、地址等)

    • 您可以创建一个名为“Cars\u Owned\u subform”的“continuous forms”表单,该表单绑定到[junction\u model]表。该表单将包含一个组合框,其行源为[lookup_model]表,显示[model_desc]并返回[model_id]

    • 然后,您可以使用“子窗体向导”将子窗体控件添加到“所有者”表中,它将帮助您根据[cust_id]将子窗体链接到其父窗体。然后,当您从一个车主移动到下一个车主时,他们的汽车将在子表单中自动更新,如果您在子表单中添加新汽车,它将自动与当前显示其记录的车主的[cust_id]关联

    至于编辑查找表,您可以非常轻松地创建一个简单的表单来编辑[lookup_model]表

    编辑:问题更新 要使组合框显示[model_desc]并返回[model_id],您需要让组合框“显示”两列,其中第一列的宽度为零。也就是说,组合框的格式属性应该包括如下值

    列计数:2
    列宽:0英寸1.3646英寸

    …并且数据属性应包括以下值

    行源:查找\u模型
    绑定列:1

    最终结果如下所示:

    “设计”视图中的子窗体仅为:


    我想组合框现在可以用了。但它只显示一个选定的项目。我必须使用数据表视图来显示junction_模型的所有内容,但这里我只看到ID。是否有更好的方式以人类可读的形式显示已选定的数据?@acorder RE:显示多个项目-在[cars\u owned\u子表单]属性页的“格式”选项卡上,确保将默认视图设置为“连续表单”。(另外,我在回答中添加了一些截图。)1)我可以禁止相同值的倍数吗?2) 我可以让用户删除现有的客户汽车关联吗?既然您的答案成功地解决了这个问题,我就创建了另一个处理上述第2个问题的方法:@acorder RE:我可以禁止相同值的倍数吗?-您在[junction_model]上的主键是([cust_id],[model_id]),因此每个人只能“拥有”同一个模型一次。