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

Ant*_*ony 5 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

我该如何解决这个问题,或者是否有推荐的替代方案?

谢谢.

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

Hac*_*ash 1

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

像这样:

清除控制源

请注意,组合框的选项源是一个查询,它定义下拉列表中应显示哪些项目,但未指定控制源。