设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5909|回复: 10
打印 上一主题 下一主题

[其它] 【Access小品】不决定成败的细节--逻辑值的使用技巧

[复制链接]
跳转到指定楼层
1#
发表于 2012-7-12 14:44:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2012-7-12 15:46 编辑

  细节决定成败,其实不竟然。许多细节是不决定成败的,只是表现为更精巧,更优雅。逻辑值的使用就属于这种不决定成败的细节,但用的得当可以使语句更为精巧。

  从一个例子说起,有版友问如何当窗体为新记录时保存按钮可用,否则不可用。最通常的写法为:

  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中逻辑值的特点,直接进行某些特定情况下的加减运用。这就我要告诉同志们的一个不决定成败,决定精巧的细节。

    最后,请同志们记住这么两句话:熟练来自穷折腾,技巧源于瞎琢磨。


  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享 分享淘帖2 订阅订阅

点击这里给我发消息

2#
发表于 2012-7-12 15:07:32 | 只看该作者
老汉高论
3#
发表于 2012-7-12 15:14:49 | 只看该作者
受教了!!!!!!
4#
发表于 2012-7-12 16:06:51 | 只看该作者
收益非浅{:soso_e181:}
5#
发表于 2012-7-13 10:39:05 | 只看该作者
{:soso_e181:}非浅收益
6#
发表于 2012-7-14 10:45:01 | 只看该作者
我觉得,对初学者,只要语句符合逻辑,多几句IF反而容易理解。
7#
发表于 2012-7-15 09:05:47 | 只看该作者
学习了!
8#
发表于 2012-7-17 09:04:53 | 只看该作者
精典,学习了

点击这里给我发消息

9#
发表于 2012-12-3 14:51:01 | 只看该作者
支持...只是基础差的话只能从最老土的写法写起了,当然了,只有达到一定水平时才可能讲求精益求精.不是吗?
10#
发表于 2012-12-3 19:32:43 | 只看该作者
支持,这才是编程的魅力
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-30 23:33 , Processed in 0.083875 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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