【问题标题】:VBA: Won't allow me to change the RecordSource of another Form in Microsoft AccessVBA:不允许我在 Microsoft Access 中更改另一个表单的 RecordSource
【发布时间】:2016-12-15 11:16:41
【问题描述】:

我正在开发一个为员工保存和显示课程的数据库,每个员工都有不同的日期,他或她必须再次完成特定课程。我制作了一些包含所有信息的表格。我可以在一个表单中显示信息,这个表单包含几个按钮,可以让我在不同的查询之间进行选择。所有查询以相同的形式输出相同类型的数据。为了方便参考,我将这个表格称为 FormA

这一切都很好,但几个小时前我添加了一个按钮,可以让我更新某个记录的信息。这种更新以不同的形式发生,我们称之为 FormB。在以前的情况下,我每次训练都使用一种特定的形式,但我认为这完全没有效率。我做了一个表格,可以显示每个查询的信息。我遇到的问题是,每当我按下按钮更新某个记录时。它始终在查询/表单中显示顶部记录的信息。我已经坚持了几个小时了,我只是无法让它工作。如果我手动将 FormB 的 RecordSource 设置为正确的查询,则一切正常。但这需要我制作很多相同的表格。

我会尝试链接所有我认为相关的代码。如果需要其他内容,请说出来。

FormA上的更新按钮使用的代码:

Private Sub btnUpdate_Click()
Dim stDocName As String


If Forms!FormA.RecordSource = "QryFG" Then

  stDocName = "FormB"

  ' we open first the form:
  DoCmd.OpenForm stDocName, , , "peoplesoftnr = " & Me!PeopleSoftNr

  ' we then set up it's RecordSource:
  Forms!FormB.RecordSource = "QryFG"

End If

这个 if 语句在所有不同的训练中重复了五次,它们都是相同的,所以我不会在这篇文章中包含它们。

代码填充了我的 FormB 中的文本框。但它总是选择最高记录。即使我按下不在同一行的按钮(FormA)。当我注释掉以下行时:

' Forms!FormB.RecordSource = "QryFG":

并手动将 QryFG 设置为 FormB 的 RecordSource,它会做它应该做的事情。但是通过这样做,我将不得不创建很多相同的表单。我希望有更好的方法来做到这一点。提前感谢您的时间和努力。我的母语不是英语,所以请忽略拼写和语法错误;)。

再次感谢!

乔里·罗默斯

【问题讨论】:

    标签: database forms vba ms-access-2010


    【解决方案1】:

    通过设置表单的记录源,您将覆盖您之前在DoCmd.OpenForm 中设置的过滤器,因此它会显示QryFG 的所有记录,从第一条开始。

    有多种方法可以解决这个问题,例如

    ' Open without filter
    DoCmd.OpenForm stDocName
    ' Limit recordsource to current record
    Forms!FormB.RecordSource = "SELECT * FROM QryFG WHERE peoplesoftnr = " & Me!PeopleSoftNr
    

    或者更改记录源后设置过滤器:

    DoCmd.OpenForm stDocName
    With Forms(stDocName)
        .RecordSource = "QryFG"
        .Filter = "peoplesoftnr = " & Me!PeopleSoftNr
        .FilterOn = True
    End With
    

    如果执行此操作时表单“闪烁”,您可以使用WindowMode:=acHidden 打开它,然后在更改RecordSource/Filter 后将其设置为.Visible = True

    【讨论】:

    • 两种解决方案都很好用!非常感谢,你救了我!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多