Ms access 将查询添加到子窗体
我已经寻找了一段时间,但我看不出这里的问题:Ms access 将查询添加到子窗体,ms-access,vba,Ms Access,Vba,我已经寻找了一段时间,但我看不出这里的问题: Option Compare Database Option Explicit Private Sub cmd_Refresh_Click() Dim sSQL_Select As String Dim Qdb As Database Dim Qry As QueryDef sSQL_S
Option Compare Database
Option Explicit
Private Sub cmd_Refresh_Click()
Dim sSQL_Select As String
Dim Qdb As Database
Dim Qry As QueryDef
sSQL_Select = "SELECT * FROM T_TIME_SCHEDULE"
Set Qdb = CurrentDb
Set Qry = Qdb.CreateQueryDef("QTS", sSQL_Select)
DoCmd.OpenQuery "QTS", acViewNormal
Me.F_Child_Result.Form.RecordSource = "QTS"
Me.F_Child_Result.Requery
Qdb.QueryDefs.Delete ("QTS")
Set Qdb = Nothing
End Sub
这一行:
Me.F_Child_Result.Form.RecordSource = "QTS"
导致以下错误:运行时错误“2467”:您输入的表达式引用的对象已关闭或不存在。
语法应该正确构造,我仔细检查了子窗体的名称。
Desipte,错误仍然存在 不要将记录源设置为查询,只设置SQL字符串
sSQL_Select = "SELECT * FROM T_TIME_SCHEDULE"
''Set Qdb = CurrentDb
''Set Qry = Qdb.CreateQueryDef("QTS", sSQL_Select)
''DoCmd.OpenQuery "QTS", acViewNormal
Me.F_Child_Result.Form.RecordSource = sSQL
''Me.F_Child_Result.Requery
无需重新查询,记录源更改时将重新查询表单
请注意,即使您可以将记录源设置为查询(您不能),它也不会被引用
来自聊天室
这个问题似乎有两条混杂的线索。所需的是将子窗体控件的源对象
设置为查询的方法,而不是子窗体控件包含的窗体的记录源
源对象可以这样设置:
Me.F_Child_Result.SourceObject="Query." & sQueryName
如果源对象已设置为仅用于此表单的已保存查询的名称,则无需重置,只需修改查询的sql即可:
Set qdf = CurrentDB.QueryDefs("JunkQuery")
qdf.SQL = sSQL
午饭后回到电脑前我会试试的!我应该考虑一下。。。谢谢老实告诉你,我也犯了同样的错误(我想今天早上我已经试过了)。。。好像找不到子窗体。对你有用吗?我仔细检查了表单名称。这是子表单的常见问题。表单名称是子表单控件包含的表单。您需要的是子窗体控件的名称,而不是包含的窗体。它们经常是相同的,但并不总是相同的。您应该指的是我=表单代码对象-->子表单控件名称-->表单对象的子表单(未命名)-->属性所包含的表单对象。这不就是它吗。。。Me(表单代码对象).F\u Child\u Result(子表单控件名称).form(未命名).RecordSource(属性)可能我在这里缺少一些内容,但我看不到它。