sql数据源过滤条件使用宏遇到问题

11753
12

伶俐 数据达人Lv4

发表于2018-12-18 13:25

悬赏1

已解决

楼主
本帖最后由 伶俐 于 2018-12-18 13:28 编辑

各位大神,我在写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")+"'"))#>  

最近看过此主题的会员

ddb

esen_4TUELCHD9M

Bono123

zhouxm

最佳答案

缱绻

发表于2018-12-18 13:25

只看该作者

取消 关注该作者的回复

当用户什么都不选,@bbq=昨天,
用户选择本月,@bbq=昨天,
用户选择其他月,@bbq为月末
这个是不是可以简化为用户if(len(@bbq)=0|@bbq=本月,DD.LOAD_DATE=昨天,DD.LOAD_DATE=月末)
12个回答

只看楼主

semi33 初学数据Lv2

发表于2018-12-18 13:34

只看该作者

取消 关注该作者的回复

沙发

报的错是什么呀

伶俐 数据达人Lv4

发表于2018-12-18 13:39

只看该作者

取消 关注该作者的回复

板凳

semi33 发表于 2018-12-18 13:34
报的错是什么呀

如果写DD.LOAD_DATE= '<#=od(@bbq,"d=lastday")#>' ,能正常运算,但是如果今天不是月底,需要显示昨天的数据,这样这个式子就无法满足,我修改成上面的表达式后,直接就不能计算了,报错  null

缱绻 数据领袖Lv6

发表于2018-12-18 13:25

只看该作者

取消 关注该作者的回复

地板

当用户什么都不选,@bbq=昨天,
用户选择本月,@bbq=昨天,
用户选择其他月,@bbq为月末
这个是不是可以简化为用户if(len(@bbq)=0|@bbq=本月,DD.LOAD_DATE=昨天,DD.LOAD_DATE=月末)

伶俐 数据达人Lv4

发表于2018-12-18 14:03

只看该作者

取消 关注该作者的回复

5#

本帖最后由 伶俐 于 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'))       但是在数据源中应该怎么修改么

伶俐 数据达人Lv4

发表于2018-12-18 14:06

只看该作者

取消 关注该作者的回复

6#

本帖最后由 伶俐 于 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'))#>'

缱绻 数据领袖Lv6

发表于2018-12-18 14:18

只看该作者

取消 关注该作者的回复

7#

伶俐 发表于 2018-12-18 14:06
我修改成这样,还是报错 null     
DD.LOAD_DATE=''

把主题表字段写到宏表达式里面去吧,另外判空用len(@bbq)=0, 逻辑或用“|”表示 重新写看看

伶俐 数据达人Lv4

发表于2018-12-18 14:28

只看该作者

取消 关注该作者的回复

8#

缱绻 发表于 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')+"'")#>

缱绻 数据领袖Lv6

发表于2018-12-18 14:32

只看该作者

取消 关注该作者的回复

9#

伶俐 发表于 2018-12-18 14:28
好像也不可以 ,我是这样写的

左右括号检查一下,这块明显少括号了啊

伶俐 数据达人Lv4

发表于2018-12-18 14:42

只看该作者

取消 关注该作者的回复

10#

本帖最后由 伶俐 于 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')+"'")#>

缱绻 数据领袖Lv6

发表于2018-12-18 14:46

只看该作者

取消 关注该作者的回复

11#

伶俐 发表于 2018-12-18 14:42
嗯嗯,我重新修改了一下,但是这种写法计算的时候还是报错,不知道是不是我的格式问题,大神有时间再看一 ...

稍等我本地测试下

上一页12下一页共2页

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号