Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 将查询添加到子窗体_Ms Access_Vba - Fatal编程技术网

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(属性)可能我在这里缺少一些内容,但我看不到它。