如何在表单中重新查询子表单?

时间:2012-11-17 02:53:22

标签: vba ms-access access-vba

我遇到了一个问题,我无法在Access中重新查询表单内的子表单。

表单的名称是frmSearch 子表单的名称是SearchResults

我试过

Private Sub Command38_Click()

Me!SearchResults.Form.Requery (or)
Me.SearchResults.Form.Requery

End Sub

我的形式&子表单看起来像这样:

enter image description here

要清楚,我正在使用“搜索”按钮创建一个包含文本框和组合框值的字符串。此字符串创建一个名为qryTrialQuery的SQL查询。然后我的子表单查询qryTrialQuery并在下表中生成结果。

我希望能够按下搜索按钮,然后结果会立即显示在它下面。问题是,除非我关闭并重新打开表单,否则结果不会出现。

提前感谢您的帮助。


更新

以下是我用于从文本框和组合框值创建查询的代码。

LineOne = "SELECT tblPoolPersonnel.LName, tblPoolPersonnel.FName, tblPoolPersonnel.[Tel Natel], tblPoolPersonnel.[Tel Home], tblPoolPersonnel.Email" & vbCrLf
LineTwo = "FROM (tblPoolPersonnel INNER JOIN tblDayAvailable ON tblPoolPersonnel.Code_Personal = tblDayAvailable.Code_Personal) INNER JOIN tblServiceYES ON tblPoolPersonnel.Code_Personal = tblServiceYES.Code_Personal" & vbCrLf
LineThree = "WHERE (((tblServiceYES.Service)=" & comboService & ") AND ((tblDayAvailable.Availability)=True) AND ((tblDayAvailable.Date)=" & txtDate & ") AND ((tblDayAvailable.CodeHoraire1)=" & comboCodeHoraire & "));"

Set qdf = CurrentDb.QueryDefs("myQuery")
Application.RefreshDatabaseWindow
strSQL = LineOne & LineTwo & LineThree
qdf.SQL = strSQL
qdf.Close
Set qdf = Nothing
Set dbs = Nothing

2 个答案:

答案 0 :(得分:4)

假设您正在根据用户选择的条件重建查询的SQL,您应该能够执行以下操作:

Private Sub Command38_Click()
    Dim qryTrialQuery as String
    ...
    ' code to construct the SQL SELECT statement for the query, '
    ' based on the criteria the user entered                    '
    ...
    SubForm.Form.RecordSource = qryTrialQuery
End Sub

设置子表单RecordSource将刷新数据。

答案 1 :(得分:2)

你可以试试这个:

Dim frm as Form
Set frm = frmSearch
frmSearch!SearchResults.Form.Requery