在SSRS报告表达式中添加两个字段值

时间:2012-10-01 10:34:46

标签: c# vb.net visual-studio-2010 reporting-services

我正在尝试在SSRS报告中的占位符表达式中添加两个报告字段:

= SUM(Fields!TOTPRICE.Value) + SUM(Fields!TAX.Value)

但是当我运行报告时,我在占位符值中出现错误。

以下是我如何创建DataSource到报告

enter code here     <DataSources>
<DataSource Name="DummyDataSource">
  <ConnectionProperties>
    <DataProvider>SQL</DataProvider>
    <ConnectString />
  </ConnectionProperties>
  <rd:DataSourceID>ef567ff-88fd-ef88f8f2b6b4</rd:DataSourceID>
</DataSource>

以下是我在报告中创建数据集的方法:

 `enter code here`  <DataSets>
<DataSet Name="CStore_POReport">
  <Fields>
    <Field Name="IDOBJECTNAME">
      <DataField>IDOBJECTNAME</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="CDEACCOU">
      <DataField>CDEACCOU</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NMEREQUE">
      <DataField>NMEREQUE</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="FLDTXTCONTACTPHONE">
      <DataField>FLDTXTCONTACTPHONE</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NMECOMPANY">
      <DataField>NMECOMPANY</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="FLDTXTPOBOX">
      <DataField>FLDTXTPOBOX</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NMESTREET">
      <DataField>NMESTREET</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NMECITY">
      <DataField>NMECITY</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NMESTATE">
      <DataField>NMESTATE</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="FLDTXTZIP">
      <DataField>FLDTXTZIP</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NUMQTYORDER">
      <DataField>NUMQTYORDER</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="DSCITEM">
      <DataField>DSCITEM</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="CURUNITDOLLARS">
      <DataField>CURUNITDOLLARS</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="TXTUNITOFMEASURE">
      <DataField>TXTUNITOFMEASURE</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="TOTPRICE">
      <DataField>TOTPRICE</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NUMTAXT">
      <DataField>NUMTAXT</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="TXTCOMMENTS">
      <DataField>TXTCOMMENTS</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="TAGTAX">
      <DataField>TAGTAX</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="NUMREQ">
      <DataField>NUMREQ</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="DTECREATED">
      <DataField>DTECREATED</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="TAX">
      <DataField>TAX</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="CRNCYID">
      <DataField>CRNCYID</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="CRNCY_SYMB_TXT">
      <DataField>CRNCY_SYMB_TXT</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="ITEM_CLS_CD">
      <DataField>ITEM_CLS_CD</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="ITEM_CD">
      <DataField>ITEM_CD</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
  </Fields>
  <Query>
    <DataSourceName>DummyDataSource</DataSourceName>
    <CommandText />
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
  </Query>
  <rd:DataSetInfo>
    <rd:DataSetName>CStore</rd:DataSetName>
    <rd:TableName>POReport</rd:TableName>
  </rd:DataSetInfo>
</DataSet>

http://i.stack.imgur.com/JYjdG.png

4 个答案:

答案 0 :(得分:2)

试试这个。

= CStr(SUM(CInt(Fields!TOTPRICE.Value)) + SUM(CInt(Fields!TAX.Value)))

好的我认为你的问题是由于你的两个字段的类型都是字符串而发生的,所以在你可以执行添加操作之前需要将它们转换为整数

您需要将结果转换为字符串才能将其显示在占位符

我为你创建了一个例子,首先是QUERY

enter image description here

在编辑模式下显示报告 enter image description here

你有没有看到我在第一栏中提出TOPPRICE,在第二栏中提出TAX,我为第三栏写了一个表达

= CStr(CInt(Fields!TOTPRICE.Value) + CInt(SUM(Fields!TAX.Value)))

这是结果

enter image description here

答案 1 :(得分:2)

如果有效,可以检查这些选项

1.尝试= SUM(VAL(Fields!TOTPRICE.Value))+ SUM(VAL(Fields!TAX.Value))

2.确保您的查询填充了所有必需的列

3.确保您的查询具有与标记下的报告中提到的列标题名称相同的列标题。例如,如果您已定义TAX但查询将列标题返回为tax / Tax,则可能会产生问题,因为RDL后端是XML且区分大小写。

答案 2 :(得分:0)

您的问题与数据类型不匹配有关。 This链接可能会对您有所帮助。

答案 3 :(得分:0)

终于明白了解决方案...我很惊讶有多少人有同样的问题但是没有一个帖子可以清楚地解释这个问题的解决方案..

我找到了两个解决此问题的方法:

1)在项目设置中将目标框架从4.0更改为3.5

2)在system.web部分的web.config中添加以下行:

<trust legacyCasModel="true" level="Full"/>