惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
H
Help Net Security
B
Blog RSS Feed
G
Google Developers Blog
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
量子位
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
P
Proofpoint News Feed
小众软件
小众软件
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
V
V2EX
月光博客
月光博客
C
Check Point Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
Help Net Security
Help Net Security
Schneier on Security
Schneier on Security
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
T
Tenable Blog
L
LangChain Blog
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
Forbes - Security
Forbes - Security
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Y
Y Combinator Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
NISL@THU
NISL@THU
GbyAI
GbyAI
博客园 - Franky
S
Secure Thoughts
有赞技术团队
有赞技术团队
PCI Perspectives
PCI Perspectives
U
Unit 42

博客园 - Burt

软件项目研发的设计流程 访问IIS元数据库失败解决方法(转) 经典SQL语句大全 js 比较2日期大小 - Burt - 博客园 合并表格,并实现对datatable的group by 功能 - Burt 时间段查询 left join on sql 日期格式转换(convert用法)(转) 分页存储过程 刷新后保持页面滚动条位置C#&VB(转) - Burt - 博客园 Dropdownlist样式设置 - Burt - 博客园 TreeView的遍历(转) 读取天气预报所产生乱码解决方法MiniSite.Weather.print("Wealth") 40种网页常用小技巧(javascript) 页面图象鼠标操作放大和制作图片热点 无法将类型login_aspx转换为System.Web.UI.WebControl c# 发邮件(转摘) [没有相关源的行] 访问被拒绝 页面自动刷新以及广告程序得Javascript代码
水晶报表制作
Burt · 2007-10-25 · via 博客园 - Burt
 

没有注册的水晶报表只能使用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就是不对行数进行限制