设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1582|回复: 6
打印 上一主题 下一主题

[窗体] 查询在主窗体运行或子窗体运行时都可以引用控件

[复制链接]
跳转到指定楼层
1#
发表于 2012-9-20 19:39:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现有一个主窗体,在主窗体中还有子窗体A、子窗体B。子窗体中有查询引用子窗体控件进行判断,当运行主窗体时,子窗体里内查询引用的控件就找不到,又将查询引用改为基于主窗体的控件引用名称,但这时单独运行子窗体时,查询就又无法找到引用的控件了。
有什么办法可以在运行主窗体时,或单独运行子窗体时,查询都可以正常引用子窗体控件,不用改来改去的。
谢谢指导!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-9-20 21:43:45 | 只看该作者
在执行查询前,检查相关的主/子窗体是否已经加载,IF 加载 THEN 执行查询 ELSE 不执行,或 DOCMD.OpenForm  主/子窗体 ,再执行查询
相关函数:isloaded
3#
发表于 2012-9-20 21:47:58 | 只看该作者
名称引用的判定:IF 主窗体 加载 THEN 查询中的引用改为 主窗体路径,否则打主窗体 ,或 IF 子窗体 加载 THEN 查询中的引用改为 子窗体路径,否则打子窗体

基本思路,代码实现都比较简单。希望对你有用
4#
 楼主| 发表于 2012-9-21 11:47:27 | 只看该作者
先谢个
5#
发表于 2012-9-21 23:48:14 | 只看该作者
用指定SQL语句来完成。在嵌套的最底层的窗体中写入函数。
  1. Function GetSQL()
  2. Dim Swhr As String, ssql As String
  3. Swhr = "True"
  4. '条件1。Me.TrainingCategory为嵌套窗体中的最底层窗体中的控件。
  5. '以下类似,均为查询条件及控件,不再注释。
  6. If Not IsNull(Me.TrainingCategory) Then
  7.     Swhr = Swhr & " And TrainingCategory like '*" & Me.TrainingCategory & "*'"
  8. End If
  9. If Not IsNull(Me.TrainingCourse) Then
  10.     Swhr = Swhr & " And TrainingCourse like '*" & Me.TrainingCourse & "*'"
  11. End If
  12. If Not IsNull(Me.Emp_ID) Then
  13.     Swhr = Swhr & " And Emp_ID like '*" & Me.Emp_ID & "*'"
  14. End If
  15. If Not IsNull(Me.TrainingType) Then
  16.     Swhr = Swhr & " And TrainingType like '*" & Me.TrainingType & "*'"
  17. End If
  18. If Not IsNull(Me.C_Name) Then
  19.     Swhr = Swhr & " And C_Name like '*" & Me.C_Name & "*'"
  20. End If
  21. ssql = Swhr & " And SDate Between #" & Me.SDate & "# And #" & Me.EDate & "#"
  22. GetSQL = "SELECT * FROM Tbl_SignForm WHRER " & Right(ssql, Len(ssql) - 9)
  23. End Function
复制代码
在主窗体的查询按钮中调用:
  1. Private Sub CmdQuery_Click()
  2. '此函数用于更新已创建的查询的SQL语句,可以在查询或刷新查询按钮中调用。
  3. '需要引用DAO 3.6库(其它版本应该也可以^_^)。
  4. 'Qry_SignForm为最底层窗体对应的查询(已创建的查询)
  5. '将此查询绑定在最底层窗体的数据源上
  6. CurrentDb.QueryDefs("Qry_SignForm").SQL = GetSQL
  7. End Sub
复制代码
6#
 楼主| 发表于 2012-9-22 11:56:59 | 只看该作者
谢谢楼上,后来我又想了一个思路。
设置了一个公用变量,再设置了一个函数,在查询时,通过函数引用公用变量,达到目的。
不知道火星没。
不过,还有个小问题,如果公共变量为日期型,在窗体第一次加载时,列表框没有列出所要查询的信息,但刷新一次就好了,没有搞明白什么原因。
7#
发表于 2012-9-22 20:29:15 | 只看该作者
用AddItem方法可能会好些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-16 07:17 , Processed in 0.091917 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表