访问用户表单无意中更改了数据表记录

时间:2016-09-07 17:45:24

标签: ms-access access-vba

我一直在使用MS Access来帮助生成基于表格的pdf报告。我创建了一个表单,其中包含一个用于输入客户端名称的文本框(该值在主表中)和一个单击按钮时运行代码的按钮:

Private Sub cmdPrintRecord_Click()

    Dim strReportName As String
    Dim strCriteria As String

    strReportName = "Current SP Report"
    strCriteria = "[Owner]='" & Me![Owner] & "'"
    DoCmd.OpenReport strReportName, acViewPreview, , strCriteria

End Sub

这里的想法是根据客户名称生成单独的PDF报告。

上面的过程已经能够成功地做到这一点但是,我遇到过,当我运行它时,我的表中的数据会受到影响,特别是客户端名称字段。

例如:我将为客户“Anthony”运行一个报告,它会显示10个正确的产品,但如果我再次返回并再次运行相同的报告,它将显示11个产品。就像这里的过程正在改变数据表一样。

如何解决此问题,或者是否建议使用其他替代方案?

感谢。

附件是获取源代码的MS链接: https://support.microsoft.com/en-us/kb/209560

1 个答案:

答案 0 :(得分:1)

如果将表单控件(文本框,组合框)的控件源链接到表,则它将修改该表。在您的情况下,您希望基于表中的选择接收用户输入,而不是修改表本身。您想使用“行源”属性将选择范围限制为表项并清除“控制源”。这将从表中提取潜在选项,而无需更改现有表条目。

赞:

Clear Control source

请注意,组合框的选项源是一个查询,该查询定义了下拉菜单中应显示哪些项目,但未指定“控制源”。