我创建了一个rdlc报表。我的表单上有一个reportViewer。当我尝试加载报表时,我得到:“尚未指定报告'xxxx.rdlc'的报告定义”。我无法解决这个问题。我有一个包含报告所需数据的数据表。我将此dataTable加载回数据库中名为“FinalReport”的表。(我之所以这样做,是因为该rdlc需要某种类型的dataSource。)我的报告中有一个表(table1)。这是我的代码(在报表查看器所在的窗体内):
this.finalDataReportTableAdapter.Fill(this.nehasitDataSet.FinalDataReport);
localReport.ReportEmbeddedResource = @"Resources\VisibleAssets.rdlc";
//I'm not so sure about the following line, but it's the only line that prevented me from getting an error ("no reportdefinition defined"
using (StreamReader rdlcSR = new StreamReader(@"Resources\VisibleAssets.rdlc"))
{
localReport.LoadReportDefinition(rdlcSR);
localReport.Refresh();
}
this.reportViewer.RefreshReport();
我还将报表连接到dataTable,将reportViewer连接到报表,我真的看不出问题所在,我在Google上搜索了一下。
任何帮助都将不胜感激。
6条答案
按热度按时间anauzrmj1#
导致此问题的原因有多种,有时仅在将同一应用程序发布到
IIS
时才会出现此问题。如果相关位置中存在报告文件(*.rdlc),但问题仍然存在,您可以尝试以下方法来解决此问题:然后将
Build Action
属性从YourReportName.rdlc
文件的属性更改为Embedded Resource
。xtupzzrd2#
我得到了相同的错误,但我以不同的方式加载我的报告。我遵循了MSDN上的说明。除了他们引用
ReportEmbeddedResource
的地方,我使用了ReportPath
。当我进行更改时,我的报告加载。我的XAML
还有:
确保将报表文件复制到输出目录。如果使用类似
../../Myreport.rdlc
的语法,则可能不会复制到输出目录。确保引用的是正确版本的
ReportViewer
dll。当我转到"引用"〉"添加引用..."〉"程序集"〉"扩展"并找到报表查看器dll时,它是旧版本。我需要显式导航到C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewer\Microsoft.ReportViewer.WinForms.dll
查找最新的。如果你弄错了,你会得到一个错误
报表定义无效。详细信息:报表定义的目标命名空间"http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"无效,无法升级。
gwbalxhn3#
在何处将localReport与reportViewer关联?而不是:
我使用了:
似乎对我很有效。
6uxekuva4#
正如你所说的,因为rdlc需要某种类型的数据源:)这是一个棘手的问题,在报表查看器和解决它,我写了一个方法,将绑定报表直接从Datatable:
要实现此方法,您必须指定将datasetableadapter的字符串仅作为名称,但我们的报表将从数据表中获取要绑定的数据(我们将欺骗报表查看器:))
我希望这会有帮助:)。
fnx2tebb5#
我的一个报告也出现了同样的问题,那是一个本地的嵌入式报告。
1.我没有设置
ReportEmbeddedResource
属性。1.当我确实设置了
ReportEmbeddedResource property
时,它仍然给出了错误,因为报告名称的大小写不正确-myApp.reports.rptMyJobstatus.rdlc
而不是myApp.reports.rptMyJobStatus.rdlc
。因此,您需要检查这两个条件。
83qze16e6#
如果您在代码中设置ReportEmbeddedResource属性而不是报表路径,则将生成操作属性从XYZ.rdlc文件的属性更改为嵌入式资源将帮助您解决大部分问题。