這片文章只適合採用拉模式的水晶報表。
對於非嵌入式的報表:
1建立非嵌入式報表#region 建立非嵌入式報表
2 /**//// <summary>
3 /// 建立非嵌入式報表
4 /// </summary>
5 /// <param name="服務名">服務名</param>
6 /// <param name="使用者名稱">使用者名稱</param>
7 /// <param name="密碼">密碼</param>
8 /// <param name="檔案路徑">報表檔案路徑</param>
9 /// <returns></returns>
10 private ReportDocument 建立非嵌入式報表( string 服務名, string 使用者名稱, string 密碼, string 檔案路徑 )
11 {
12 // 建立報表文檔對象
13 ReportDocument 報表文檔 = new ReportDocument();
14
15 // 根據檔案路徑載入一個新報表
16 報表文檔.Load( 檔案路徑 );
17
18 // 建立新的串連資訊
19 ConnectionInfo 串連資訊 = new ConnectionInfo();
20
21 串連資訊.ServerName = 服務名;
22 串連資訊.UserID = 使用者名稱;
23 串連資訊.Password = 密碼;
24
25 // 建立新的表串連選項資訊
26 TableLogOnInfo 表串連資訊 = new TableLogOnInfo();
27
28 // 設定表串連選項資訊的串連資訊
29 表串連資訊.ConnectionInfo = 串連資訊;
30
31 // 逐個進行表的屬性設定
32 foreach( Table 表 in 報表文檔.Database.Tables )
33 {
34 表.ApplyLogOnInfo( 表串連資訊 );
35 表.Location = 使用者名稱 + "." + 表.Name;
36 }
37
38 // 用報表登入資料庫
39 報表文檔.SetDatabaseLogon( 使用者名稱, 密碼, 服務名, string.Empty, true );
40
41 return 報表文檔;
42 }
43 #endregion
對於嵌入式的報表:
1建立嵌入式報表#region 建立嵌入式報表
2 /**//// <summary>
3 /// 建立嵌入式報表
4 /// </summary>
5 /// <param name="服務名">服務名</param>
6 /// <param name="使用者名稱">使用者名稱</param>
7 /// <param name="密碼">密碼</param>
8 /// <returns>我的水晶報表</returns>
9 private 我的水晶報表 建立嵌入式報表( string 服務名, string 使用者名稱, string 密碼 )
10 {
11 // 建立新報表
12 我的水晶報表 報表 = new 我的水晶報表();
13
14 // 建立新的串連資訊
15 ConnectionInfo 串連資訊 = new ConnectionInfo();
16
17 串連資訊.ServerName = 服務名;
18 串連資訊.UserID = 使用者名稱;
19 串連資訊.Password = 密碼;
20
21 // 建立新的表串連選項資訊
22 TableLogOnInfo 表串連資訊 = new TableLogOnInfo();
23
24 // 設定表串連選項資訊的串連資訊
25 表串連資訊.ConnectionInfo = 串連資訊;
26
27 // 逐個進行表的屬性設定
28 foreach( Table 表 in 報表.Database.Tables )
29 {
30 表.ApplyLogOnInfo( 表串連資訊 );
31 表.Location = 使用者名稱 + "." + 表.Name;
32 }
33
34 // 用報表登入資料庫
35 報表.SetDatabaseLogon( 使用者名稱, 密碼, 服務名, string.Empty, true );
36
37 return 報表;
38 }
39 #endregion