需要表达式出现在其他地方

时间:2018-01-16 12:49:56

标签: sql-server reporting-services ssrs-2008

我有一个报告,它使用表达式为每个特定页面提供数据。我已经能够使报告显示正确的数据,但表达式所在的列不是必需的,表的其余部分将不适合页面。我需要摆脱列,但在报告的其他地方引用表达式。我尝试了一些方法,例如引用文本框但得到Scope错误。

我希望表达式显示绿线的位置,并使第一列不可见。

enter image description here

如何在所需位置引用此文本框的值?

当前的举报状态:

表达式="Load Number: " & Fields!TPLD_SYS_NO.Value & " | " & "Vehicle:" & Fields!TPLD_TPVH_REG.Value & " | " & Fields!TPLD_REF.Value

用于引用第一个表达式=ReportItems!TPLD_SYS_NO1.Value

的表达式

错误The value expression for the textbox 'textbox8' refers to the report item 'TPLD_SYS_NO1'. Report item expressions can only refer to other report items in the same grouping scope or a containing grouping scope

2 个答案:

答案 0 :(得分:0)

这是来自记忆,零测试我害怕所以它可能不太正确但它应该足够接近。

有两种选择。

  1. 如果报告只显示此表达式的一个值,那么您应该可以直接在“新”文本框中使用原始值表达式,但只有Fields!myField.value,请替换这些使用FIRST(Fields!myField.Value, "myDataset"),其中myDataset表示数据集的名称(必须包含引号)。

  2. 如果对报表进行分组,则此表达式将计算为两个或更多不同的值,则需要在最低组中添加一行,该行将包含自身或子组中的所有必填字段。我想我会说这与你的Total文本框的级别相同。所以Insert Row / Inside Group Above然后使用上面的表达式,但没有数据集名称。您应该无法指定此项,或者如果遇到问题,请将其指定为新文本框所在的行组的名称。

答案 1 :(得分:0)

要获得超出范围的值,您可以创建自定义代码函数来存储值并按如下方式分配文本:

="Load Details" + Code.Save_TPLD_SYS_NO(Fields!TPLD_SYS_NO.Value)

当您需要在某个其他位置调用该值时,您可以引用一个返回保存值的函数,如:

=Code.GetSaved_TPLD_SYS_NO(true)

在自定义代码中,您可以创建一个保存值的变量,该函数将类似于:

注意:这是未经测试的,代码来自内存,您可能需要调整一下才能获得正确的语法。

Public Dim Shared TPLD_SYS_NO As String ="";

function Save_TPLD_SYS_NO(value As String) As String
Begin
  TPLD_SYS_NO = value
  Return ""
End Function

function DisplayAndSave_TPLD_SYS_NO(value As String) As String
Begin
  TPLD_SYS_NO = value
  Return value
End Function

function GetSaved_TPLD_SYS_NO(resetValue as Boolean) As String
Begin
   Dim result As String = TPLD_SYS_NO 
   If resetValue=true Then
      TPLD_SYS_NO = ""
   End If
   Return result 
End Function