montaque

小碗喝酒,小口吃肉

博客园 首页 新随笔 联系 订阅 管理
分享一个同事今天碰到的问题。

水晶报表的项目,采用strongtyped report。运行的时候,总是报错。

Dim crInventoryListReport as New InventoryList() ' 报表文件

CrystalReportViewer1.ReportSource = crInventoryListReport

查了一下BO的kb,只有一篇文章说采用强类型的report 的时候,改report 的buildanction要选择嵌入的资源。这一点没有问题,看了一下设置,他也设置了嵌入。
http://support.businessobjects.com/library/kbase/articles/c2012623.asp

可是就是会报错,说再资源清单中找不到该report。

我用ildasm 看了一下资源也都在,其实这种问题,一定是namespace 的问题。

其实报错,主要的原因就是你的report 后面的cs文件的namespace一定要根rpt文件所在的namespace一致(主要是目录结构)

具体可以这样看一下。
编译你的exe,比如 a.exe

ildasm a.exe /out:a.il
看一下他会dump出所有的资源文件,看一下你的rpt文件名。比如是 MontaqueInc.ProjectA.InventoryList.rpt
请保证你的InventoryList.cs 文件的namespace是 MontaqueInc.ProjectA就可以了。


主要代码其实就是:
 Type type1 = base.GetType();
      Stream stream2 = type1.Module.Assembly.GetManifestResourceStream(type1, this.ResourceName);

reportclass 所在的namespace来匹配资源文件。


比较遗憾的是,发生这种情况大部分是我提到的这种reason,而bo和微软并没有提供相关的kb,看了一下ms的新闻组,很多这样的问题都没有被answer。:(




posted on 2005-06-03 10:26  montaque  阅读(2826)  评论(4)    收藏  举报