【发布时间】: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