Range类型的参数怎么传递给存储过程

cleverwyq 2010-10-25 11:05:18
我在Report Designer中加了一个Date Range型的参数, report的数据源是一个存储过程
请问如何把这个参数传递给存储过程呢
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cleverwyq 2010-10-25
  • 打赏
  • 举报
回复
Name: MyDate Type:Date
Allow custom values: True
Allow multiple values:False
allow discrete values:False
allow range values : True
int64 2010-10-25
  • 打赏
  • 举报
回复
没有过,学习
cleverwyq 2010-10-25
  • 打赏
  • 举报
回复
不好意思, 是Crystal report
阿泰 2010-10-25
  • 打赏
  • 举报
回复
报表工具是什么?
阿泰 2010-10-25
  • 打赏
  • 举报
回复
DateFrom=Minimium({参数})
DateTo=Maximium({参数})

要用到这个参数,就要去掉你存储过程里的参数。

这样你首先需要在选择专家里,进行第一次数据过滤。也就是

日期字段<=DateTo
这个过滤式报表级的

然后可以做一个公式字段x1,把 日期字段>=DateFrom 和 日期字段<DateFrom分出来

做一个公式
if 日期字段< Minimium({参数}) then
1
else
2

然后按照这个x1分组,把数据分成两个不同的部分,就可以进行一些处理了。

cleverwyq 2010-10-25
  • 打赏
  • 举报
回复
阿泰的意思我懂了。

我想问的是假如 我的报表只能带一个参数,而且是range类型的
Command里面的那两个DateFrom, DateTo是局部变量, 不是传入的参数,
那么有办法从range类型的参数中分解出DateFrom, DateTo吗 ?

打扰阿泰很久了,呵呵, 马上结贴
阿泰 2010-10-25
  • 打赏
  • 举报
回复
前面说了。。你存储过程里用了时间参数,你就用不上这个区间参数。
存储过程的参数会自动在报表里生成对应的参数,而且是两个参数。

这种情况让报表参数去改,别折腾了,这个在报表层面上限制死了干啥。。人为增加开发难度
可以在前置界面上限制,传到报表里是两个参数上面啊。

话说。。你
“写了两个command, 分别处理CreateDate >= DateFrom and CreateDate <= DateTo 和 CreateDate < DateFrom 的, 再join一下”
这个跟直接写个CreateDate <= DateTo有啥区别。。返回的结果都一样,无非就是可以加个FLAG字段区别下数据部分,这个在报表里直接也能做。
cleverwyq 2010-10-25
  • 打赏
  • 举报
回复
我是写了两个command, 分别处理CreateDate >= DateFrom and CreateDate <= DateTo 和 CreateDate < DateFrom 的, 再join一下

Report的 参数形式是我这个系统传给我的, 限制死的, 必须是区间参数
救命阿。。。
阿泰 2010-10-25
  • 打赏
  • 举报
回复
那你写了这个command,CreateDate >= DateFrom and CreateDate <= DateTo 的话已经把数据都处理掉了

又哪来的CreateDate < DateFrom这部分数据?

要不你就直接在存储过程里只处理CreateDate <= DateTo部分
然后在报表里在分开处理
CreateDate >= DateFrom 和CreateDate < DateFrom 这两部分呗
这样的话就用两个单独的时间参数,不要用区间参数

cleverwyq 2010-10-25
  • 打赏
  • 举报
回复
谢谢阿泰兄

我开始也是这么做的,在专家里面过滤掉不需要的数据。

但是我碰到的问题是 我需要一个起始时间 DateFrom ,终止时间DateTo
我的数据库里面有一个叫 CreateDate, 类型是DateTime的字段

我需要对 CreateDate >= DateFrom and CreateDate <= DateTo 的记录做处理
但是 对 CreateDate < DateFrom的记录也要做其他处理。

如果在专家里做,< DateFrom 的数据就没有了。
所以我写了一个Command, 一定需要知道 这两个时间点,我就是不知道如何在SQL中把Crystal Reports中
Range类型的变量拆开, 类似CR中Maximum这样。
阿泰 2010-10-25
  • 打赏
  • 举报
回复
说到存储过程,假设你用到的是PULL模式直连数据库
如果你存储过程里面就带了两个参数的话,应该是用不上你定义的这个日期参数的
因为存储过程里的参数,会自动成为水晶报表的参数,后面的交互中,要用两个参数与数据库(存储过程)交互。

如果不带的话,那么可以使用选择专家,输入以下公式:

{字段} >= Minimium({参数}) and {字段} >= Maximium({参数})

注意Minimium({参数}) 和{字段} >= Maximium({参数})是区区间参数的两个边界值。

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧