【Access小品】不决定成败的细节--逻辑值的使用技巧
时 间:2012-07-12 14:38:07
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:【Access小品】不决定成败的细节--逻辑值的使用技巧
正 文:
细节决定成败,其实不竟然。许多细节是不决定成败的,只是表现为更精巧,更优雅。逻辑值的使用就属于这种不决定成败的细节,但用的得当可以使语句更为精巧。
从一个例子说起,有版友问如何当窗体为新记录时保存按钮可用,否则不可用。最通常的写法为:
if me.NewRecord=true then
me.保存.Enabled=True
else
me.保存.Enabled=False
end if
仔细想想,Enabled的值为逻辑值,而NewRecord的值也为逻辑值,因此If的结构语句就多余了。于是乎这五条语句原本只需要一条语句完成,它们可以简化为:
me.保存.Enabled=me.NewRecord=true
如果你高兴的话,也不妨写为:
me.保存.Enabled=me.NewRecord
你可能会说,这个小技巧不带有普遍性,没什么意义。其实不然,这个小技巧确具有普遍性,不信你看看这个问题:绑定窗体如何在保存时提示是否保存或放弃保存?
我们知道窗体或者控件的更新前事件带有一个参数叫做:Cancel。当将该参数的值设为True,将放弃更新。既然如此,我们就可以将这个问题的解决用以下这条语句来完成了:
Cancel = MsgBox("保存否?", vbYesNo) = vbNo
这个例子你可能还没有看到普遍性。其实你仔细想想,很多问题都可以这样解决。比如说,当一个控件的值不为null时,我们锁定这个控件使其不可编辑。我们可以这样来写:
me.控件名.Locked=isnull(me.控件名.value)=false
在来看看一个向上取整的例子,一个数除以另一个数我们需要当它有小数时,向上取整。我们可以这样来写:
if x1/x2>int(x1/x2) then
y=int(x1/x2)+1
else
y=int(x1/x2)
end if
其实不用这么麻烦。我们知道在Access中,所谓True即为-1,所谓False即为0。于是乎,以上算式,就是一句代码:
y=int(x1/x2)-x1/x2>int(x1/x2)
再来看看统计一条记录中某五个字段不为null的字段数量,我们可以这样来写:
select *,5+(字段1 is null+字段2 is null+字段3 is null+字段4 is null+字段5 is null) as 非空字段数
from tbname
诸如此类的问题实际上很多,比如依据一定的条件窗体是否可以新增、删除、修改,依据一定的条件控件是否可见,等等。但凡你在if语句块中,给某个变量、属性赋值True或者False,都可以将IF语句简写为一条语句。这条语句将直接用IF语句的判断语句部分,给某个变量或属性赋值。也可以利用Access中逻辑值的特点,直接进行某些特定情况下的加减运用。这就我要告诉同志们的一个不决定成败,决定精巧的细节。
最后,请同志们记住这么两句话:熟练来自穷折腾,技巧源于瞎琢磨。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)