作者 :Suny Wong (@PCPartner Limited)
最近,我将我的VS2003的程序升级到VS2005。上网稳左好多资料,终于在博客园里面找到一篇叫“VS2003 WEB应用程序向VS2005的移植“的文章,解决了基本的升级问题。
接下来遇到的是水晶报表的移植问题,在网上稳左好多关于水晶报表在VS2005的使用的文章,都是讲在VS2005中不再支持“embedded report”嵌入式报表,即是以下事例中的报表形式:
con = new SqlConnection(Session["SQLCONNECTION"].ToString());
strSql = "SELECT * FROM htOrder";
scm = new SqlCommand(strSql, con);
sda = new SqlDataAdapter(scm);
ds = new DataSet();
sda.Fill(ds, " order ");
rptOrder.SetDataSource(ds.Tables["order"]);
crOrder.ReportSource = rptOrder;
你老细啊,五通我做的所有报表都要重做!!我昏啦,以前的方法甘简单,灵活,又五使考虑用户登录问题!
经过12个钟的study同研究水晶报表的WEB部署原理,我终于稳到在VS2005中继续使用EMBEDDED REPORT的方法:
首先说明在VS2005不能使用EMBBED REPORT的原因:
在VS2005中CR报表的版本是10.2.xxx,VS2003中的版本是9.0。CR9。0的版本是五支持WEB应用的。所以我在VS2003里面用的是CR10DEV版,版本号是10.0.33 。就是呢个版本的问题使到VS2005不能使用EMBBED REPORT
解决方法:
1.将在VS2003的项目里面引用的所有CR10的DLL,引用到VS2005里面。这时候见到他们的版本是10.0. 33,这样就OK了。
2.如果你是用VS2005内置的服务器去调试程序,调用报表后,程序可能会出现水晶报表的工具栏的图片不能显示和按钮不能起作用的现象。这是因为水晶报表的WEB应用,是建立在虚拟目录之上的。安装CR10 DEV时,会在IIS里面创建一个crystalrepottviewers10的虚拟目录,在程序里面用到的所有CR10的资源都在目录里面。所以我们要将这个目录所指向的FOLDER COPY到程序所在的根目录之下。现在,再运行一下PROGRAM,已经可以显示图片和执行按钮的脚本了!!(呢个问题搞左我一日去研究,起初仲以为VS2005不支持CR10.0.33)到目前为止已经可以在 VS2005上继续使用EMBBED REPORT啦,哈哈:)!
二.部署到目标SERVER的方法:
1. http://support.businessobjects.com/mergemodules找The Crystal Reports 10 merge modules, DOWNLOAD落来(83MB),然后解压,里面包括4个.MSM文件和一些说明文档.(注意:在BO的主页上有CR10 FOR VS2003 和CR10 FOR VS2005DE MERGE MODULE的,但要用PUSHEMBED REPORT的必须要用FOR VS2003的MERGE MODULE。)
2. 在.NET的PROJECT下,添加一个WEB安装PROJECT..(我用的WEB SETUP PROJECT是早VS2003中建立的升级到VS2005的)
3. .加入包含CRYSTAL REPORT10的PROJECT的输出内容.系统会自动检测到CRYSTAL REPORT10的依赖项.
4,在WEB SETUP PROJUECT图标上右键,然后选择添加-->合并模块.
去到刚才解压的目录,按需要选择要合并的模块,
5. 如果选择合并CrystalReports10_NET_EmbeddedReporting.msm模块,就需要在.NET下注册这个模块.选择已经加入SETUP项目中的CrystalReports10_NET_EmbeddedReporting.msm文件,在其属性页上展开
MergeModuleProperties属性,在Keycode属性中,输入一个license key(格式:"xxxxx-xxxxxxx-xxxxxxx")
6.生成SET UP PROJECT. OK!完全解决PUSH EMBED REPORT的使用同部署问题。
三.仍然存在的问题:
1. 原来VS2003的安装程序类在VS2005中,没有执行建立数据库的SQL脚本。
----请高手指教