无论我尝试学习多少教程,指南或示例;我似乎无法弄清楚如何使我的工作。就它而言,它几乎就像是一次打击和错过。我让它在某些形式上工作,但我似乎无法让它在其他形式上工作。有一个让组合框工作的技巧;我失踪了?!
例如以我的供应商形式。
frm_vendor
tbl_vendor -> tbl_address -> tbl_addressType
PK vendorID PK addressID PK addressTypeID
FK addressID FK addressTypeID
我能够创建一个组合框,允许您选择addressTypeID< - 没问题
control source = addressTypeID
row source =SELECT [tbl_addressType].[addressTypeID], [tbl_addressType].[addressType] FROM tbl_addressType;
row source type = Query/Table
bound to column = 1
limit to list = 1
not editable
但是在这个新形式上,我无法让它发挥作用。
control source = addressTypeID
似乎无效并给我一个警告。
从查询创建表单时。我是否应该在此查询中包含每个PK / FK,即使我认为我不会显示它,所以表单可以理解链接?
答案 0 :(得分:1)
组合框的RowSource确定数据来自何处以使用值填充列表,此列表可以来自数据库中的任何位置。
ControlSource是将组合框选定值映射到表单绑定的查询的位,即ControlSource中的名称需要是表单的RecordSource中存在的字段。
因此,在新表单中,您需要确保基于表单的查询有一个名为addressTypeID的字段。
答案 1 :(得分:1)
基本上是的,如果您需要通过组合框显示数据,则需要将该组合框绑定到查询中的某些数据,这样当表单在特定记录上打开时,它可以设置组合框的值(此处为addressTypeID
),它会在另一个表格中显示您想要的值(在本例中为tbl_addressType.addressType
)。
在特定的情况下,你想要实现的目标实际上并不是很清楚,这可能是你无法得到你想要的东西的原因之一:如果你不能完全定义问题,那么你可以'找到解决方案。
你需要准确展示什么?
您列出了3个具有相关信息的不同表格,但不清楚tbl_addressType
在此中的作用是什么。
也许如果你有一个表格截图可能有帮助吗?
关于您的数据库命名约定的一点:我认为您的PK和FK被命名为相同的事实是混乱的一部分。 如果你采用这样的东西,它可能会让事情变得更清楚:
Vendor -> Address -> AddressType
PK ID PK ID PK ID
FK AddressID FK AddressTypeID
.. VendorName .. AddressTitle
所有主键都命名为ID
。外键遵循惯例ForeignTableName+ID
这使得关系明确无误。
现在,您的Vendor表绑定到表单:
frmVendor.RecordSource = SELECT ID, AddressID, VendorName FROM Vendor
现在,假设我们要显示供应商的AddressTitle
并让用户通过从组合框中选择供应商的地址,将供应商的地址更改为另一个:将组合框添加到frmVendor
,命名为cbAddress
:
cbAddress.ControlSource = AddressID
cbAddress.RowSource = SELECT ID, AddressTitle FROM Address
cbAddress.RowSourceType = Table/Query
cbAddress.BoundColumn = 1 ' Address.ID is bound to Vendor.AddressID
cbAddress.ColumnCount = 2 ' Two columns: ID and AddressTitle
cbAddress.ColumnWidths = 0;3 ' Width 0 for the ID column will hide it
你已经确定了。
当您的表单显示供应商记录时,组合框也会显示相应的地址'标题
如果您的frmVendor.RecordsetType
为Dynaset
,那么如果用户从组合框中选择了另一个地址,则Vendor.AddressID
将更新为所选的Address.ID
。
现在,我仍然不知道你想用AddressType
表做什么。
答案 2 :(得分:-1)
我同意@Rikalous
您需要确保基于表单的查询有一个名为addressTypeID的字段
希望此链接可以提供帮助: Microsoft Access cannot add records join key of table not in recordset