从组合框中选择时,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 的组合框中选择“其他”时,如何显示输入表单?