Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
791 KB
Nội dung
wWw.VipLam.Info Căn C# crystal reports Hôm tui dành viết tut crystal reports! Đầu tiên, ta tạo database nhỏ để làm việc với nó, bạn tạo sqlserver database có tên example, có table OrderMaster , OrderDetails ,Product PHP Code: USE [example] GO /****** Object: Table [dbo].[OrderMaster] Script Date: 09/04/2009 15 :11:59 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[OrderMaster]( [OrderMaster_id] [int] NOT NULL, [OrderMaster_date] [datetime] NULL, [OrderMaster_customername] [varchar](50) NULL, [OrderMaster_createduser] [varchar](50) NULL, CONSTRAINT [PK_OrderMaster] PRIMARY KEY CLUSTERED ( [OrderMaster_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[OrderDetails] Script Date: 09/04/2009 5:11:59 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[OrderDetails]( [OrderDetails_id] [int] NOT NULL, [OrderDetails_masterid] [int] NULL, [OrderDetails_productid] [int] NULL, [OrderDetails_qty] [int] NULL, CONSTRAINT [PK_OrderDetails] PRIMARY KEY CLUSTERED ( [OrderDetails_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Product] Script Date: 09/04/2009 15:11: 59 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON wWw.VipLam.Info GO CREATE TABLE [dbo].[Product]( [Product_id] [int] NOT NULL, [Product_name] [varchar](50) NULL, [Product_price] [numeric](18, 0) NULL, CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED ( [Product_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tạo project winform application VS Vào menu PROJECT >Add New Item Chọn item Crytal Report Hiện bảng chọn mẫu báo cáo, để mặc định wWw.VipLam.Info Tiếp đến chọn kết nối tới database ( example), sử dụng OLEDB Connection để kết nối Chọn OLEDB connection hôp thoại Create New Connection Điền thông tin kết nối vào : wWw.VipLam.Info Ở hộp thoại thông số kết nối, việc Finish Ở muốn thị table Product, nên chọn table Product wWw.VipLam.Info Chọn trường table product wWw.VipLam.Info Chọn next chọn kiểu hình thức report, cuối Finish wWw.VipLam.Info Đã xong bước tạo report, Form1 tạo lúc nãy,kéo vô Button CrystalReportViewer control,khi click vô button báo cáo : PHP Code: ReportDocument cryRpt = new ReportDocument(); cryRpt.Load(@"C:\Documents and Settings\Qu@n Bom\My Document s\Visual Studio 2008\Projects\Example\Example\CrystalReport1.rpt"); crystalReportViewer1.ReportSource = cryRpt; crystalReportViewer1.Refresh(); Quên, nhớ phải using CrystalDecisions.CrystalReports.Engine; Bài 2: Tạo reports từ nhiều bảng Bài ta tạo report với bảng Product, tạo report với nhiều bảng xem Mọi việc giống trên, đến bước chọn table ta chọn table cho máu, wWw.VipLam.Info sau chọn fields muốn report : Mọi chuyện lại tiếp tục Bài 3: Sử dụng parameter crytal report Ở hướng dẫn cách sử dụng String parameter Ví dụ,bạn muốn đưa vào tham số customername,và đơn đặt hàng khách hàng report Ở đây, tui sử dụng tiếp report tạo Chọn Fields Explorer (menu Crytal Reports ->Fields Explorer),chuột phải vào Parameter Fields,rồi new,điền tham số vào : wWw.VipLam.Info Tôi chọn kiểu string, kiểu khác làm tương tự Sau tạo xong parameter, ta tạo biểu thức cho fields,vào cửa sổ design crytal reports làm hình : wWw.VipLam.Info Hiện editor để bạn thiết kế fomular, muốn sử dụng field chọn field đó,các bạn làm theo thứ tự tớ oánh số hình nhá wWw.VipLam.Info Thiết kế form hình : wWw.VipLam.Info Bi ta viết code cho kiện nút show C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { ReportDocument cryRpt = new ReportDocument(); cryRpt.Load(@"C:\Documents and Settings\Qu@n Bom\My Documents\Visual Studio 2008\Projects\Example\Example\CrystalReport1.rpt"); ParameterFieldDefinitions crParameterFieldDefinitions; ParameterFieldDefinition crParameterFieldDefinition; ParameterValues crParameterValues = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue(); wWw.VipLam.Info crParameterDiscreteValue.Value = textBox1.Text; crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition = crParameterFieldDefinitions["Customername"]; crParameterValues = crParameterFieldDefinition.CurrentValues; crParameterValues.Clear(); crParameterValues.Add(crParameterDiscreteValue); crParameterFieldDefinition.ApplyCurrentValues(crParameterVal ues); crystalReportViewer1.ReportSource = cryRpt; crystalReportViewer1.Refresh(); } bai 4: Tạo reports từ DataSet Mấy trước tui tạo report từ database, tui tạo report từ DataSet coi Tạo project winform mới, add thêm vào DataSet,giữ nguyên thông tin mặc định nó,trên DataSet ta tạo datatable có column ID Item : wWw.VipLam.Info Bây ta tạo report từ DataSet tạo Vào menu Project->Add new item, chọn crytal report kia, để thông số mặc định cho tiện Nhưng ta ko tạo connect tới database mà chọn dataset lúc : Ở bước kế tiếp, chọn column DataTable DataSet lúc wWw.VipLam.Info Bây tạo thêm vào form button crystalReportViewer control trước Tui tạo liệu đơn giản cho dataset hiển thị report : C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { DataSet1 ds = new DataSet1(); DataTable t = ds.Tables.Add("Items"); t.Columns.Add("id", Type.GetType("System.Int32")); t.Columns.Add("Item", Type.GetType("System.String")); DataRow r; int i = 0; for (i = 0; i ADO.NET chọn đến file XML nhá, công việc lại ko khác : Bai 8: Xuất kết report Excel,PDF Đọc bạn nắm đc sơ sơ crytal report rùi, nói thêm việc trích xuất định dạng Excel PDF Các bạn cỏ thể sử dụng ExportOptions để tùy chỉnh định dạng trích xuất Quay lại đầu tiên, ta thêm button nữa,sau tạo hiển thị thành công report, ta export pdf excel Đây export file excel (file test.xls dc tạo ổ C) C# code: Lựa chọn code | Ẩn/Hiện code try { wWw.VipLam.Info ExportOptions CrExportOptions; DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions(); ExcelFormatOptions CrFormatTypeOptions = new ExcelFormatOptions(); CrDiskFileDestinationOptions.DiskFileName = "c:\\test.xls"; CrExportOptions = cryRpt.ExportOptions; CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; CrExportOptions.ExportFormatType = ExportFormatType.Excel; CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions; CrExportOptions.FormatOptions = CrFormatTypeOptions; cryRpt.Export(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Export pdf : C# code: Lựa chọn code | Ẩn/Hiện code try { ExportOptions CrExportOptions; DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions(); PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions(); CrDiskFileDestinationOptions.DiskFileName = "C:\\test.pdf"; CrExportOptions = cryRpt.ExportOptions; { CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions; CrExportOptions.FormatOptions = CrFormatTypeOptions; wWw.VipLam.Info } cryRpt.Export(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } [...]... Product1 10 2 Product2 12 3 Product3 15 4 Product4 5... 5 wWw.VipLam.Info 5 Product5 7 Khi design report, ta sẽ chọn Create new connection->ADO.NET rồi chọn đến file XML này nhá, c ng vi c c n lại ko kh c gì bài đầu tiên : Bai 8: Xuất kết quả report ra Excel,PDF Đ c mấy bài ở trên c c bạn ch c đã nắm c. .. 1 crytalReportViewer như mấy c i trên kia nhé C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { SqlConnection cnn; string connectionString = null; string sql = null; connectionString = "server=.\\sqlexpress;database=example;integrated security=true"; cnn = new SqlConnection(connectionString); cnn.Open(); sql = "SELECT Product_id,Product_name,Product_price... Và viết code cho sư kiện c a button : C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { SqlConnection cnn ; string connectionString = null; string sql = null; connectionString = "data source=SERVER NAME;initial catalog=crystaldb;user id=USER NAME;password=PASSWORD;"; wWw.VipLam.Info cnn = new SqlConnection(connectionString); cnn.Open(); sql = procesSQL();... sơ sơ về crytal report rùi, giờ nói thêm về vi c trích xuất ra c c định dạng c a Excel ho c PDF C c bạn c thể sử dụng ExportOptions để tùy chỉnh c c định dạng trích xuất Quay lại bài đầu tiên, ta thêm 2 c i button nữa,sau khi đã tạo và hiển thị thành c ng report, ta c thể export ra pdf ho c excel Đây là export ra 1 file excel (file test.xls sẽ dc tạo ở ổ C) C# code: Lựa chọn code | Ẩn/Hiện code try... trư c! C c bạn th c hiện như c c bư c ở c c bài trên tớ làm, c ng sử dụng ProjectData và chọn tất c cac column c a c i Datatable vừa tạo nhá wWw.VipLam.Info Bi giờ ta sẽ thiết kế 1 c i Form như bên giưới,report sẽ phụ thu c vào cac queyry l c runtime: wWw.VipLam.Info Viết 1 hàm xử lý cho c c query nhập vào : C# code: Lựa chọn code | Ẩn/Hiện code public string procesSQL() { string sql = null; string... wWw.VipLam.Info CrystalReport1 objRpt = new CrystalReport1(); objRpt.SetDataSource(ds.Tables[1]); crystalReportViewer1.ReportSource = objRpt; crystalReportViewer1.Refresh(); } bai 5: Tạo reports từ Sql query Ở bài này tui sẽ tạo report từ kết quả c a c c query trong Sql, vẫn sử dụng DataSet Tui sẽ tạo report cho bảng Product trong c i database đã nói ở bài trên c ng nhé ,c u truy vấn c a chúng ta như sau : PHP Code:... Thiết kế form như trong hình : wWw.VipLam.Info Bi giờ ta viết code cho sự kiện c a nút show C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { ReportDocument cryRpt = new ReportDocument(); cryRpt.Load(@ "C: \Documents and Settings\Qu@n Bom\My Documents\Visual Studio 2008\Projects\Example\Example\CrystalReport1.rpt"); ParameterFieldDefinitions crParameterFieldDefinitions;... Product"; SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn); DataSet1 ds = new DataSet1(); wWw.VipLam.Info dscmd.Fill(ds, "Product"); MessageBox.Show(ds.Tables[1].Rows.Count.ToString()); cnn.Close(); CrystalReport1 objRpt = new CrystalReport1(); objRpt.SetDataSource(ds.Tables[1]); crystalReportViewer1.ReportSource = objRpt; crystalReportViewer1.Refresh(); } bai 6: Tạo dynamic reports trong C# Mấy... SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn); DataSet1 ds = new DataSet1(); dscmd.Fill(ds, "Product"); objRpt.SetDataSource(ds.Tables[1]); crystalReportViewer1.ReportSource = objRpt; crystalReportViewer1.Refresh(); } À c c bạn nhớ using mấy c i namespace c n thiết nhá C n 1 điều nữa là mọi vi dụ đều dùng database ở bài đâu,khi chạy ví dụ thì c c bạn nhớ chỉnh lại chuỗi kết nối cho phù hợp Bai 7: Tạo reports ... 12 3 Product3 15 4... button crytalReportViewer C# code: Lựa chọn code | Ẩn/Hiện code private void button1_Click(object sender, EventArgs e) { SqlConnection cnn; string connectionString = null; string sql = null; connectionString... 1 Product1 10 2 Product2