Office中国论坛/Access中国论坛

标题: 【Access小品】朝令夕改---为何查询中不建议用Iif [打印本页]

作者: todaynew    时间: 2014-12-16 11:33
标题: 【Access小品】朝令夕改---为何查询中不建议用Iif
本帖最后由 todaynew 于 2014-12-16 11:36 编辑

  一日某版友按领导要求做一个奖励统计系统,领导曰:业绩排名前六者重奖300,七至十二者奖200,十三至十六者奖100,十六者之后不奖。于是乎该版友于查询中写Iif嵌套语句得其结果,领导拍其肩云:甚佳!

  众同事闻有奖金可发,悲喜交加。有好事者找领导闹事,言之不公。领导不想惹事,便朝令夕改,十六名之后每人50。于是乎,该版友改Iif语句,领导抚其手云:辛苦了。

  领导之领导闻言此事,大怒,将领导痛斥一番,并言之不得扩大奖励范围。领导回来,踹该版友臀部一脚,斥责曰:笨蛋,重新搞个奖励方案。第一名500,二至四名300,五至八名200,其余不奖。该版友忍气吞声,重新Iif一番。

  所谓计划赶不上变化,Iif适应变化的能力不佳。因此此类问题当做一表,将奖励标准写入表中。领导说个话,放个屁,都只关乎表中数据的修改,而与代码无关。

标准表:
标准ID 下限 上限 金额
1          1      6   300
2          7     12  200
3         13    16  100

select *,dlookup("金额","标准表","下限<=" & [排名] & " and 上限>=" & [排名]) as 金额
from 业绩表
where 排名<=dmax("上限","标准表")

  标准表中甚至还可加上标准的适用时间和适用范围,以便满足更复杂的管理需要。


作者: 盗梦    时间: 2014-12-16 11:36
好思路
作者: roych    时间: 2014-12-16 13:25
条件表达式弹性较小,一般这种情况应该写成通用模块,只需要改参数即可。——当然,对初级用户来说难度有点大。
作者: Wanli_Li    时间: 2014-12-16 15:44
本帖最后由 Wanli_Li 于 2014-12-16 15:47 编辑

版主说的非常有理,以前为一个客户开发了一套系统,系统很大,涉及美元兑人民币的汇率问题,其实也就是每月进账那天,要将此前这一个月外币进账都使用这一个汇率换算,当时的汇率是6.832,也没想那么多,交付后客户也没什么问题,正好赶上金融危机,汇率一降再降,每个月要分别到四家客户那修改汇率,起初也觉得是个问题,不过还不算麻烦,问题是我每次去修改汇率,改好后,他们都会提出要求增加某种新功能,他想加个这样的报表,他想要个那样的窗体,加钱是不可能的事,本来一年的免费维护都过了两年了,可人家不这么想,就想不花钱做更多的功能。抓紧时间做了个汇率维护,按日期推至上次更新自动取时间段汇率,才得以解决。早知今日,何必当初呢。

作者: Wanli_Li    时间: 2014-12-16 22:18
国际集装箱货运代理系统
作者: cfedf    时间: 2014-12-18 07:33
哦,dlookup这样用,试试去。
作者: owen2016    时间: 2016-8-20 15:35
已经下载学习,谢谢
作者: lingjiang    时间: 2020-8-17 23:21
学习




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