代码之家  ›  专栏  ›  技术社区  ›  DarthVoid

报表生成器3.0:尝试在报表参数列表中循环时出现语法错误

  •  0
  • DarthVoid  · 技术社区  · 7 年前

    我正在努力做到以下几点:

    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
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Alan Schofield    7 年前

    你可以直接在表达式中这样做

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

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

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

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

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

    如果列可见性与预期相反,则可能需要反转结果(即<=-1)。