1. Trang chủ
  2. » Giáo án - Bài giảng

Làm việc với crystal reports trong C #

25 452 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 791 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đã xong bước tạo report, trên Form1 chúng ta tạo lúc nãy,kéo vô 1 cái Button và 1 cái CrystalReportViewer control,khi click vô button thì sẽ hiện ra báo cáo :PHP Code: ReportDocument cry

Trang 1

Hôm nay tui sẽ dành viết mấy bài tut cơ bản nhất về crystal reports!

Đầu tiên, ta tạo 1 database nhỏ để làm việc với nó, các bạn tạo trong sqlserver 1 database

có tên là example, có 3 table là OrderMaster , OrderDetails ,Product

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 ]

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 ]

Trang 2

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 1 project winform application trong VS

Vào menu PROJECT >Add New Item Chọn item là Crytal Report

Hiện ra 1 bảng chọn mẫu báo cáo, ở đây tôi sẽ để mặc định

Trang 3

Connection để kết nối.

Chọn OLEDB connection ở hôp thoại Create New Connection

Điền các thông tin kết nối vào :

Trang 4

Ở hộp thoại kế tiếp sẽ hiện các thông số kết nối, cứ việc Finish

Ở đây tôi muốn hiện thị table Product, nên chọn table Product

Trang 5

Chọn các trường của table product

Trang 6

Chọn next và chọn các kiểu hình thức của report, cuối cùng là Finish

Trang 7

Đã xong bước tạo report, trên Form1 chúng ta tạo lúc nãy,kéo vô 1 cái Button và 1 cái CrystalReportViewer control,khi click vô button thì sẽ hiện ra 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ớ là phải using CrystalDecisions.CrystalReports.Engine;

Bài 2:

Tạo reports từ nhiều bảng

Bài trên ta đã tạo report chỉ với 1 bảng là Product, bây giờ sẽ tạo report với nhiều bảng xem sao nhé

Mọi việc cũng giống như trên, đến bước chọn các table thì ta chọn cả 3 table cho nó máu,

Trang 8

sau đấy là chọn các fields muốn report :

Mọi chuyện lại tiếp tục như thế

Bài 3:

Sử dụng parameter trong crytal report

Ở bài này tôi sẽ hướng dẫn cách sử dụng String parameter

Ví dụ,bạn muốn đưa vào 1 tham số là customername,và sẽ hiện ra các đơn đặt hàng của khách hàng đó ở report

Ở đây, tui sẽ sử dụng tiếp cái report đã tạo ở bài trên

Chọn Fields Explorer (menu Crytal Reports ->Fields Explorer),chuột phải vào Parameter Fields,rồi new,điền các tham số vào :

Trang 9

Tôi chọn kiểu là string, các kiểu khác làm cũng tương tự

Sau khi tạo xong parameter, ta sẽ tạo biểu thức cho các fields,vào cửa sổ design của crytal reports rồi làm như hình :

Trang 10

Hiện ra 1 editor để bạn thiết kế fomular, muốn sử dụng field nào thì chọn field đó,các bạn

cứ làm theo thứ tự tớ oánh số trong hình nhá

Trang 11

Thiết kế form như trong hình :

Trang 12

Bi giờ ta viết code cho sự kiện của nút show

Trang 13

Tạo reports từ DataSet

Mấy bài trước tui chỉ tạo report từ database, ở bài này tui sẽ tạo 1 report từ DataSet coi sao nhé

Tạo 1 project winform mới, add thêm vào 1 DataSet,giữ nguyên các thông tin mặc định của nó,trên DataSet đó ta tạo ra 1 datatable có 2 column là ID và Item :

Trang 14

Bây giờ ta sẽ tạo 1 report từ DataSet mới tạo ra Vào menu Project->Add new item, chọn crytal report như mấy cái trên kia, để các thông số mặc định luôn cho tiện Nhưng ở đây

ta ko tạo ra connect tới database nào mà chọn luôn dataset lúc này :

Ở bước kế tiếp, chọn luôn cả 2 column của DataTable trên DataSet lúc nãy nhé

Trang 15

Bây giờ tạo thêm vào form 1 cái button và 1 crystalReportViewer control như mấy cái trước Tui sẽ tạo dữ liệu đơn giản cho dataset và hiển thị ở report :

C# code:

Lựa chọn code | Ẩn/Hiện codeprivate 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"));

Trang 16

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:

sql = "SELECT Product_id,Product_name,Product_price FROM Product" ; Tạo mới 1 project winform và add vào 1 DataSet mới,trên DataSet đó tạo thêm 1

DataTable, và trên DataTable đó ta add 3 column vào nhá

Tuơng tự như bài vừa trên, tui sẽ tạo thêm 1 crytal report và vẫn sử dụng ProjectData :

Trang 17

Ở bước kế tiếp tui sẽ chọn cả 3 fields Product_id,Product_name,Product_price.

Đã xong phần thiết kế report

Theo truyền thống, ta lai tạo 1 button và 1 crytalReportViewer như mấy cái trên kia nhéC# code:

Lựa chọn code | Ẩn/Hiện codeprivate void button1_Click(object sender, EventArgs e)

Product_id,Product_name,Product_price FROM Product";

SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);

DataSet1 ds = new DataSet1();

dscmd.Fill(ds, "Product");

Trang 18

Tạo dynamic reports trong C#

Mấy bài trước, chúng ta tạo report từ những database đã được chọn sẵn, bây giờ ta tạo report từ kết quả của các query SQL lúc runtime

Ta cũng tạo project winform và cũng thêm vào 1 DataSet như bài trên kia nhưng ko kết nối vào database nào cả Trên Dataset, ta cũng thêm 1 datatable vào DataSet đó, trên Datatable ta tạo mấy cái column như sau:

Tạo thêm 1 cái crytal report như baì 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á

Trang 19

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:

Trang 20

Viết 1 hàm xử lý cho các query nhập vào :

string inSql = null;

string firstPart = null;

string lastPart = null;

inSql = textBox1.Text;

inSql = inSql.ToUpper();

Trang 21

fromStart = inSql.IndexOf("FROM");

selectStart = selectStart + 6;

firstPart = inSql.Substring(selectStart,

(fromStart - selectStart));

lastPart = inSql.Substring(fromStart,

inSql.Length - fromStart);

fields = firstPart.Split(',');

objRpt.ReportDefinition.ReportObjects[i+1];

MyText.Text = fields[i].ToString();

(TextObject)objRpt.ReportDefinition.ReportObjects[i+1];

MyText.Text = fields[i].ToString();

connectionString = "data source=SERVER

NAME;initial catalog=crystaldb;user id=USER

NAME;password=PASSWORD;";

Trang 22

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

Trang 23

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 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 codetry

{

Trang 24

CrExportOptions.ExportFormatType =

ExportFormatType.PortableDocFormat;

CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

CrExportOptions.FormatOptions =

CrFormatTypeOptions;

Ngày đăng: 19/12/2015, 17:03

TỪ KHÓA LIÊN QUAN

w