Office中国论坛/Access中国论坛

标题: 新手请教一句在access的sql [打印本页]

作者: bqq    时间: 2010-12-10 11:42
标题: 新手请教一句在access的sql
insert into TS部门人员活动时间总览表 (人员名称, 时间, 地区, 活动名称)
select TS部门人员活动表.人员名称, TS部门人员活动表.到达时间 + 32, TS部门人员活动表.到达的目的地, TS部门人员活动表.活动名称  from TS部门人员活动表
where TS部门人员活动表.到达时间 <= #2010-12-3# and TS部门人员活动表.到达时间 +32 >= #2010-11-1# and
case when TS部门人员活动表.离开时间 <=#2010-12-3# then ( where TS部门人员活动表.到达时间 +32 <= TS部门人员活动表.离开时间)
else ( where TS部门人员活动表.到达时间 +32 <= #2010-12-3# )
end

说语法错误,操作符丢失,实在是当局者迷,请各位高人指点,谢谢

作者: roych    时间: 2010-12-10 13:40
请上传附件~~
作者: todaynew    时间: 2010-12-10 14:12
bqq 发表于 2010-12-10 11:42
insert into TS部门人员活动时间总览表 (人员名称, 时间, 地区, 活动名称)
select TS部门人员活动表.人员 ...

时间和日期的加减法,需要用DateAdd函数。你在VB设计视图下,搜索一下该函数的用法,就什么都明白了。
作者: bqq    时间: 2010-12-10 14:40
谢谢大大。我是access 2007环境的。试过不用case那部分是可以运行的。感觉是case那里有什么问题,因为自己写的,是在自己看不出来。。。求救。谢谢
作者: t小宝    时间: 2010-12-10 19:24
ACCESS的SQL语句中没有case、else、end等关键词吧
作者: aslxt    时间: 2010-12-11 17:36
case那部分可用iif函数代替
作者: bqq    时间: 2010-12-11 20:04
感谢aslxt的建议,确实我用iif实现了 。可能access的sql不支持case把。谢谢
并且用到了嵌套
iif (nz(TS部门人员活动表.离开时间,0)=0,TS部门人员活动表.到达时间 +15<=#2010-12-16#,iif (TS部门人员活动表.离开时间 <=#2010-12-16#,TS部门人员活动表.到达时间 +15 <= TS部门人员活动表.离开时间,TS部门人员活动表.到达时间 +15<=#2010-12-16#))
作者: aslxt    时间: 2010-12-11 23:29
回复 bqq 的帖子

是的,case 不能用于access!




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