永洪社区

标题: 通过脚本 获取日期过滤组件 选中的日期 [打印本页]

作者: lorna    时间: 2022-1-17 18:46
标题: 通过脚本 获取日期过滤组件 选中的日期
请教一下   如何通过脚本  获取日期过滤组件 选中的日期
想将过滤组件中选中的日期作为参数传给sql里对应的参数

作者: 环环    时间: 2022-1-17 18:55
场景:日期过滤组件再范围模式下,获取选中日期的左右边以及右边值。
参考脚本(页面变化时运行):
if(日期过滤1.firstDates!=null&&日期过滤1.secondDates!=null)
{
var start=日期过滤1.firstDates[0] //获取左边值
var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM');

var end=日期过滤1.secondDates[0]; //获取右边值
var a1= parseDate(end.substring(1,(end.length())),'yyyy-MM');

}



作者: lorna    时间: 2022-1-18 09:10
如果日期过滤组件为单选呢
作者: lorna    时间: 2022-1-18 09:11
永洪tech-秀秀 发表于 2022-1-17 18:55
场景:日期过滤组件再范围模式下,获取选中日期的左右边以及右边值。参考脚本(页面变化时运行):if(日期过 ...

如果日期过滤组件为单选呢
作者: 环环    时间: 2022-1-18 10:07
那就只要firstDates的
if(日期过滤1.firstDates!=null)
{
var start=日期过滤1.firstDates[0] //获取左边值
var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM');

}
作者: lorna    时间: 2022-1-18 10:58
永洪tech-秀秀 发表于 2022-1-18 10:07
那就只要firstDates的
if(日期过滤1.firstDates!=null)
{

我按照这个将日期赋值给了参数a,然后sql里日期>=参数a
但是我在预览的时候,选择2022/01/17的时候,出来的结果是所有日期的数据啊
作者: 环环    时间: 2022-1-18 11:08
debug一下那个日期,看看弹出的是什么呢
作者: lorna    时间: 2022-2-10 14:42
永洪tech-秀秀 发表于 2022-1-18 11:08
debug一下那个日期,看看弹出的是什么呢

if(日期过滤1.firstDates!=null)
{
var start=日期过滤1.firstDates[0] //获取左边值
var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
param['指定日期']=toSQLDate(a0, DType.DATE_TIME);
}
debug(param['指定日期'])

我用的以上这段脚本,日期过滤组件默认显示昨天,也就是2022/2/9,但是debug出来的结果是2022/1/9,选择其他日期也是一样,总是比选择的日期少一个月
作者: 环环    时间: 2022-2-10 14:54
日期过滤组件的月份默认是从0开始的,0-11月,如果是脚本获取作为参数用的需要加上一个月
作者: lorna    时间: 2022-2-10 15:19
永洪tech-秀秀 发表于 2022-2-10 14:54
日期过滤组件的月份默认是从0开始的,0-11月,如果是脚本获取作为参数用的需要加上一个月 ...

if(日期过滤1.secondDates!=null)
{
var start=日期过滤1.secondDates[0] //获取左边值
var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
param['指定日期']=toSQLDate(a0, DType.DATE_TIME);
param['指定日期2']=dateAdd(param['指定日期'],"month",1);
}
debug(param['指定日期2'])

加了行指定日期2的,debug不出来日期
作者: 环环    时间: 2022-2-10 15:28
这样子就可以吧

if(日期过滤1.secondDates!=null)
{
var start=日期过滤1.secondDates[0] //获取左边值
var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
param['指定日期2']=dateAdd(param['指定日期'],"month",1);
}
debug(param['指定日期2'])

作者: lorna    时间: 2022-2-10 15:31
永洪tech-秀秀 发表于 2022-2-10 15:28
这样子就可以吧

if(日期过滤1.secondDates!=null)

是不是少个param['指定日期']的赋值
作者: 环环    时间: 2022-2-10 15:33
哦对,可以把变量a0改成param['指定日期']
if(日期过滤1.secondDates!=null)
{
var start=日期过滤1.secondDates[0] //获取左边值
param['指定日期']=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
param['指定日期2']=dateAdd(param['指定日期'],"month",1);
}
debug(param['指定日期2'])
作者: lorna    时间: 2022-2-10 15:39
永洪tech-秀秀 发表于 2022-2-10 15:33
哦对,可以把变量a0改成param['指定日期']
if(日期过滤1.secondDates!=null)
{

弹出null
作者: 美滋滋    时间: 2022-2-10 15:50
lorna 发表于 2022-2-10 15:39
弹出null

那是因为你的日期过滤组件没有选择任何日期吧?
作者: 环环    时间: 2022-2-10 15:55
对,要选择数据才行,而且日期过滤组件必须要绑定日期类型的字段
作者: lorna    时间: 2022-2-10 16:04
美滋滋 发表于 2022-2-10 15:50
那是因为你的日期过滤组件没有选择任何日期吧?

可能弹出null是因为默认状态是空值,虽然我确实选择日期了,因为日期组件设置的是默认显示昨天的
当选择其他日期后还是显示1个月前日期,抓狂
作者: 美滋滋    时间: 2022-2-10 16:09
本帖最后由 美滋滋 于 2022-2-10 16:10 编辑
lorna 发表于 2022-2-10 16:04
可能弹出null是因为默认状态是空值,虽然我确实选择日期了,因为日期组件设置的是默认显示昨天的
当选择 ...

不会啊,我这边测试了,没有问题啊!
if(日期过滤1.firstDates!=null)
{
    var start=日期过滤1.firstDates[0] //获取左边值
    var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
    param['指定日期']=toSQLDate(a0, DType.DATE);
    param['指定日期2'] = toSQLDate(dateAdd(param['指定日期'],'month',1), DType.DATE)
    debug(param['指定日期2'] )
}

作者: lorna    时间: 2022-2-10 16:10
永洪tech-秀秀 发表于 2022-2-10 15:55
对,要选择数据才行,而且日期过滤组件必须要绑定日期类型的字段

肯定是绑定了日期类型的字段,因为在组件里可以选择不同日期
我感觉是获取组件的日期没问题,但是无法加一个月,因为我不管debug指定日期还是指定日期2,出来的都是一个月前的日期
作者: lorna    时间: 2022-2-10 16:11
美滋滋 发表于 2022-2-10 16:09
不会啊,我这边测试了,没有问题啊!
if(日期过滤1.firstDates!=null)
{

回复能发图么,我好想截图证明下
作者: 美滋滋    时间: 2022-2-10 16:11
lorna 发表于 2022-2-10 16:11
回复能发图么,我好想截图证明下

你把我的代码替换一下你的脚本试试呢?
作者: 环环    时间: 2022-2-10 16:15
我用的是正常的,看下日期过滤组件的选择的日期,再加一句这个脚本,看看弹出的什么呢
debug(formatDate(param['指定日期2'],"yyyy-MM-dd"))
作者: 环环    时间: 2022-2-10 16:21
lorna 发表于 2022-2-10 16:11
回复能发图么,我好想截图证明下

可以发截图,高级模式里面,通过图片或者附件上传
作者: lorna    时间: 2022-2-10 16:38
美滋滋 发表于 2022-2-10 16:11
你把我的代码替换一下你的脚本试试呢?

你的代码出来的debug结果确实是2/9的,由于param[指定日期]我是需要放在sql里进行动态查询的,所以我把你代码里的指定日期和指定日期2换了个位置,然后指定日期参数的设置成默认状态是2022/2/1,出来的debug(指定日期)=2022/3/1,并且数据也取不出来
代码就是以下这样,我放在了“装载时运行”和“变化时运行”里面,指定日期2默认时空值:

if(日期过滤1.firstDates!=null)
{
    var start=日期过滤1.firstDates[0] //获取左边值
    var a0=parseDate(start.substring(1,(start.length())),'yyyy-MM-dd');
    param['指定日期2']=toSQLDate(a0, DType.DATE);
    param['指定日期'] = toSQLDate(dateAdd(param['指定日期'],'month',1), DType.DATE)
//    debug(param['指定日期'] )
}
作者: 美滋滋    时间: 2022-2-10 16:41
lorna 发表于 2022-2-10 16:38
你的代码出来的debug结果确实是2/9的,由于param[指定日期]我是需要放在sql里进行动态查询的,所以我把你 ...

你换了位置的话,下面的语句也要变化啊!!
param['指定日期'] = toSQLDate(dateAdd(param['指定日期'],'month',1), DType.DATE)
=>
param['指定日期'] = toSQLDate(dateAdd(param['指定日期2'],'month',1), DType.DATE)
作者: 环环    时间: 2022-2-10 16:57
动态查询和换位置有什么关系呢,截图看看呢,图片不要直接粘贴,通过图片上传
作者: yhdata_MQeH9hxg    时间: 2024-9-8 00:09
环环 发表于 2022-2-10 16:15
我用的是正常的,看下日期过滤组件的选择的日期,再加一句这个脚本,看看弹出的什么呢
debug(formatDate(pa ...

请教一下,怎样把日期过滤组件获取到的两个日期作为参数,用在networkday这个函数里




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4