【使用方法】
CrystalReportViewer控件的使用方法從CrystalReportViewer控件的LogOnInfo屬性獲取TableLogOnInfos實(shí)例。然后,將ConnectionInfo實(shí)例賦給TableLogOnInfos實(shí)例的每個TableLogOnInfo對象。
以下用四步來創(chuàng)建報(bào)表:
1.創(chuàng)建連接到安全的SQL Server數(shù)據(jù)庫的報(bào)表。
在“解決方案資源管理器”中,右擊粗體顯示的項(xiàng)目名,指向“添加”,然后單擊“添加新項(xiàng)”。 在“添加新項(xiàng)”對話框的“模板”視圖中,選擇“Crystal Report”模板。 在“名稱”字段中,輸入名稱“NorthwindCustomers.rpt”,然后單擊“打開”。 在“Crystal Reports 庫”對話框的“創(chuàng)建新 Crystal Report 文檔”面板中,選擇“使用報(bào)表向?qū)А薄?在“選擇專家”面板中,選擇“標(biāo)準(zhǔn)”后,單擊“確定”。出現(xiàn)“標(biāo)準(zhǔn)報(bào)表創(chuàng)建向?qū)А贝翱凇?在“可用數(shù)據(jù)源”面板中,展開“創(chuàng)建新連接”文件夾。 從打開的子文件夾中,展開“OLE DB (ADO)”文件夾。出現(xiàn)“OLE DB (ADO)”窗口。 選擇“Microsoft OLE DB Provider for SQL Server”并單擊“下一步”。 分別將數(shù)據(jù)庫服務(wù)器、用戶 ID 和密碼的值輸入到“服務(wù)器”、“用戶 ID”和“密碼”字段中。 從“數(shù)據(jù)庫”下拉列表中,選擇“Northwind”。取消選中“集成安全性”復(fù)選框,因?yàn)槟褂玫氖?SQL Server 身份驗(yàn)證而不是 NT 身份驗(yàn)證。 單擊“完成”。OLE DB 文件夾將展開,顯示數(shù)據(jù)庫服務(wù)器及其中的 Northwind 數(shù)據(jù)庫。 展開“Northwind”、“dbo”和“表”節(jié)點(diǎn),然后選擇“Customers”表。 單擊“>”符號,將該表移入“選定的表”面板,然后單擊“下一步”。 展開“Customers”表,按住 Ctrl 鍵的同時單擊“公司名稱”、“聯(lián)系人姓名”和“城市”。 單擊“>”符號,將這些字段移至“要顯示的字段”面板,然后單擊“下一步”。 在“可用字段”面板的“報(bào)表字段”下,選擇“客戶.城市”,然后單擊“>”符號將該字段移入“分組依據(jù)”面板,再單擊“完成”。NorthwindCustomers 報(bào)表創(chuàng)建完畢,并加載到 Visual Studio 的主窗口中。
2.綁定不帶登錄代碼的報(bào)表。
打開 Web 或 Windows 窗體。 從“視圖”菜單中,單擊“代碼”。 找到在 “項(xiàng)目設(shè)置”中創(chuàng)建的 ConfigureCrystalReports() 方法。 聲明一個字符串變量,將其命名為“reportPath”,然后將一個本地報(bào)表的運(yùn)行時路徑賦值給它。對于網(wǎng)站項(xiàng)目和 Windows 項(xiàng)目,確定此路徑時會有所不同:對于網(wǎng)站,要將本地報(bào)表文件的名稱作為字符串參數(shù)傳遞到 Server.MapPath() 方法中。這樣,在運(yùn)行時本地報(bào)表就會映射到硬盤文件目錄路徑。 C# Copy Code string reportPath = Server.MapPath("NorthwindCustomers.rpt");
對于 Windows 項(xiàng)目,要將 Application.StartupPath 屬性與一個反斜杠和本地報(bào)表文件名稱連接起來。這樣,報(bào)表將映射到與 Windows 可執(zhí)行文件相同的目錄。
注意 編譯時,需要將報(bào)表復(fù)制到可執(zhí)行文件所在的目錄。 C# Copy Code string reportPath = Application.StartupPath + "\" + "NorthwindCustomers.rpt";
將 NorthwindCustomers 報(bào)表的文件目錄路徑賦給 CrystalReportViewer 控件的 ReportSource 屬性。C# Copy Code crystalReportViewer.ReportSource = reportPath;測試 NorthwindCustomers 報(bào)表的加載過程。現(xiàn)在即可生成并運(yùn)行項(xiàng)目。預(yù)計(jì)報(bào)表加載將失敗,因?yàn)榇藭r尚未編寫數(shù)據(jù)庫登錄代碼。從“生成”菜單中選擇“生成解決方案”。 如果生成過程中出錯,請立即糾正。 如果在 Windows 項(xiàng)目中使用非嵌入式報(bào)表,請?jiān)?\bin\debug\ 子目錄中找到編譯后的 Windows 可執(zhí)行文件,然后將報(bào)表復(fù)制到該子目錄中。注意 要讓 Windows 可執(zhí)行文件在運(yùn)行時加載非嵌入式報(bào)表,該報(bào)表必須與 Windows 可執(zhí)行文件存儲在同一個目錄中。從“調(diào)試”菜單中,單擊“開始”。NorthwindCustomers 報(bào)表并不顯示。它會在添加數(shù)據(jù)庫登錄代碼后顯示。注意 結(jié)果可能會因?yàn)樗褂玫?Crystal Reports 版本不同而不同。例如,如果安裝了 Crystal Reports 10 和更高版本,則會提示您輸入該報(bào)表的數(shù)據(jù)庫登錄信息。如果運(yùn)行的是較早版本的 Crystal Reports,則會引發(fā)異常。不論是哪種情況,都需要依照以下過程來創(chuàng)建功能完整的應(yīng)用程序。返回到 Visual Studio,然后單擊“停止”從調(diào)試模式中退出。
3.添加報(bào)表登錄代碼。
返回到此 Web 或 Windows 窗體的代碼隱藏類。 在類的底部,創(chuàng)建名為 SetDBLogonForReport() 的新私有幫助器方法,并將 ConnectionInfo 傳遞給方法簽名。 C# Copy Code private void SetDBLogonForReport(ConnectionInfo connectionInfo){}在此方法內(nèi),從 CrystalReportViewer 類的 LogOnInfo 屬性獲取 TableLogOnInfos 實(shí)例。注意 TableLogOnInfos 是包含 TableLogOnInfo 類實(shí)例的索引類。 C# Copy Code TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;創(chuàng)建一個 foreach 循環(huán),它在 TableLogOnInfos 索引類實(shí)例的各個 TableLogOnInfo 實(shí)例間循環(huán)。C# Copy Code foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos){}在 foreach 循環(huán)中,將 TableLogOnInfo 的 ConnectionInfo 屬性設(shè)置為 ConnectionInfo 參數(shù)。C# Copy Code tableLogOnInfo.ConnectionInfo = connectionInfo;修改 ConfigureCrystalReports() 方法以處理數(shù)據(jù)庫登錄代碼。此過程創(chuàng)建了用于設(shè)置數(shù)據(jù)庫登錄的方法。但是,必須修改 ConfigureCrystalReports() 方法以處理此方法,這樣報(bào)表才能識別出其中含有數(shù)據(jù)庫登錄信息。
修改 ConfigureCrystalReports() 方法需要兩個步驟: 配置 ConnectionInfo 實(shí)例。 調(diào)用 SetDBLogonForReport() 方法。 在 ConfigureCrystalReports() 方法中,在將報(bào)表綁定到 CrystalReportViewer 控件的代碼之下聲明并實(shí)例化 ConnectionInfo 類。C# Copy Code ConnectionInfo connectionInfo = new ConnectionInfo();在下一行上,通過傳入 ConnectionInfo 實(shí)例調(diào)用 SetDBLogonForReport() 方法。 C# Copy Code SetDBLogonForReport(connectionInfo);設(shè)置 ConnectionInfo 實(shí)例的 DatabaseName、UserID 和 Password 屬性。注意 出于安全性考慮,使用訪問權(quán)限受到限制的數(shù)據(jù)庫帳戶非常重要。有關(guān)更多信息,請參見 “安全性:創(chuàng)建受限訪問數(shù)據(jù)庫帳戶”。 在編寫的代碼中,用自己的密碼代替示例密碼 654321(如下所示)。 C# Copy Code connectionInfo.DatabaseName = "Northwind";connectionInfo.UserID = "limitedPermissionAccount";connectionInfo.Password = "654321";測試 NorthwindCustomers 報(bào)表的加載過程?,F(xiàn)在即可生成并運(yùn)行項(xiàng)目。由于已經(jīng)添加了登錄數(shù)據(jù)庫的代碼,現(xiàn)在應(yīng)該能夠正確加載報(bào)表了。 從“生成”菜單中選擇“生成解決方案”。 如果生成過程中出錯,請立即糾正。 從“調(diào)試”菜單中,單擊“開始”。NorthwindCustomers 報(bào)表將成功顯示。
返回到 Visual Studio,然后單擊“停止”從調(diào)試模式中退出。
4.添加在運(yùn)行進(jìn)更改數(shù)據(jù)庫位置的功能。
在本節(jié)中,將學(xué)習(xí)如何在運(yùn)行時更改數(shù)據(jù)庫的位置。要實(shí)現(xiàn)此功能只需對 ConnectionInfo 實(shí)例稍加修改即可。注意 在本教程中,將更改數(shù)據(jù)庫服務(wù)器的名稱,而不是數(shù)據(jù)庫的名稱。無法使用 CrystalReportViewer 控件更改數(shù)據(jù)庫的名稱。在運(yùn)行時更改數(shù)據(jù)庫位置。在 ConfigureCrystalReports() 方法中,在調(diào)用 SetDBLogonForReport() 方法的代碼后面創(chuàng)建幾行。 在這幾行中,設(shè)置 ConnectionInfo 實(shí)例的 ServerName 屬性。注意 在編寫的代碼中,用您的服務(wù)器名稱代替示例服務(wù)器名稱“DevDatabaseServer”(如下所示)。 C# Copy Code connectionInfo.ServerName = "DevDatabaseServer"; 測試是否能在運(yùn)行時將報(bào)表重置到備用數(shù)據(jù)庫服務(wù)器。現(xiàn)在即可生成并運(yùn)行項(xiàng)目。報(bào)表應(yīng)該會在運(yùn)行時重定向到備用數(shù)據(jù)庫服務(wù)器。從“生成”菜單中選擇“生成解決方案”。 如果生成過程中出錯,請立即糾正。 從“調(diào)試”菜單中,單擊“開始”。NorthwindCustomers 報(bào)表將成功顯示。返回到 Visual Studio,然后單擊“停止”從調(diào)試模式中退出。

![VS2010水晶報(bào)表Crystal Report Viewer控件 v13.0 官方版[網(wǎng)盤資源]](/up/skin/img/1.jpg)
![VS2010水晶報(bào)表Crystal Report Viewer控件 v13.0 官方版[網(wǎng)盤資源]圖1](/up/1405/2014538271.jpg)































