2013-09-27 135 views
0

所以我正在做的是从vb.net中的多个数据源(存储过程)创建一个报告。我通过将它们放入Dataset并将其传递给报告来完成此操作。Telerik报告错误处理

因此,当我到达报表时,我最终得到了一个iif语句来处理跨存储过程不一致命名的多个字段(我无法更改名称),但需要进入相同的文本框。这里有一个例子:

=IIF(Fields.TableName <> '', Fields.TableName, IIF(Fields.usuTableName <> '', Fields.usuTableName, NULL))

正如你所看到的,他们都是一样的,只是名字不同因而存在压倒一切其他的恐慌。只有一个将被填充。但是,问题是如果其中一个字段值不存在...... I.E. Fields.usuTableName

举例来说,我们按日期过滤,因此没有从该日期范围的命名约定为Fields.usuTableName的存储过程返回任何内容,因此不会创建数据集,但会返回其他值。当报告进行渲染时,我们得到一个错误,因为Fields.usuTableName不存在,但Fields.TableName

enter image description here

我怎样才能确保一个字段名称是运行IF语句之前,是否有效?

回答

0

下面是我用使用它之前评估它的功能:

Public Shared Function GetValue(ByVal reportItem As Processing.ReportItem, ByVal field As String) As String 
    Try 
     Dim testdString As String 
     Try 
      testdString = reportItem.DataObject(field).ToString 
     Catch ex As Exception 
      'must not be date 
     End Try 

     Return reportItem.DataObject(field).ToString 

    Catch ex As Exception 
     Return "" 
    End Try 
End Function 

我把它叫做报表中的每个字段名