水晶报表Pull模式,出现"没将物件参数设定为物件的执行固体"错误
我是通过下面的这些步骤来通过Pull模式来执行水晶报表的
1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。
2.拖放一个 CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt
文件。
3. 在代码中调用DataBind方法。
创建 .rpt 文件:
1) 在右击”解决方案游览器“,在弹出的菜单中选择”添加“--”添加新项“-->”
Crystal Report”
2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮,最后单击“确定“。
3)这里将弹出水晶报表设计器。
4) 右击报表中的”详细资料区”,选择“数据库”->“添加/删除数据库..."
5) 在弹出的”数据库专家“中,扩展”OLE DB(ADO)“选项,此时会弹出另外一个”OLE
DB(ADO)“窗口。
6) 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然
后 "Next"
7) 指定连接的信息
服务器 : ASPCN (您的机器是什么名字就写什么)
用户 ID: sa
密码:
数据库 : Pubs
8) 单击”Next“,最后单击”Finish“按钮。
9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。
10) 扩展”Pubs“数据库,扩展”表“,选择”Stores“表并将其加到”选定的表“区中,单
击”OK"按钮。
11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表,以及表中
的字段。
12) 拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你
想修改头部文字,则可以右击”页眉“区中的文字,选择”编辑文本对象“选项并进行编辑。
13) 保存,这样我们就有了一个水晶报表文件。
创建 CrystalReportViewer 控件
14) 回到前面的WebForm中,拖放一个Crystal Report Viewer控件到页面中去。
15) 调出Crystal Report Viewer控件的属性窗口,选择“DataBindings"区点击[...]
16) ”Crystal Report Viewer 数据绑定窗口”中,在右边的“可绑定属性”中选择”
ReportSource“,并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。
17) 此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预
览。 注意:在上面的例子中,CrystalReportViewer可以在设计时直接调用真实的数据,因
为此
时数据已经保存。在这种情况下,设计时当没有保存数据时,他是不能显示数据的。取而代这
的是显示一些虚拟的数据,只有在执行时才会选取真实的数据。
Code Behind 程序设计
18) 在Page_Load方法中调用DataBind方法。
执行你的程序
19) 创建并运行你的程序!
=====================================================================
我执行后出现以下错误:
======================================================================
並未將物件參考設定為物件的執行個體
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.NullReferenceException: 並未將物件參考設定為物件的執行個體
原始程式錯誤:
在執行目前 Web 要求期間,產生無法處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。
堆疊追蹤:
[NullReferenceException: 並未將物件參考設定為物件的執行個體]
CrystalDecisions.Web..get_7()
CrystalDecisions.Web.CrystalReportViewer.OnInit(EventArgs e)
System.Web.UI.Control.InitRecursive(Control namingContainer) +241
System.Web.UI.Control.InitRecursive(Control namingContainer) +179
System.Web.UI.Control.InitRecursive(Control namingContainer) +179
System.Web.UI.Page.ProcessRequestMain() +174
高手指教!!!