设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 【Access小品】巧用逻辑表达式和逻辑值

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

    逻辑值在编程中非常有用,在很多情况下巧妙的利用逻辑值可以简化算法。逻辑值可以是一个逻辑表达式的结果,构造表达式和运用表达式的结果是两个有着密切联系的环节,同时要知道这两个环节各自的侧重面和角度是不同的。如果能经常的从结果的运用来考虑问题,逻辑表达式(包括其他类型的表达式)就可以简化。以下的示例想要说明的上述的问题,希望初学者能从中琢磨出点东西来。


一、利用逻辑值True的特性计算平均值问题:

版友wanghuaiqi1005问题:
查询表中6个字段:S、a、b、c、d、e,S为数量,其它为具体人员。S数量按照比例给人员分配,当其中一个字段为空时,其分配的数量平均分给其它四人。


老汉版主解法:
select *,S/(5+(a is null+b is null+c is null+d is null+e is null)) as 平均值 from tbname


二、利用逻辑表达式排序问题:

版友Lee问题:
在SQL中我已用“ORDER BY 供应商”进行了排序,结果虽然能把名称相同的供应商排列在一起,但我想把所有“XX部”的供应商先排列在一起(例如图中的五金部和注塑部),然后才把其它不是XX部的再进行排序,不知能否这样呢?语句应怎样写?


老汉版主解法:
select * from tbname orDER BY Right(供应商,1)="部",供应商


三、用逻辑表达式的结果得到一个查询字段值

版友徐弈问题:
查询表中qry_tjlygmx,字段pphgr除以字段PPH值大于1为真,反之为假,此条件应该怎么操作,请各位教师指点!!


老汉版主解法:
select *,[pphgr]/[pph]>1 as 判断 from tbname


四、用逻辑值分区域显示记录

版友白桦林问题:
我的ACCESS中有两个结构完全相同的表:表1(未成年)和表2(成年),其中都有字段[出生日期]。如何实现在我打开该数据库时,根据系统日期判断表1中的人是否满18岁;如何满18岁,将表1中的满18岁的人的记录字段复制到表2中,同时删除表1中的该记录。


老汉版主解法:
select *,DateDiff("yyyy",出生日期,Date())=>18 as 成年否 from tbname order By DateDiff("yyyy",出生日期,Date())=>18
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享1 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-9-5 14:47:57 | 只看该作者
学习了
3#
发表于 2011-9-5 14:54:03 | 只看该作者
老师威武

点击这里给我发消息

4#
发表于 2011-9-5 15:12:24 | 只看该作者
有意思,有启发
5#
发表于 2011-9-5 18:41:45 | 只看该作者
本帖最后由 roych 于 2011-9-5 18:42 编辑

Access中False值为-1,如果跟其它语言中那样,True为1False为0,例子1就得改写了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 17:14 , Processed in 0.091948 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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