【Access小品】词不达意--对于混乱表达的分析示例
时 间:2015-05-13 09:26:48
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:【Access小品】词不达意 -- 对于混乱表达的分析示例
正 文:
这个问题很多版友进行了回答,所有解答均沿着通配符的处理展开。这个问题真的涉及通配符吗?答案是否定的。
暂且不论该问题的正确答案是什么。我们首先来分析一下,将解答引入歧途的原因是什么。该问题的表述的逻辑是从文本的通配符开始,进而询问到数值型的任意匹配,再到一个状态字段的筛选。其实这个表述是词不达意的,甚至是风马牛不相及!完全无须这么长的逻辑链来说明这个问题。只需要问:一个状态字段的筛选,如何在为空值(Null)时,能显示全部数据。也就是说,解决这个问题是否与通配符相关并非必要,提问时也不必考虑。
为什么提问时,无须考虑解决的过程,而只需说明结果呢?其原因有二,其一是提问者过多的表述,可能引起不必要的误解(这一点在这个问题的解答中表现的很典型)。其二是实现一个需要的功能(也就是解决一个问题),可以有许多种方法,解答者可以根据自己的水平、偏好、对问题的理解,给出丰富多彩的答案。这些不同的答案,可以给提问者和其他版友不同侧面的提示和思考。所以,特别要理解,问题和答案之间并非是一对一的关系,一对多的答案是常态,也最有价值。
回到蛋蛋同志的问题上来。这个问题,实际上只需要看最后一部分,也就是关于一个字段的筛选问题而已。所谓筛选,就是按照某种逻辑表达式获取记录的结果集。所以重点是逻辑表达式,而逻辑表达式的结果无非两种,要么是要么非。恒定的是,得到的是全部数据的结果集;恒定的非,得到的是空集;符合一定条件的是,得到的是子结果集。
明白了这个道理,我们要想得到全部数据(这是蛋蛋同志问题的核心),也就是要获得一个恒定的是。那么怎么表达恒定的是呢?很简单,True就是恒定的是。当然你写成-1(注意这是在Access中,其他地方可能是1)也行,还有人写成1=1或者2=2什么的。只要这个表达式的结果是恒定的是就行。同理你要得到一个空集,就只需要False一家伙,也可写成0,或者1=2什么的。
这层纸被捅破了,什么都不神秘,解决的方法也就是十分的简单了。我们假设蛋蛋同志的主窗体上有一个名曰:“状态”的组合框,该组合框数据源类型为值列表,其列表值为:0;未完成;1;已完成,宽度为0cm;2cm。假设子窗体中也有一个对应的“状态”控件。则在组合框的更新后事件中写:
dim wh as string
wh="True"
if isnull(me.状态.value)=false then
wh=wh & " and 状态=" & me.状态.value
end if
me.子窗体.form.filter=wh
me.子窗体.form.filteron=true
这样当主窗体中的组合框未选值时,筛选字符串就是True,也就是一个恒定的是。筛选的结果集就是全部数据。此法不仅限于一个字段的筛选,也不仅限于数字型字段的筛选。当多个控件组合筛选时,我们一样可以借用这个方法来得到全部的或者部分的结果集。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)
- 统计当月之前(不含当月)的记录数怎...(03.11)