Office中国论坛/Access中国论坛

标题: 求教如何在窗体查询中剖离子窗体 中的空值 [打印本页]

作者: jy00781671    时间: 2010-11-26 16:58
标题: 求教如何在窗体查询中剖离子窗体 中的空值
本帖最后由 jy00781671 于 2010-11-30 16:48 编辑

当我在下拉框中选择一项查询时,它会伴随着这个项中的空值一起在子窗体中出现,求教怎么让空值和选择分开来。
比如下面的例子,当我选择mess-system中的HOME3时,那些没有mess-system的信息也被查出来,怎么能不显示那些空信息,这里先谢谢各位了
如果去掉查询条件里的or is null 那么这些含有空信息的纪录就永远查不到了,我想让他可以显示,只是当我选择查询的时候让它屏蔽,不知道我说清楚没

[attach]44209[/attach]


作者: aslxt    时间: 2010-11-26 18:25
你的查询的条件:Like ("*" & [Forms]![Form1]![Combo2] & "*") Or Is Null
把【Or Is Null】删除后就不显示那些空信息呀
作者: jy00781671    时间: 2010-11-26 18:48
回复 aslxt 的帖子

但是这样,这条空信息不能出现在子窗体里了,永远查不到,我想让他可以显示,但是查不到
作者: zyz218    时间: 2010-11-27 00:26
不知是不是这个意思
作者: jy00781671    时间: 2010-11-29 15:41
回复 zyz218 的帖子

不是这个意思,简单的去掉or is null后那些没有mess-system的信息就不显示了,我想让它在没有信息选择时是出现的,但当我们在mess-system组合框中选值得时候,它就没法出现。
作者: jy00781671    时间: 2010-11-30 15:41
每人愿意帮忙么。。
作者: 软件下载    时间: 2010-11-30 18:48
我这电脑没access看不到例子,有个笨办法,就是查询后再写个筛选代码,把空记录筛选掉
作者: aslxt    时间: 2010-11-30 19:38
本帖最后由 aslxt 于 2010-11-30 19:39 编辑

假如窗体有一个组合框【COMBO】,一个子窗体【表1子窗体A】,子窗体的数据源为【表1】,表一有一个字段叫做【说明】
组合框的代码如下:
Private Sub COMBO_Change()
  If Len(COMBO & "") = 0 Then
    Me.表1子窗体A.Form.RecordSource = "SELECT * FROM 表1 WHERE LEN(说明 & '')=0 "
  Else
    Me.表1子窗体A.Form.RecordSource = "SELECT * FROM 表1 WHERE 说明='" & COMBO & "'"
  End If
End Sub

你可以参照修改为自己想要的查询条件
作者: jy00781671    时间: 2010-11-30 20:08
回复 软件下载 的帖子

筛选代码怎么写,能给个大概例子么?
作者: jy00781671    时间: 2010-11-30 20:11
回复 aslxt 的帖子

谢谢你的解答,不过这么写完每次进窗体都要先输入条件阿
作者: jy00781671    时间: 2010-11-30 20:17
回复 aslxt 的帖子

麻烦你能在我的例子上改下么,这样比较直观,谢谢
作者: 红尘如烟    时间: 2010-11-30 20:24
要在组合框中不显示空行的话,在行来源中加上条件就行了:SELECT 字段1 FROM 表名 WHERE 字段1 IS NOT NULL
[attach]44251[/attach]

作者: jy00781671    时间: 2010-11-30 21:29
回复 红尘如烟 的帖子

谢谢版主,帮我大忙了,请问.Filter = strWhere和.FilterOn = True分别限定的是什么,好像我只能查文字的,数字的和是非的都查不了
作者: 红尘如烟    时间: 2010-11-30 21:40
Filter是筛选器条件,FilterOn是筛选器开关
文本型字段的写法是:
If Not IsNull(Me.Combo0) Then strWhere = strWhere & " AND MLFB = '" & Me.Combo0 & "'"
数字型字段的写法是:
If Not IsNull(Me.Combo0) Then strWhere = strWhere & " AND MLFB = " & Me.Combo0  
日期型字段的写法是:
If Not IsNull(Me.Combo0) Then strWhere = strWhere & " AND MLFB = #" & Me.Combo0 & "#"


作者: jy00781671    时间: 2010-11-30 22:14
回复 红尘如烟 的帖子

无比感激
作者: jy00781671    时间: 2010-11-30 22:43
回复 红尘如烟 的帖子

那如果想筛选出不为空的值,表达式后面应该是什么样的?另外能推荐给我一本VBA的代码书么,谢谢了
作者: 红尘如烟    时间: 2010-11-30 23:07
不为空就是: strWhere = strWhere & " AND MLFB IS NOT NULL"
学习VBA主要的还是要多用多练,讲VBA的书一般得找国外出的了,另外站长出的2本书也很好

作者: jy00781671    时间: 2010-12-1 17:20
回复 红尘如烟 的帖子

那如果从3个字段里选出都不为空的呢strWhere = strWhere & " AND ([Comment1] AND [Comment2] AND [Comment3]) IS NULL"?好像不行。。
作者: jy00781671    时间: 2010-12-1 18:22
回复 红尘如烟 的帖子

我知道了,原来就那个语句写三遍`。。




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