【问题标题】:Access adds a new record when choosing from a combo box从组合框中选择时,Access 添加新记录
【发布时间】: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。

标签: sql ms-access ms-access-2010 ms-access-2013 ms-access-2016


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多