vs 2010下使用水晶报表Crystal Reports 的详细步骤
一。所需条件
1. 工作环境
2. 数据库 SQL2000 或者 SQL2008
3. 水晶报表Crystal Reports , CR for VS_13_0
4. 创建一个网站方式的解决方案
5. 右击 解决方案WebSite1->
6. 右击 解决方案WebSite1->
二。数据连接( 这一步骤可以省略,如果之前曾经做过)
1. 菜单 视图 -> 服务器资源管理器
2. 右击左侧列表的 “数据连接” -> 添加连接
3. 数据源
4. 服务器名
5. 登录到服务器
6. 连接到一个数据库,
7. 点击下面的“测试连接”,直到出现 “测试连接成功” 即可,点击 “确定”即可。
三。建立数据源 .xsd
1. 右击 解决方案的“数据”文件夹 App_Code -> 添加-> 新建项
2. (可选的可以建立 数据连接,如果没有的话)
3. 添加表或视图
四。设计水晶报表 .rpt
1. 右击 解决方案的报表文件夹 CR
2. 点“确定”按向导继续(这步可省略,如果“我的连接”中有了DataSet1)
3. 选定需要的项目
同理设置随后的“要显示的字段”、“分组依据”、“过滤字段”等。
4. 过后也可以 右击 报表页面 -> 数据库 -> 数据库专家,再次更改所选之项。
5. 从左侧“字段资源管理器”,拖进 “数据库字段”到详细资料区域,公式字段,特殊字段的日期,页码等到页眉页脚。
6. 右击 页面 适当的部位,从中选择插入 文本,直线,图片等,并设置它们的格式。多个文本、字段本身等可以使用工具条上的对齐工具,来使它们同一大小或对齐;而文本、字段框内的内容则使用另外的文字对齐工具;线条则只能在其属性中,设置
五。字段改名、增加或者删除
1. 设计好报表后,如果需要变更字段,将数据库表或视图的字段,改名、增加或者删除。
2. 打开数据源DS_V_SHCH_WGHBDMXI.xsd,将变更的表或者视图,从中删除并再次拖入。
3. 打开报表设计BB_SHCH_WGHBDMXI1.rpt
4. 点开“字段资源管理器”,右击“数据库字段” -> 登陆或注销服务器。
5. 在数据资源管理器中,左侧 的“我的连接”中,找到自己的数据源DS_V_SHCH_WGHBDMXI ,点击“登录”按钮,点击“关闭” 退出。
6. 在“字段资源管理器”,右击“数据库字段” -> 验证数据库,一般就可以了。如果是改名称,则需要使用字段影射。
六。如过需要,可按字段分组
1. 找到左侧“字段资源管理器”之下的“组名字段”并右击它,选择“插入组”或者“组专家”,选择依据分组的字段。
2. 将“组头”放到 “页眉” 区域,“组尾”放到 “详细资料” 区域。同时将“组 #1 名”放到“页眉”区“组头”的之后适当位置。
3. 将不变化的内容放到“组头”之下,包括表格顶部横向线,说明文字,文字之下的横线,选定所有文字,使用工具条上的“组件对齐工具”,使它们等高、底部对齐,然后再使用工具条上的“文字对齐工具”,使文字,居左、中、右对齐,最终如下的内容:
---------------
| 序号 | 姓名 |
---------------
4. 将可变的字段,以及表格的“竖线”,放到“详细资料”区域,同样也对齐它们如下:
| NO
5. 选定“详细资料”的所有字段,并右击其中之一 -> 设置对象格式,勾选公用选项卡的“可以增大”,以便字段内容过长,可自动扩展到下面多行,而不截断。
6. 右击“详细资料”的节分割横条, -> 在下方插入节,在新插入的“详细资料 b”中,插入一条横线,或者选择上面的横线,ctrl+c复制, ctrl+V粘贴,移动到本节的顶部,可在属性窗口中,设置该横线的top为1,以便紧帖着“详细资料 b”,上面“详细资料 a”中字段扩展多行时,只在自己的小节a中,从而不会覆盖本节b。设计的表格的可变的横线,如下所示:
---------------
7. 将“组尾”也放到“详细资料”区域,并拖动“组尾”紧挨着上面的横线放置,这样行间不会出现更多的间隔。
8. 将上面所有的竖线,从组头区域均向下拉到组尾区域,刚好穿越并超过“组尾”即可,也可以选定所有已经穿越组尾的竖线,在属性窗口中,设置它们的bottom 均为1 (对于组尾),它们的top 均为168(对于组头),这样才能保证竖线的连续。
9. 再将“报表尾”,紧挨着上面穿越的竖线放置即可。
10. 如果需要,可以在组尾放置一条粗横线,将组头以及两边的竖线改成粗线,形成周边的线为粗线。
11. 将不必要的节接抑制显示,比如,右击“报表尾”、“页脚”的节分割横条,-> 抑制显示。
12. 如果要删除不适当的组,可以右击“组头 #x”的节分割横条,-> 组专家,在右侧“分组依据”列表中,选择不要的分组,点击左向按钮“<”,去处即可。
13. 如果想一个分组就换页,右击“组头 #x”的节分割横条-> 节专家,保证左侧节列表中,选定的是你的组头,在右侧 “分页”选项卡,勾选“之前新建页”,单击对应的公式按钮“x-2”,在其中输入: groupnumber mod 1=0 ,并点击“保存”即可。
14. 如果想一页显示固定的行,右击“详细资料”的节分割横条 -> 节专家,保证左侧节列表中,选定的是你的“详细资料”,在右侧 “分页”选项卡,之后新建页之下,勾选“节末尾”,单击对应的公式按钮“x-2”,在其中输入: 两种方法之一的固定10行,
' 方法1 (BASIC 语法) TRUE为分页
if onlastrecord then
else
end if
if onlastrecord then
else
并点击“保存”即可。
七。创建报表显示页面
1. 右击 解决方案的显示文件夹 VW -> 添加 -> 新建项
2. 报表设计 Default.aspx
2.1
2.2
3. 打开并改造 VW/Default.aspx.cs
3.1 保留从文件开头 到 类声明语句,以保持本类的完整性
3.2 之后的全部删除
using System;
using CrystalDecisions.CrystalReports.Engine;
using System.Data;
using System.Data.SqlClient;
public partial class VW_Default : System.Web.UI.Page
{
private ReportDocument customerReport = new ReportDocument();
protected void Page_Load(object sender, EventArgs e)
{
string strWhere = "";
if (Request.QueryString["strWhere"] != null)
{
// Security objSecurity = new Security();
// strWhere = objSecurity.DecryptQueryString(Request.QueryString["strWhere"].ToString());
}
show(strWhere);
}
protected void show(string sql)
{
string strPath = Server.MapPath("../CR/CrystalReport.rpt");//报表名称的修改, 上面 步骤四。设计水晶报表
customerReport.Load(strPath);
string str_conn = "Data Source=SVRT1;Initial Catalog=JXC;User ID=sa;Pwd=;";//选择服务器SVRT1,(. 小点代表自己) ,数据库 JXC,连接
string str_sql = "select * from b_sys_user";//选择表b_sys_user的所有字段
DataSet ds =Query(str_conn,str_sql);
ds.Tables[0].TableName = "b_sys_user";//给定一个表名,报表绑定使用
customerReport.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = customerReport;
}
private void Page_Unload(object sender, EventArgs e)
{
customerReport.Dispose();
}
public DataSet Query(string SQLconnection_string,string SQLString)
{
using (SqlConnection connection = new SqlConnection(SQLconnection_string))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
4. 改造该文件
4.1 加入引用的命名空间
4.2 完成之后,再去掉无用的 using ....
八。启动调试