Office中国论坛/Access中国论坛

标题: 关于查询中如何输入判断语句 [打印本页]

作者: wonderfeng    时间: 2006-9-1 07:13
标题: 关于查询中如何输入判断语句
新建一张表,根据此表建立查询

想新增一个字段 实现

if a is null  then c-b
elseif b is null then c-a
elseif a is null and b is null then c
elseif c-a-b

a b c 是查询中的三个字段,我在后面的空白字段点击右键 选择"生成器" 输入以上代码会 报错"输入的表达式包含无效语法,你可能没有输入运算符的运算对象",此时 a 显示高亮

请大家指点!
作者: 一点通    时间: 2006-9-1 07:37
查询中一般采用IIF的方法
作者: wonderfeng    时间: 2006-9-1 07:44
那这样的语句怎么写呢
作者: 一点通    时间: 2006-9-1 07:48
iif(isnull(a),c-b,iif(isnull(b),c-a,iif..........................))))
作者: wonderfeng    时间: 2006-9-1 07:59
可行

可是当你打开的时候会弹出一个 "参数输入值"的一个对话框 它要你输入a字段 b字段 c字段的值

这个要紧么?
作者: skill0516    时间: 2006-9-1 08:11
又学会了一招!
作者: wonderfeng    时间: 2006-9-1 09:17
接着上面问一个问题:

物料1

月份  本月应收 本公司部门    外协部门     本月结余

6       c        a            b       IIf(IsNull(a),IIf(IsNull(b),c,c-a),IIf(IsNull(b),c-a,c-a-b)))

7     =上期的期末值

物料2

……

物料3

……

如何来按照这个本期结余来搞出期末多少?每个月的期末又是下个月期初!当然先给定一个期初值

请大家指点!

作者: wd0001    时间: 2006-9-1 16:05
支持
作者: 一点通    时间: 2006-9-1 16:43
iif拼写错误


IIf(expr, truepart, falsepart)





IIf 函数的语法含有下面这些命名参数:














部分


描述





expr


必要参数。用来判断真伪的表达式。





truepart


必要参数。如果 exprTrue,则返回这部分的值或表达式。





falsepart


必要参数。如果 exprFalse,则返回这部分的值或表达式。
作者: wonderfeng    时间: 2006-9-1 16:57
拼错了?

不管了,能不能帮我看看期初和期末的值怎么弄出来啊?

这个好像不能用dsum 吧
作者: 一点通    时间: 2006-9-1 17:09
请到这里看下

http://www.office-cn.net/vvb/dispbbs.asp?BoardID=2&replyID=31575&id=46032&skin=0
作者: wonderfeng    时间: 2006-9-1 17:28
一点通大哥:有没有什么Access帮助类的小册子,手头什么资料都没有,摸的太累了
作者: fan0217    时间: 2006-9-1 17:50
在查询中不能使用语句,只能使用函数。
作者: wonderfeng    时间: 2006-9-1 17:58
那关于函数的小册子也行
作者: 一点通    时间: 2006-9-1 18:02
以下是引用wonderfeng在2006-9-1 9:28:00的发言:
一点通大哥:有没有什么Access帮助类的小册子,手头什么资料都没有,摸的太累了

http://www.office-cn.net/forum.php?mod=viewthread&tid=35116



http://www.office-cn.net/forum.php?mod=viewthread&tid=36496

[此贴子已经被作者于2006-9-1 10:03:51编辑过]


作者: wonderfeng    时间: 2006-9-1 19:11
我是这么写的

期末:dsum(IIf(IsNull(a),IIf(IsNull(b),c,c-a),IIf(IsNull(b),c-a,c-a-b))),"此查询名","月份='"&[月份]&"'")

但是它报错“该特定字段 "[月份]"可以参考SQL语句中From子句列表中的多个表”,我猜想可能是它不知道用哪个[月份]了,因为在这张查询中可能有多个[月份]字段了

然后第一种方法:让它明确是哪个字段:条件改为:"月份='"&[指定一张查询表].月份&"'") 然后报错

"该表达式输入错误,或太复杂以致不能估值……"

方法二:重新拿这张查询做了另外一张查询,输入"期末":dsum(IIf(IsNull(a),IIf(IsNull(b),c,c-a),IIf(IsNull(b),c-a,c-a-b))),"此查询名","月份='"&[月份]&"'")---语法检查通过可是,出来的值是"#错误"的符号

遗憾的是这两种方法都不好……

[此贴子已经被作者于2006-9-1 11:12:24编辑过]


作者: cowcow110    时间: 2006-9-1 19:41
我的问题也是这个,版主为什么不帮我?非常希望,能不能举个例子?一下理解不了。
作者: wonderfeng    时间: 2006-9-1 22:50
晕,沉掉了……
作者: tmtony    时间: 2006-9-2 18:27
因为"[月份]" 可以在多个表中都有这个字段,所以要在"[月份]"前加上表的限定,以确定具体是哪个月份
作者: wonderfeng    时间: 2006-9-2 22:17
终于等到版主回了,可是我已经加了

然后第一种方法:让它明确是哪个字段:条件改为:"月份='"&[指定一张查询表].月份&"'") 然后报错



"该表达式输入错误,或太复杂以致不能估值……"




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