-
-
伶俐 数据达人Lv4
发表于2018-12-18 13:25
悬赏1
已解决
各位大神,我在写sql数据源,使用宏的时候 报错了,可不可以帮我看一下,是不是我的表达式有问题,是写在where条件里面的
需求:在写sql数据源时,需要判断数据期,当用户什么都不选,@bbq=昨天,用户选择本月,@bbq=昨天,用户选择其他月,@bbq为月末
<#=if(@bbq="","DD.LOAD.DATE='"+od(@bbq,"d-1")+"'",if(left(@bbq,6)=left(od(today()),6),"DD.LOAD.DATE='"+od(@bbq,"d-1")+"'","DD.LOAD.DATE='"+od(@bbq,"d=lastday")+"'"))#>
12个回答
semi33 发表于 2018-12-18 13:34
报的错是什么呀
如果写DD.LOAD_DATE= '<#=od(@bbq,"d=lastday")#>' ,能正常运算,但是如果今天不是月底,需要显示昨天的数据,这样这个式子就无法满足,我修改成上面的表达式后,直接就不能计算了,报错 null
当用户什么都不选,@bbq=昨天,
用户选择本月,@bbq=昨天,
用户选择其他月,@bbq为月末
这个是不是可以简化为用户if(len(@bbq)=0|@bbq=本月,DD.LOAD_DATE=昨天,DD.LOAD_DATE=月末)
本帖最后由 伶俐 于 2018-12-18 14:10 编辑
缱绻 发表于 2018-12-18 14:00
当用户什么都不选,@bbq=昨天,
用户选择本月,@bbq=昨天,
用户选择其他月,@bbq为月末
是的,BBQ()=if(@bbq is null or @bbq = '' OR left(@bbq,6)=left(OD(today(),'D-1'),6),OD(today(),'D-1'),od(@bbq,'d=lastday')) 但是在数据源中应该怎么修改么
本帖最后由 伶俐 于 2018-12-18 14:10 编辑
缱绻 发表于 2018-12-18 14:00
当用户什么都不选,@bbq=昨天,
用户选择本月,@bbq=昨天,
用户选择其他月,@bbq为月末
我修改成这样,还是报错 null
DD.LOAD_DATE='<#if(@bbq is null or @bbq = '' OR left(@bbq,6)=left(OD(today(),'D-1'),6),OD(today(),'D-1'),od(@@bbq,'d=lastday'))#>'
伶俐 发表于 2018-12-18 14:06
我修改成这样,还是报错 null
DD.LOAD_DATE=''
把主题表字段写到宏表达式里面去吧,另外判空用len(@bbq)=0, 逻辑或用“|”表示 重新写看看
缱绻 发表于 2018-12-18 14:18
把主题表字段写到宏表达式里面去吧,另外判空用len(@bbq)=0, 逻辑或用“|”表示 重新写看看 ...
好像也不可以 ,我是这样写的<#if(len(@bbq)=0 | left(@bbq,6)=left(od(today(),'d-1',6,"DD.LOAD_DATE='"+od(today(),'d-1')+"'","DD.LOAD_DATE='"+od(@bbq,'d=lastday')+"'")#>
本帖最后由 伶俐 于 2018-12-18 14:45 编辑
缱绻 发表于 2018-12-18 14:32
左右括号检查一下,这块明显少括号了啊
嗯嗯,我重新修改了一下,但是这种写法计算的时候还是报错,不知道是不是我的格式问题,大神有时间再看一下么<#if(len(@bbq)=0 | left(@bbq,6)=left(od(today()),6),"DD.LOAD_DATE='"+od(today(),'d-1')+"'","DD.LOAD_DATE='"+od(@bbq,'d=lastday')+"'")#>