【问题标题】:Report Builder 3.0: syntax error when trying to loop through list of report parametersReport Builder 3.0:尝试遍历报告参数列表时出现语法错误
【发布时间】:2018-02-02 17:00:14
【问题描述】:

我正在尝试执行以下操作:

  1. 提供参数的可用值列表。用户可以选择多个值或无。
  2. 如果选定参数列表中存在某个值,则显示相应的列。如果没有,请隐藏该列。

为此,我编写了一个自定义函数,该函数接受一个整数,检查该整数是否存在于参数列表中,并输出 False/True 以隐藏/显示该列。

参数示例:

Label          Value
Pallet         1
Item           2
.
.
.
nth-label      n

代码: Report Builder 3.0 说我在第 8 行有一个语法错误,但我不确定它可能是什么。

dim parm_array() as String
dim col_num as Integer 
dim i as Integer

function hide_column (ByVal col_num as Integer) as Boolean
    parm_array = Split(Join(Report.Parameters!show.Value,","), ",")
    for i in LBound(parm_array) To UBound(parm_array)
        if col_num = CInt(parm_array(i)) then 
            hide_column = 0
            exit for
        else
            hide_column = 1
        end if
    next
end function

【问题讨论】:

    标签: vba function reporting-services sql-server-2008-r2 reportbuilder3.0


    【解决方案1】:

    您可以直接在表达式中执行此操作,例如

    =Array.IndexOf(Parameters!myParameter.Value, 1) > -1
    

    注意:如果您将参数类型保留为默认文本,则表达式必须像这样引用值

    =Array.IndexOf(Parameters!myParameter.Value, "1") > -1
    

    或者为了可读性,我们可以使用参数标签而不是它的值

    =Array.IndexOf(Parameters!myParameter.Label, "Pallet") > -1
    

    如果列的可见性与您的预期相反,您可能需要反转结果(即

    【讨论】:

      猜你喜欢
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多