从组合框中选择时,Access 添加新记录

Posted

技术标签:

【中文标题】从组合框中选择时,Access 添加新记录【英文标题】:Access adds a new record when choosing from a combo box 【发布时间】:2017-08-08 23:44:56 【问题描述】:

我有一个发票行 (invoiceLine) 的子表单,在该子表单中,我有一个组合框,可让您选择该行上的 serviceName。但是,当我从组合框中选择 serviceName 时,它​​不会使用已经存在的服务记录,而是在我的 Service 表中添加一条新记录,并将我选择的 serviceName 中的 serviceID 放在 serviceName 列中。

例如,如果我在组合框中选择“正在编辑”作为 serviceName,而不是在 InvoiceLine 表中使用“正在编辑”的 serviceID,它会创建一个全新的服务记录,其中 serviceName 是“正在编辑”的 serviceID " 以及此记录的全新 serviceID。

我正在谈论的组合框将“控制源”设置为 serviceName,“行源”是

SELECT Service.serviceID, Service.serviceName,Service.serviceCurrentPricePerHour FROM Service;

并且“更新后”属性设置了“SearchForRecord”,其中“记录”为第一,“条件”为

="[servID] = " & Str(Nz([Screen].[ActiveControl],0))

服务表

serviceID
serviceName
serviceCurrentPricePerHour
serviceDescription

InvoiceLine 表

invoiceLineID
serviceID
priceActuallyChargedPerHour
invoiceID
hoursWorked

发票表

invoiceID
invoiceDate
customerID
projectName
invoiceDiscount

【问题讨论】:

请澄清:您说组合框控件源设置为serviceName,但行源第一列是serviceID。这不一定是问题(或奇怪行为的原因),但通常 Row Source 的第一列与绑定属性匹配,因此列表中的正确值实际上保存在绑定列中。请使用 [Bound Column]、[Column Count] 和 [Column Widths] 属性的值更新问题。 RecordSource 表单是包含 InvoiceLine 和 Service 表的查询吗?不需要包括服务表,我怀疑这是问题的根源。 Combobox Control Source 应该是 InvoiceLine 表中的 serviceID 字段,而不是 Service 表的 InvoiceName。 【参考方案1】:

只需删除控制源,当您更改它时,它会创建一个 NewRecord。

【讨论】:

以上是关于从组合框中选择时,Access 添加新记录的主要内容,如果未能解决你的问题,请参考以下文章

当用户从 MS Access 的组合框中选择“其他”时,如何显示输入表单?

从包含 ACCESS 2013 中的多个表的表单中查找带有组合框的记录

使用组合框切换记录时访问显示第一条记录

在 Access 的组合框中自动选择一个值

在 access 2007 中更新组合框值

如何在 Access 中打开表单,自动选择组合框中的值并显示详细信息?