问题描述
MS Access(当前版本/365)——尝试构建一个简单的发票解决方案。为了这个问题,我有 2 个表:
- 客户(ID [autoNumber]、姓名等)。
- 示例:ID = 1//name = "client 1"
- 示例:ID = 2//name = "client 2"
- 项目(ID [autoNumber]、ClientID [FK to clients --> ID]、itemName 等)。
- 示例:ID = 1// clientID = 1 // name = "item 1 for client 1"
PK/FK/关系建立正确,客户手动添加。
我想构建一个能够添加新项目的表单。由于很难通过 ID 识别客户,我希望(在视觉上)链接客户和项目表,所以我会有一个带有客户名称的下拉列表(组合框),然后我可以添加与客户相关的新项目来自落下。在此阶段无需添加新的客户信息,因为这些信息已在上一步添加。简而言之,我想从下拉列表中选择“客户 1”,添加一个新项目,然后将其保存到客户 ID 为 1 的项目表中(参见上面的示例),如下所示:
- 新项目:ID = 2// clientID = 1 // name = "item 2 for client 1"
使用组合框:我遇到的问题是,如果我将 Control Source 设置为 Client Name,将行源设置为来自 clients 表的相应列值,如果我添加一个新项目,Access 将复制新客户 ID 下的客户名称。因此,该项目被保存为:
- 新项目:ID = 2// clientID = 3 // name = "item 2 for client 1"
问题:我究竟如何阻止 Access 添加具有新 ID 的新(重复)客户端名称,而只是将项目添加到现有客户端? 谢谢
解决方法
为了帮助您的客户端组合框并且只看到 ID,将 ClientID 作为查询构建器的第一列,将它们的名称放在第二列,然后在组合框 Properties
> Format
下,对于 Column Count
输入 2(或 3,如果您想使用名字姓氏),而对于 Column Width
,则将其设为(对于列数 2)0;1.5 或(对于列数 3),0 ;1.5;1.5,这将隐藏 ID,只显示名称。
另外,你的表单上的按钮是什么?您需要一个“新记录”按钮,因为您似乎只是覆盖了一条记录。您的表单是否在表单的左下方显示 Record: 1 of __
?
编辑:
您想在哪个表中收集所有这些数据?您的表单 Record Source
设置为什么? (要找到它,请在设计视图中单击表单左上角的方块)
右击打开表单属性,它应该在 Data
下。