Office中国论坛/Access中国论坛

标题: 临时查询为子窗体数据源,刷新子窗体后无反应 [打印本页]

作者: huangxiuwen    时间: 2009-3-23 18:03
标题: 临时查询为子窗体数据源,刷新子窗体后无反应
请教各位大侠。采用【临时查询】作为子窗体的数据源,在主窗体的物料控件中选择物料条件后,点击〖查询〗按钮,子窗体显示的记录不会变。

感谢各位大侠。

〖查询〗按钮代码如下:


Dim StrG1 As String
StrG1 = "[物料名]='" & Me.Text1 & "'"
'更新临时查询
Dim qdf As DAO.QueryDef 'qdf被定义为一个查询定义对象
Set qdf = CurrentDb.QueryDefs("临时查询")
qdf.SQL = "SELECT * FROM [物料] WHERE " & StrG1
qdf.Close
Set qdf = Nothing
'刷新子窗体
Forms!主窗体.子窗体.Requery
作者: todaynew    时间: 2009-3-23 18:14
本帖最后由 todaynew 于 2009-3-23 18:25 编辑

Forms!主窗体!子窗体.form.Requery
作者: huangxiuwen    时间: 2009-3-23 19:00
晕。。。。。。。。。。原来是这样错了。感谢todaynew
作者: huangxiuwen    时间: 2009-3-23 19:08
todaynew大侠,改了之后,还是没有反应。
作者: todaynew    时间: 2009-3-23 19:45
本帖最后由 todaynew 于 2009-3-23 19:49 编辑

[attach]36869[/attach]
Private Sub Command0_Click()
Dim StrG1 As String
'更新临时查询
Dim qdf As DAO.QueryDef 'qdf被定义为一个查询定义对象
StrG1 = "[物料名]='" & Me.Text1 & "'"
Set qdf = CurrentDb.QueryDefs("临时查询")
qdf.SQL = "SELECT * FROM [物料] WHERE " & StrG1
'刷新子窗体
'这里需要再次更换数据源,原因我不大说的清楚。
Me.子窗体.Form.RecordSource = "临时查询"  
Me.子窗体.Form.Requery
qdf.Close
Set qdf = Nothing
End Sub

此外,还可以如下:
Private Sub Command5_Click()
Dim StrG1 As String
Me.子窗体.Form.RecordSource = "物料"
StrG1 = "[物料名]='" & Me.Text1 & "'"
Me.子窗体.Form.Filter = StrG1
Me.子窗体.Form.FilterOn = True
End Sub
作者: huangxiuwen    时间: 2009-3-23 19:58
之前是使用更换数据源的方法,但测试之后,发现速度没有刷新子窗体快,所以想改为刷新的方法,今天上午搞了很久,都没有成功。
感谢todaynew
作者: todaynew    时间: 2009-3-23 20:00
之前是使用更换数据源的方法,但测试之后,发现速度没有刷新子窗体快,所以想改为刷新的方法,今天上午搞了很久,都没有成功。
感谢todaynew
huangxiuwen 发表于 2009-3-23 19:58


速度比较快的方法可能是筛选。
作者: huangxiuwen    时间: 2009-3-23 21:21
筛选用于单一的模式是最好的选择,比如标准的显示模式,但如果是将【多字段混合排序】、【标准显示模式】、【交叉显示模式】、【最后一行显示合计记录】、【小数位自定义】集于一起。用筛选的方式就显得有些力不从心了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3