没有注册的水晶报表只能使用30次,具体为修改下面两个键的值。否则回出现操作次数错误
打开注册表
HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
Server;InprocServer;PrintJobLimit
修改为1000
还有一个HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
Server;Server;PrintJobLimit 也修改为1000
1 pull模式:水晶报表直接根据指定的驱动连接数据库然后组装这些数据
2push模式:开发者自己写代码连接数据并组装dataset,同时将它传送至报表。
创建pulsh 的模式报表
1 首先创建一个dataset数据集,用来存放报表中用到的数据,放在app-_code中(在创建项目时有提示,直接创建即可)
点击服务器资源管理器,右键单击数据连接-- -添加新连接 选择服务器名,添加用户名密码,选择数据库, 最后点击确定如下图:
连接完毕后,将要在报表中显示的表拖入到dataset.xsd中如下图:
保存,数据集创建完成。
2创建一个报表文件.rpt。
打开报表文件 选择 字段资源管理器
右击 数据库字段-----à数据库专家---à工程数据(project data)----àAdo.net datasets------à
选择建立的数据集dataset 中的表,并把他加入到右侧的 Selected Tables中 点击确定(要进行刷新否则 dataset 数据集不会显示表的名称)如下图:
在字段管理器-- 数据库字段 下面就会显示所加入的表的名字 本例是orders,展开表
将需要的字段拖入到报表文件的 details 中,可以对格式进行控制,如下图所示:
在报表文件中右击 弹出菜单,选择插入,可以插入各种图表,比如柱状图等
保存,报表文件已经完成
3 创建一个.aspx文件,在文件中加入CrystalReportViewer 控件(报表查看器) ,加入一个名称是打印的button ,在加入一个一个导出按钮 一个dropdownlist 导出的时候因为版本的问题可能回出现错误
1引用 命名空间
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
2
ReportDocument类 表示一个报表,并包括定义、格式化、加载导出报表的各种操作
ReportDocument rd = new ReportDocument();
protected void Page_Load(object sender, EventArgs e)
{
string strsql = "select * from Orders where OrderID=10248 ";
SqlConnection con = new SqlConnection("server=.;database=Northwind;uid=sa;pwd=sa");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(strsql, con);
DataSet2 ds = new DataSet2();//填充数据集,该数据集为上面建立的在app-code中的.xsd
sda.Fill(ds, "Orders");
rd.Load( Server.MapPath("~/CrystalReport.rpt"));//加载一个新报表
rd.SetDataSource(ds);//将data传递给报表引擎
this.CrystalReportViewer1.ReportSource = rd;//为报表查看器加载数据源
}
打印功能的实现
protected void Button1_Click(object sender, EventArgs e)
{
//string strPrinterName;
//strPrinterName = "hp LaserJet 3380 ";//打印机的名字如不知道则不用设置
// 设置打印页边距
PageMargins margins;
margins = rd.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 450;
rd.PrintOptions.ApplyPageMargins(margins);
//应用打印机名称
//rd.PrintOptions.PrinterName = strPrinterName;
// 打印 // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
rd.PrintToPrinter(1, true, 0, 0);
quit()
}
导出功能的实现
protected void Button2_Click(object sender, EventArgs e)
{
CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
rd.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
switch (this.DropDownList1.SelectedItem.Text)
{
case "Rich Text ":
rd.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.RichText;//
DiskOpts.DiskFileName = "c:""Output.rtf";//
break;
case "Portable Document (PDF)":
rd.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;//
DiskOpts.DiskFileName = "c:""Output.pdf";//
break;
case "MS Word (DOC)":
rd.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.WordForWindows;//
DiskOpts.DiskFileName = "c:""Output.doc";//
break;
case "MS Excel (XLS)":
rd.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;//
DiskOpts.DiskFileName = "c:""Output.xls";//
break;
default:
break;
}
rd.ExportOptions.DestinationOptions = DiskOpts;
rd.Export();
quit()
}
private void quit()
{
Response.Redirect("ss.aspx");//解决刷新页面时,总发现有默认焦点的按钮自动发生Click事件
}
创建图表
在水晶报表中点击右键---à图表专家 弹出如图所示的对话框
|
设置显示数据 |
|
设置标题等内容 |
|
选择图表类型 |
|
选择图表纵坐标显示内容 |
|
选择图表横坐标显示内容 |
|
图表所在的位置 |
单击确定
|
纵坐标标题 |
|
横坐标标题 |
|
图表副标题 |
|
图表主标题显示在图表正上方 |
示例
报表显示格式的设置如下图
在报表中店击右键-----à插入-----à框 ,然后在报表中划一个框,如上图
在报表中店击右键-----à插入-----à文本对象 在对文本对象进行编辑,如上图“部门经理”
在将文本对象对应的内容 从数据库字段下面的数据表中拖入到对应的位置
对文本对象还有拖入的字段的属性进行设置否则显示会有问题
右击拖入的字段 弹出对话框
|
扩展,字段的行数是否可扩展,选择0就是不对行数进行限制 |
|
选择水平对齐方式,要选择两端对齐 |
|
设置字段的字体,格式,大小,颜色,下划线等 |
|
右边缩进,要进行设置,否则显示有问题 |
|
行距,要选择多个行距,否则不会换行 |
|
左边缩进 |
|
第一行缩进单位厘米 |
浙公网安备 33010602011771号