Tạo báo cáo động với Crystal Reports trên VS 2005
Thông thường các báo cáo được thiết kế cố định các trường dữ liệu được hiển thị cũng như số lượng trường được hiển thị. Trong một số trường hợp, cần phải cho phép người dùng lựa chọn các trường cần đưa ra báo cáo và thứ tự các trường đó. Trong trường hợp này cần phải tạo báo cáo động.
Crystal Reports nói chung không hỗ trợ báo cáo động. Tuy nhiên, có thể tạo các báo cáo động thông qua một số kỹ thuật. Trong bài này, tôi giới thiệu một kỹ thuật tạo báo cáo động, đó là sử dụng Formula Fields.
Một số bước quan trọng để tạo một báo cáo động, đó là:
Bước thiết kế báo cáo:
- Khi thiết kế báo cáo, vẫn sử dụng nguồn dữ liệu bình thường, nhưng không đưa bất kỳ một trường nào vào phần Detail.
- Thêm vào báo cáo một vài Formula Field (thông thường bằng số lượng trường trong bảng).
- Đưa các Formula Field vào phần Detail.
Bước viết mã:
- Xác định các trường cần đưa ra và đưa vào trường Text của các Formula Field dưới dạng {TableName.Field}.
- Đặt vị trí, độ rộng, tiêu đề cho các trường cần đưa ra.
- Ẩn hoặc đặt độ rộng các trường không đưa ra.
Để tìm hiểu sâu hơn về các lệnh thao tác đối với báo cáo, có thể xem thêm trong chương trình minh hoạ. Chương trình minh hoạ có tên là DynReports, viết bằng ngôn ngữ C# trên nền Visual Studio 2005, sử dụng cơ sở dữ liệu SQL Server.
(Nhấn vào để xem hình đầy đủ)
Chương trình minh hoạ khá đơn giản, mới chỉ dừng lại ở chức năng tạo báo cáo động. Các tính năng như tính toán độ rộng các trường, định dạng dữ liệu hiển thị, kẻ bảng… chưa được đưa vào chương trình.
Download: Mã nguồn chương trình.
Tháng tám 10, 2007 lúc 1:43 chiều
[...] Tạo b�o c�o động với Crystal Reports tr�n VS 2005 Thông thường các báo cáo được thiết kế cố định các trường dữ liệu được hiển thị […] [...]
Tháng tám 20, 2007 lúc 6:33 chiều
uh thank iu minh dang tim cái này
Tháng tám 22, 2007 lúc 11:28 chiều
Chào thầy !
Em đang tự học Crystal Report. Thầy có tài liệu nào nói về báo cáo động và những tính năng khác về Crystal Report thì cho em xin.
Em xin cảm ơn thầy
Tháng tám 28, 2007 lúc 10:17 sáng
Chào thầy!
Em đang làm 1 chương trình cần hỗ trợ rất nhiều tính năng báo cáo động trong Crystal Report. Mong thầy giúp đỡ. Em rất vui vì tìm được trang này, thực sự rất bổ ích. Em xin cám ơn.
Tháng Chín 15, 2007 lúc 5:32 chiều
chào thầy!
Em đã đọc blog của thầy, em thấy các bài viết của thầy khá hay. Nhưng nếu tạo report chỉ bằng công cụ của Vs2005 thì khá cứng. Em đang thử dùng Componentone nhưng tài liệu còn ít quá. Phần allowmerging các dòng dữ liệu để tạo ra 1 báo cáo phức tạp em thấy khá khó. Em rất mong thầy có thể viết 1 bài về phần này. Em xin cảm ơn!
Tháng Chín 24, 2007 lúc 2:29 chiều
Chào thầy!!!
Em đang làm báo cáo yêu cầu phải Export ra word để có thể chỉnh sửa dễ dàng, nhưng trong Crystall Report export ra word theo các object như vậy thì chỉnh sửa rất bất tiện. Vậy em xin hỏi thầy có cách nào giúp em với.
Em cảm ơn thầy rất nhiều
Tháng Chín 27, 2007 lúc 2:55 chiều
Thầy cho em hỏi: Em tạo được bào cáo động rồi theo hướng dẫn nhưng trông rất xấu vì không format được các trường kiểu số, và datetime, và nhất là không tạo được border cho dữ liệu bằng code. Em đã tìm mãi mà không được mong thầy có thể chỉ giúp kỹ hơn được không ạ.
Tháng Mười 10, 2007 lúc 9:39 sáng
Thưa thầy Hoà !
Có cách nào để sử dụng Crystal Reports 11 với Visual C++ 2006 không ? Tôi đang rất cần sử dụng Crystal Reports để lập báo cáo. Tôi sử dụng Visual C++ 2005.
Cám ơn thầy nhiều !
Tháng Mười Một 5, 2007 lúc 7:50 sáng
Thua thay, khi em truy van “shippeddate < 08/06/2003″ thi ket qua tra ve bi dao thanh “< 06/08/2003″. Em co bat buoc phai format kieu ngay trong CSDL khong? Phai lam nhu the nao a. Cam on thay.
Tháng Mười Một 12, 2007 lúc 12:49 chiều
Dùng cái CR XI mạnh hơn, đẹp… nói chung OK luôn với cái này.
Tháng Mười Một 13, 2007 lúc 9:25 chiều
@The nhan: Bạn không nhất thiết phải format kiểu ngay trong database. Khi bạn dùng câu truy vấn để select data ra ngoài, hoặc insert dữ liệu vào database bạn hoàn toàn có thể format kiểu. Bạn có thể dùng substring trong C#,VB.net, Javascript,… hoặc một số thư viện viết sẵn để format lại dữ liệu. Về phần report thì bạn ko cần phải lấy dữ liệu tự động, hãy truy vấn ra một table, từ table đó lấy vào report file, Lấy report file làm source cho Report Viewer (Trong DotNet 2005)
Tháng Mười Một 14, 2007 lúc 7:03 chiều
Ai biết việt hóa cái report ko???
Tháng Mười Một 20, 2007 lúc 3:33 chiều
Y ban Thanh Tu la gi nhi? Viet Hoa giao dien Report hay Viet hoa bao cao cua minh?
Ban ghi chi tiet vao minh tra loi cho nhanh, Ok?
Tháng Mười Một 22, 2007 lúc 6:31 chiều
chào Thầy. em đang tìm tài liệu về dynamic report, hiện em đang gặp vấn đề này không biết thầy cho em hướng giải quyết được không ạ/
vấn đề như sau: em có 1 dataset được đổ dữ liệu động(tùy chọn của người dùng) Em không biết cách tạo report động, thầy giúp em nha. em cám ơn thầy
chào thầy
Tháng Mười Một 25, 2007 lúc 3:04 chiều
@danghoa:
Theo mình bạn không nên dùng dataset để làm source cho report. Vì trong dataset có thể có nhiều bảng, và các bảng này có các cột có thể khác nhau.
Bạn có thể truy vấn ra 1 table và dùng làm source cho report.
Yếu tố truy vấn chính là yếu tố động trong report của bạn.
Chúc bạn thành công.
Tháng Mười Hai 10, 2007 lúc 1:45 chiều
@danghoa : Dung Dataset cung dc nhưng phải chỉ rõ tên của bảng mình dùng(Tablename ) là được.
Tháng Một 8, 2008 lúc 8:31 sáng
Cảm ơn thầy!.
Nhưng nếu muốn báo cáo có đối tượng Line thì có được không ạ!?..
Tháng Hai 21, 2008 lúc 8:32 chiều
Thưa thầy, em làm thử một ứng dụng web trong vs 2005 bằng vb.net có dùng crystal report nhưng khi publish xong, rồi chạy thì báo lỗi, build ct thì chạy bình thường.Xin thầy hãy giúp em.E xin cám ơn
Tháng Ba 6, 2008 lúc 9:45 chiều
@thuy: Ban cau hinh lai IIS cua ban, khi ban build chay duoc boi VS tao cho ban host ao, voi cong ngau nhien nao do.
Neu lam web, ban nen cau hinh IIS, roi test bang cach goi trang web binh thuong, de tranh nhung loi tuong tu.
Tháng Ba 14, 2008 lúc 10:32 sáng
Em khong the download bai cua thay dc.. hy vong thay hoac ban nao co source bai nay thi upload len host khac de download dc khong?
Cam on!
Tháng Ba 15, 2008 lúc 10:25 sáng
Em dang lam bao cao can nhung thong tin ve qua trinh hinh thanh crystal report nhung tim tren mang khong thay ai biet trang web nao hay co tai lieu chi dum em voi
Tháng Ba 20, 2008 lúc 9:59 sáng
Em cũng đang nghiên cứu để làm báo cáo động, em không down được bài ví dụ của Thầy về. Thầy có thế giúp em gửi nội dung đó vào hóm thư của em hoặc là chuyển sang host khác ạ.
Rất mong thầy giúp đỡ, em cám ơn thầy!
Tháng Ba 20, 2008 lúc 10:07 sáng
Có một điều nữa em thấy là nếu mình làm thế này thì các đường kẻ phân giữa các cột mình có thể cho nó ẩn và hiện được không, như cái báo cáo hiện ra của thầy em không thấy khung của báo cáo ạ!
Tháng Ba 21, 2008 lúc 12:06 sáng
@thuthuy: Bạn vào http://www.codeproject.com hoặc http://w3schools.com để tìm thông tin nhé.
@nhatanhroi: Crystal report cho phép bạn tự định nghĩa template cho báo cáo của bạn thì phải.
Tháng Ba 21, 2008 lúc 3:11 chiều
Mình đang nghiên cứu về report động nhưng hình như file mã nguồn không thể down được nữa. Bạn nào đã lấy được thì gửi lại cho mình nha. Địa chỉ là annamhotmit@gmail.com
thanks bạn nhiều
Tháng Ba 28, 2008 lúc 12:00 sáng
Chao anh Hoa!
Hinh nhu trang web http://my.opera.com/vuongnet/blog/2007/09/08/tao-bao-cao-dong-voi-crystal-reports-tren-vs-2005 da lay bai cua Anh… Em dang can tham khao report dong, Anh (hoac cac ban da download duoc bai tham khao) co the gui cho em tham khao duoc khong? (random.wind@gmail.com)
Than!
Tháng Tư 2, 2008 lúc 2:14 chiều
Professional Crystal Reports for Visual Studio .NET 2nd Edition
(Crystal Reports.pdf)
LH: hanoimualabay@yahoo.com
Tháng Tư 3, 2008 lúc 4:04 chiều
Dạ thưa Thầy em muốn viết 1 chương trình quản lý bà con họ hàng trong 3 đời (gia phả). Xin Thầy cho em một lời khuyên về cách làm. em cám ơn Thầy nhiều. mong sớm nhận được hồi đáp từ Email của Thầy. em: nvcuongjohn@gmail.com
Tháng Tư 4, 2008 lúc 4:34 chiều
Hiện tại mình không thể down được mã nguồn, vậy bạn nào có mã nguồn gửi cho mình vào hòm thư nhatanhroi@yahoo.com với nhé! thanks
Tháng Tư 15, 2008 lúc 5:03 chiều
Doc bai cua thay hay qua!
Thay co the cho xin duong link de download Crystal Report?
Tháng Tư 28, 2008 lúc 7:53 sáng
Mình cũng không down được source, bạn nào có làm ơn gửi cho mình vào hòm thư nhé. Thanks.
Tháng Tư 28, 2008 lúc 7:56 sáng
Các bạn ơi, ai down được mã nguồn rồi gửi cho mình với, mình không down được, gửi vào: ngaykhongmua_7983@yahoo.com.vn. Cám ơn các bạn nhiều
Tháng Sáu 3, 2008 lúc 1:48 chiều
thầy ơi,em chưa hiểu về report nhiều,nhưng em đang làm chương trình là tạo report từ nhiều table,thầy có thể cho em code và 1 ví dụ nhỏ được không.Em cám ơn thầy và các ban nhiều
Tháng Sáu 3, 2008 lúc 1:50 chiều
chào các bạn và thầy,em chưa hiểu về report trong C# 2005,em đang làm chương trình là tạo report từ nhiều table,thầy và các bạn giúp em với,em cám ơn rất nhiều
Tháng Sáu 3, 2008 lúc 1:51 chiều
chào các bạn và thầy,em chưa hiểu về report trong C# 2005,em đang làm chương trình là tạo report từ nhiều table,thầy và các bạn giúp em với,em cám ơn rất nhiều,thầy và các bạn có thể cho em 1 ví dụ đơn giản được k
Tháng Sáu 7, 2008 lúc 9:21 sáng
Thưa thầy! Em là sinh viên lớp công nghệ phần mềm A – K46
Hiện tại em đang nghiên cứu về virut, nhưng tài liệu em có là rất it. và hướng nghiên cứu của em cũng chưa rõ ràng. Thầy có thể giúp em một số tài liệu được không ạ! Nêu thầy có thì thầy có thể giúp em được không ạ!
Em xin cảm ơn thây
Tháng tám 12, 2008 lúc 8:44 sáng
E chào Thầy!
E làm được báo cáo như của Thầy nhưng có 1 chi tiết là khi hiển thị nó thì phần header của các trường trong báo cáo và phần show các thông tin trong checklist box là tiếng anh.
Vậy có cách nào để chuyển hai chỗ này thành tiếng việt không ạ?
E rất mong thầy sớm giải đáp giúp em
mail của e là:trphuongnam@yahoo.com hoặc trphuongnam@gmail.com
E cám ơn Thầy ạ!
Tháng tám 21, 2008 lúc 4:34 chiều
Em chào Thầy, thưa thầy em muốn hỏi thầy một vấn đề đó là khi em thiết kế báo cáo với CR đi kèm bộ VS 2005 em có sử dụng Formula Field để hiển thị giới tính và em lập trình khi preview thì ok, nhưng gắn vào form để chạy thì lại báo lỗi, mong thầy và mọi người giúp em chút
Tháng tám 29, 2008 lúc 12:04 chiều
Em cảm ơn thầy về bài bài viết.
Xin chúc thầy nhiều sức khỏe ạ! :D
Tháng Chín 9, 2008 lúc 2:00 chiều
Crysral Report không hổ trợ động. Đây chỉ là một kỷ thuật nhỏ thôi. Việc ấn định số trường sẽ hiển thị, bản chất là không động theo đúng nghĩa của nó.Về việc đưa Các đối tượng như (line, image …) vào report đồng thời việc co giản, điều chỉnh độ rộng bằng code không phải là việc đơn giản.
Tác giả của bài viết chỉ mới nêu ra một giả thuyết.
Thư viện các hàm của CR vẫn chưa được công khai như Visaul FoxPro.
====
Do đó, Report động, thế giới vẫn chưa có….
Tháng Chín 18, 2008 lúc 11:13 sáng
Vô tình vào trang web này thấy hay quá. Cho minh tham gia voi nhe. Xin chao tất cả mọi người.
Tháng Mười 7, 2008 lúc 10:04 chiều
thầy cho em hỏi có cách nào load ảnh tự động lên crysral report không. Thầy có thể hướng dẫn giúp k a? em đang cần gấp. Cảm ơn thầy nhiều!
Tháng Mười 30, 2008 lúc 7:13 sáng
Thay cho em hoi cach lam bai ve crystal report: em co 1 combobox chua ten cac Huyen. khi em chon 1 huyen thi report hien thi du lieu cua huyen do. em hoc vb .net 2005
Tháng Mười 31, 2008 lúc 12:47 chiều
dsfsdfsdfsd
Tháng Mười Một 3, 2008 lúc 10:47 sáng
Bạn xử lý việc này trong sự kiện của combobox (textchange… ) là ok ngay. mỗi lần thay đổi tên huyện ( hoặc mã huyện) thì dữ liệu đẩy vào một datatable và lấy datatable này làm datasource cho report. Việc này khá là đơn giản nếu bạn đã lập trình với cơ sở dữ liệu.
Tháng Mười Một 6, 2008 lúc 3:35 chiều
Xin tác giả hướng dẫn cách làm báo cáo động mà trong đó header đước lấy tự động từ csdl chứ ko bị cứng như trên và có đường kẻ thành ô, bảng. Cảm ơn nhiều!
Tháng Mười Một 8, 2008 lúc 1:19 chiều
Thay & cac ban co the huong dan em tao Chart Bar trong crystalreport voi’ 1 object data do minh` truyen vao` ko?
Thanks.
Tháng Ba 12, 2009 lúc 11:48 sáng
Toi da su dung chuong trinh tren, nhung toi muon bao cao voi nhieu ten truong thi sao , chang han nhu la 50 truong thi lam file DBReport.rpt nhu the nao ?
Tháng Ba 19, 2009 lúc 2:49 chiều
Thầy cho0 em hỏi làm sao tạo được dataset trong project vậy,vì em tạo report động mà đường dẫn thì tuyệt đối nên qua máy khác không chạy được,nếu chạy được thì lại không có dữ liệu gì cả…?.
Nếu database là một bảng thì không sao cả,chạy đâu vẫn tốt nhưng nhiều bảng thì bị như vậy đó,em cũng không hiểu được lý do tại sao
Rất mong được thầy hướng dẫn giúp,em rất cảm ơn.
Nick của em là:quochoaIT (nick yahoo)
Tháng Ba 24, 2009 lúc 9:24 chiều
Hi chao tất cả mọi người , mình cũng đang làm cái báo cáo , dùng cái crystal report của .net 2005 . Mình đã làm được báo cáo trên Web , chạy được rồi , nhưng mình muốn khi ấn nút print trên cái file .rpt nó kết lối với máy in luôn mà không phải save lại định dạng PDF nữa . Ai biết cái này trả lời hộ mình nhá . Thanks!
Tháng Ba 30, 2009 lúc 10:31 sáng
Chào tất cả mọi người mình cũng đang cần cái này nhưng làm trong môi trường web có ai biết chỉ giùm tui với.Rất mong được sự hỗ trợ của mọi người.Thanks!
Tháng Tư 2, 2009 lúc 11:53 chiều
Chào anh,
Em muốn làm Report trong C# 2005, nhưng gặp vấn đề như sau:
- Em cần tạo Report, mà dữ liệu được lấy từ các control (textbox, datagridview, usercontrol…), chứ không phải lấy dữ liệu từ database, vậy anh có cách nào giải quyết không, chỉ dùm em với. Cảm ơn anh rất nhiều.
Nếu có mã nguồn, xin anh gửi qua email của em dùm nhé. :D
Tháng Tư 14, 2009 lúc 8:22 chiều
chào thầy, em muốn thầy chỉ về các dùng Crystal Report ứng dụng cho mô hình 3 lớp. e định dùng ObjectDataSource nhưng chưa bit làm sao? thầy có thể giúp đỡ dc ko?
Tháng Tư 16, 2009 lúc 4:48 chiều
Chào thầy!
Em đang viết chương trình Customer Relationship management trong C# 2003. Thầy có thể hướng dẫn chi tiết cho .net 2003 giúp em được không ?
Thanks Thầy
Tháng Tư 26, 2009 lúc 2:46 chiều
Chào anh.
Xin anh chỉ cho em cách làm Report . Em có 1 cấu trúc XML. Bây giờ em muốn làm Report theo cấu trúc đó thì làm sao?
Chỉ em với nha anh!
Cảm ơn anh nhiều
Tháng Năm 4, 2009 lúc 8:31 sáng
minh dang tap lam crystal report . mong moi nguoi chi giao.Minh muon lan hoan bnag code.tuc la du l;ieu duoc dua tu sql vao dateset .Sau do gan vao bien co trong crystal report.moi nguoi co the gui code cho minh dc ko(dangdoanh.sp@gmail.com)
Tháng Năm 11, 2009 lúc 2:54 chiều
Chào anh Hòa
Mình đã thử làm báo cáo động theo cách thiết kế cố định các trường trên Report sau đó cho phép người dùng tùy chọn ẩn hiện các cột của báo cáo.
Vấn đề về tính toán để co dãn các cột Visible mình đã xử lý được. Tuy nhiên mình gặp phải một vấn đề đối với LineObject của Crystal Report đó là dịch chuyển vị trí của chúng. Đối tượng mình cần dịch chuyển là các Line trong Section Detail. Mình đã lên google và tham khảo một số cách nhưng không ăn thua.
Lỗi Runtime luôn xảy ra khi mình cố thay đổi thuộc tính Left của LineObject.
Đây là một trong những cách hướng dẫn trên trang Msdn mình đã thử. Nó ko báo lỗi nhưng sau khi đổi xong LineObject bị biến mất khỏi Crystalreport(Suppress hoặc Invisible)
Dim LineObj As LineObject = CType(CrptDocument.ReportDefinition.ReportObjects(RObj.Name), LineObject)
Dim TOP As Integer = LineObj.Top
Dim Bottom As Integer = LineObj.Bottom
LineObj.Top = 0
LineObj.Bottom = 0
LineObj.Left = objLeft
LineObj.Right = objLeft
LineObj.Top = TOP
LineObj.Bottom = Bottom
Rất mong nhận được sự trợ giúp hoặc phản hồi của bạn qua Email
Thanks in advance!
Tháng Năm 11, 2009 lúc 2:56 chiều
trong đó objLeft mang giá trị integer
Tháng Năm 11, 2009 lúc 8:54 chiều
Chào thầy Hòa!
Em đang tự học cryal report trong VB.net nhưng em đang gặp một rắc rối là: em tạo một báo cáo nhưng số trường trong bảng của em thì rất nhiều mà em không bit làm cách nào để mở rộng báo cáo. Mong thầy giúp em giải quyết vấn đề này.
Cám ơn thầy!
Tháng Năm 25, 2009 lúc 10:18 sáng
Em đang viết 1 app (C#2005 Express) , với CSDL là Exel.App tạo ra các bill theo mẫu có sẵn.Dữ liệu động sẽ tự động đổ vào 1 Table và các text (họ tên,ngày tháng).Em xin thầy tư vấn dùm em trong quá trình in ấn hóa đơn này thì phải làm thế nào.Hóa đơn dài 2-5 trang A4.Nếu sử dụng Crystal report thì không biết nó sẽ được đặt vào chỗ nào trong App này.Em đang rất bí mong thầy tư vấn thêm.Email của em là :breakoflove@yahoo.com.Mong thầy có vài lời tư vấn giúp em
Tháng Sáu 4, 2009 lúc 2:52 sáng
Chào thầy!
Em đang gặp một rắc rối trong phần report: em đã tạo ra được report, bây giờ em muốn chuyển sang word hoặc excel để in ra, khi thiết kế report em để khổ giấy A3 nằm ngang, làm thế nào để khi export ra word hoặc excel vẫn là khổ A3 nằm ngang?
Mong thầy giúp em giải quyết vấn đề này càng sớm càng tốt vì em đang rất cần.
Cám ơn thầy!
Tháng Bảy 2, 2009 lúc 10:18 sáng
Kính chào thầy!
Em có một số câu hỏi cần thầy giúp đỡ ạh
Công việc là thế này thầy ạh, em cần tạo ra một trang in ( dang báo cáo) ví dụ như tờ giấy A4, em ,muốn chia làm 4 báo cáo khác nhau trên trang A4 này, mỗi một lần em có thể in 1/4 tờ A4, hoặc 1/2 tờ A4 hoắc 3/4 tờ A4 đều có thể in được, Nếu theo như đưa dữ liệu vào thì một lúc em có thể in rất nhiều record, hoặc 1 Record theo kiểu in thẻ học sinh. Thầy có thể giúp em vẫn đề này được không ạ? Cảm ơn thầy nhiều! hy vọng em sẽ nhận được 1 câu trả lời thật hoàn hảo!!
Tháng Mười 15, 2009 lúc 7:34 chiều
Em rất cảm ơn những kiến thức mà thầy đã cung cấp cho chúng em.
Thầy cho em xin hỏi một số vấn đề
Làm cách nào để tạo một report động tức là số dòng và số cột sẽ co dãn theo số mẫu tin trong CSDL.
Vd: In bảng điểm tổng hợp toàn khóa cho lớp và bảng điểm toàn khóa cho cá nhân (em sử dụng VB.NET và Sql server). Bảng điểm của lớp thì là một bảng các hàng mỗi hàng là một bạn sinh viên và mỗi bạn đó sẽ có số cột tùy theo các môn học trong học kỳ. Bảng phải có số cột là lớn nhất theo bạn học số môn học nhiều nhất
Làm cách nào để tạo ảnh nền chìm trên crystal report. Em muốn in report nhưng trên nền report đó sẽ là các logo trang trí khắp trang.
Kính mong thầy giải đáp giúp em. Em xin chân thành cảm ơn