hbwh2002 发表于 2018-4-27 13:51:49

报表参数问题

本帖最后由 hbwh2002 于 2018-4-27 13:51 编辑

报表多值传参后,参数正常,但是查询不到结果,请问是怎么回事?


KearneyKang 发表于 2018-4-27 14:00:05

您好!
可以把设计的报表模板样式发过来看看,我看看具体什么问题导致的。

hbwh2002 发表于 2018-4-27 14:06:28

KearneyKang 发表于 2018-4-27 14:00
您好!
可以把设计的报表模板样式发过来看看,我看看具体什么问题导致的。

版主,你好,麻烦看看附件。

KearneyKang 发表于 2018-4-27 14:43:02

您好!
你是想实现下面这种效果是吧!

你遇到的问题主要是由于:
ODBC数据源不支持多值参数,可以使用动态拼接SQL语句的方法绕过此问题。
核心是:(1)脚本Function ArrayToString(list As Object()) As String    Dim re =""    For Each item AsString In list      If item IsNothing Then            ContinueFor      End If            If re<> "" Then            re +=","      End If            re += item    Next    Return re End Function(2)数据集SQL使用表达式 ="select * from city where CountryCode in ("& Code.ArrayToString( Parameters!CountryCode.Value ) & ")"

hbwh2002 发表于 2018-4-27 15:15:29

KearneyKang 发表于 2018-4-27 14:43
您好!
你是想实现下面这种效果是吧!



版主,您好。试了一下,报错了,麻烦再帮忙看看,谢谢。
另外,我需要的是多值输入的文本框。

KearneyKang 发表于 2018-4-27 15:31:53

本帖最后由 KearneyKang 于 2018-4-27 15:47 编辑

您好这个其实就是一个分割,用Split()函数就可以实现。具体你参考如下:
输入文本: A0012,A0013,A0014,
SQL 语句端:="select* from Test2WHERE 业务编号 In ('" + Join(Split( Parameters!P1.Value , ","), "', '") + "')"


运行结果:

hbwh2002 发表于 2018-4-27 15:42:52

KearneyKang 发表于 2018-4-27 15:31
文本框的这种形式我这边也需要在验证下。有结果了,我第一时间通知你

好的,谢谢。

KearneyKang 发表于 2018-4-27 15:57:24

不客气

KearneyKang 发表于 2018-4-28 15:43:13

数据库服务器实际执行SQL语句时,会把我们转换得到的、用逗号分隔的参数字符串,当成一个单一参数值,所以不可能查到数据。
请改一下数据集对话框中参数的表达式,不要JOIN。
另外,从Excel中拷贝出来的多个单元格内容之间,除了ASCII码10(换行)之外,还有ASCII码13(回车),因此需要把这个13去掉。所以,最后参数表达式应该是:
=Split(Replace([@hawblist], chr(13),""),chr(10))

页: [1]
查看完整版本: 报表参数问题