
条件太多的情况下应该放弃使用多层嵌套iif函数这种解决方式,因为一则表达式会非常冗长,二则嵌套层数过多可能超出数据库规格限制而报错。
建议但对创建一个运输公司代码对照表并录入相应数据,然后在SQL查询中运用DLookup函数检索出相应简码。例如建立如下代码表:
代码表
二位码 一位码
XJ A
RX B
LW C
19 D
利用DLookup函数检索出相应物流公司一位简码
DLookup("一位码","代码表","二位码=Left([单号],2)")
以性别字段为条件来判断工资的增长,可以用IIF函数来处理:
UPDATE 工资表 SET 工资表工资 = [工资]+IIf([性别]="男",200,100);
上面为更新查询的SQL语句。当然也可以写成:
UPDATE 工资表 SET 工资表工资 = [工资]+IIf([性别]="女",100,200);
相信这样,你就会理解IIF函数的意义了。
看来还是没有完全理解IIF()函数类别多时,可以适当嵌套IIF()来解决问题的
你可以自己试着做一下,如果没有成功,再告诉你^_^
非嵌套IIF()函数时,标准答案如下:
UPDATE 商品 SET 商品单价 = [单价]IIf([类别]="文具",09,105) WHERE (((商品类别)="文具" Or (商品类别)="日用品"));
嘿嘿,不要再问了,给分吧谢谢
sql="select from table where 字段 "& iif(="all"," like '' ","='"&[全部]&"'" )
使用IIF,进行太多条件判断是很复杂的,建立 您使用switch函数来替换之,会让查询 简单很多
一般IIF是两个条件,或最多3个,如果超过3个,最好使用access的switch函数
这是根据我们Access中国论坛多年的编程经验得出来的,您可以尝试一下,也可到论坛去尝试找找问题的答案
或者是内容里多了),或少了,号之类
Access可以用iif()+ronud()函数实现roundup()这个功能,例如小数a,向上保留1位小数,iif(round(a,2)>round(a,1),round(a,1)+01,round(a,1))。说明:这是就是数学的语言,当a的2位小数大于1位小数,把1位小数加01,否则就是a的1位小数。
就函数本身来说,这样写会把 >0 和 <10000 看作是条件,当然出错了。。
如果你想让结果显示为 >0 或 <10000 ,应该这样写:
IIf([PayType]="M",">0","<10000")
而如果你想让结果显示为一个 >0 或 <10000 的数值,比如 2 或 9354 ,则应该这样写:
IIf([PayType]="M",2,9354)
就表的有效性规则来说,是不允许用表的其他字段来定义规则的!
所以,即使函数正确,字段 [PayType] 也不能作为其他字段的规则来用。
你语法没错
select
行业,len(行业)
from
表名
看看是不是那个为空的,长度也是空
不行的话你改成这样试试
select
IIf([行业]
Is
Null
or
trim([行业]=''),"其他类",[行业])
from
表
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)