安装VS2017后,reportviewer另外下载安装的,繁体的,都没找到简体的。
修改原来的rdlc报表时,版本会不一样,导致客户端打印的时候报错。
Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. ---> Microsoft.Reporting.DefinitionInvalidException: The definition of the report '' is invalid. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: The definition of this report is not valid or supported by this version of Reporting Services. The report definition may have been created with a later version of Reporting Services, or contain content that is not well-formed or not valid based on Reporting Services schemas. Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition' which cannot be upgraded.
查看报表文件的时候发现
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
命名空间已经从
”http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition“
变成
”http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition“
为了和原来的版本保持一致,可以从报表文件的代码里面进行添加修改。
<TablixRows>
<TablixRow>
<Height>0.5cm</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="textbox20">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="哈哈(" & First(Fields!ManageType.Value, "A") & ")"</Value>
<Style>
<FontFamily>宋体</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox20</rd:DefaultName>
<Style>
<BottomBorder>
<Color>Black</Color>
<Style>Solid</Style>
<Width>1pt</Width>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textbox21">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=format(First(Fields!PrescriptDate.Value, "A"),"yyyy年MM月dd日")</Value>
<Style>
<FontFamily>宋体</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox21</rd:DefaultName>
<Style>
<BottomBorder>
<Color>Black</Color>
<Style>Solid</Style>
<Width>1pt</Width>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
<ColSpan>4</ColSpan>
</CellContents>
</TablixCell>
<TablixCell />
<TablixCell />
<TablixCell />
</TablixCells>
</TablixRow>
注意增加行要在 <TablixRowHierarchy>节点下增加 <TablixMember>。否则会提示行数量不对。
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<KeepTogether>true</KeepTogether>
</TablixMember>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<KeepTogether>true</KeepTogether>
</TablixMember>
2020-1-18 这两天将VS升级到2019了,然后又悲剧了一回。
虽然VS2019本身感觉挺好用的,但是reportviewer的问题真是坑死人。
我有些报表原本是引用了本地程序集,但是编译的时候无法加载程序集,这就很尴尬了,到现在也没解决,目前是先去掉引用,通过别的方式曲线救国。
过程:
安装完rdlc么有设计器,从扩展更新里面下载安装了最新rdlc设计器安装包。
从nuget里面下载了最新版的Microsoft.ReportingServices.ReportViewerControl.Winforms.150.1400.0和Microsoft.SqlServer.Types.14.0.314.76
编译的时候报错,框架问题,需要.net4.6, 我原本的是.net4.0,升级框架,解决问题,后面客户端升级可能就要一番功夫了。
经过测试,有了一个好处,修改rdlc命名空间会变成2016,但是打印不会出错误提示了。
就是引用自定义程序集出错有点烦,后续有解决了再更新。