工作狂: 发表于 2024-2-28 08:28:40

无默认值的时间范围过滤

怎样在矩表\数据集或sql过滤没有默认值的日期范围

Bella.Yuan 发表于 2024-2-29 11:55:31

本帖最后由 Eden.Sun 于 2024-4-30 15:28 编辑

工作狂: 发表于 2024-2-29 09:14
"SELECTmo.`创建时间`
FROM
`生产单主表` AS mo
************************************************最佳答案******************************************** https://gcdn-cdn.grapecity.com.cn/data/attachment/forum/202211/22/134426bukngx46gp06og60.png
您好,可以参考下面的写法,下面的写法我用的是AR16:

桌面设计器:
="select * from 销售明细 where 1=1 " & IIF(IsNothing(Parameters!开始日期.Value) or IsNothing(Parameters!结束日期.Value), "", " and 订购日期 between'" & Format(Parameters!开始日期.Value, "yyyy-MM-dd") & "' and '" & Format(Parameters!结束日期.Value, "yyyy-MM-dd") & "'")

web设计器:
select * from 销售明细 where 1=1 {IIF(IsNothing(@开始日期) or IsNothing(@结束日期), "", " and 订购日期 between'" & Format(@开始日期, "yyyy-MM-dd") & "' and '" & Format(@结束日期, "yyyy-MM-dd") & "'")}


Eden.Sun 发表于 2024-2-28 09:17:34

问题描述:报表参数过滤,默认值查询。


问题解决:
您好,这个做不到的。您也说了要根据范围过滤。那么参数没有值的话,这个过滤范围是无法确定的
如果您不想给参数设置默认值的话那就需要在设置矩表过滤条件的时候进行设置,给参数一个默认值:
比如下面这个:{IIF(@p1="", "vl", @p1)}    当参数 p1 的值是空串时,我给一个默认值v1



如果您使用的是sql的话,这个可以使用动态sql来处理,
您可以参考这篇帖子:https://gcdn.grapecity.com.cn/showtopic-84469-1-1.html

工作狂: 发表于 2024-2-28 11:13:04

本帖最后由 工作狂: 于 2024-2-28 11:14 编辑

Eden.Sun 发表于 2024-2-28 09:17
问题描述:报表参数过滤,默认值查询。



时间范围没有选择的时候,有数据.但是选择了日期范围就没有数据了

Bella.Yuan 发表于 2024-2-28 11:42:27

工作狂: 发表于 2024-2-28 11:13
时间范围没有选择的时候,有数据.但是选择了日期范围就没有数据了

您好,可以用文本框绑定报表参数看看,预览先看看报表参数的值是否和您实际数据一样,目前怀疑是参数数据不对影响的,可以从这个角度去排查一下。如果确认是这个原因,可以使用format函数设置一下报表参数的格式和实际数据一样吗,然后再做过滤。

工作狂: 发表于 2024-2-29 09:14:11

Eden.Sun 发表于 2024-2-28 09:17
问题描述:报表参数过滤,默认值查询。




"SELECTmo.`创建时间`
FROM
`生产单主表` AS mo
WHERE
1 = 1" &
IIF(Parameters!生产日期 1.Value = "" OR Parameters!生产日期2.Value = "",sql," and mo.`创建时间`>='" & Parameters!生产时间1.Value & "'" & " and mo.`创建时间`<='" & Parameters!生产时间2.Value & "'" & " " )                   使用动态sql验证会报错

页: [1]
查看完整版本: 无默认值的时间范围过滤