Thiết lập báo cáo và Xuất thông tin
Thiếy lập báo cáo trên cơ sở dữ liệu không chỉ đơn giản là hiển thịdữ liệu từ cơ sở dữ liệu. hầu hết các báo cáo cơ sở dữ liệu liên quan một số hoạt động khác trên dữ liệu. T ruy vấn dữ liệu để trả về, hiển thị và in ra những phần ta muốn. ...
Thiếy lập báo cáo trên cơ sở dữ liệu không chỉ đơn giản là hiển thịdữ liệu từ cơ sở dữ liệu. hầu hết các báo cáo cơ sở dữ liệu liên quan một số hoạt động khác trên dữ liệu.
- Truy vấn dữ liệu để trả về, hiển thị và in ra những phần ta muốn. ta gọi là lọc
- Sắp xếp Sao cho nó xuất hiện heo mmột thứ tự có ý nghĩa
- Phân nhóm dữ liệu để hiển thị một cách gọn gàng. Chương này sẽ phân biệt giữa các báo cáo và xuất thông tin
Visual Basic cho phép truy cập đến một số kỹ thuật Client/ server mới hỗ trợ truy cập cơ sở dữ liệu hiệu quả hơn - Đặc biệt khi nó dùng để xuất thông tin hay thiết lập báo cáo
Là điểm mới trong Visual Basic 6, thiết kế DataReport là cách trực quan để tạo ra những báo cáo thích hợp trong môi trường phát triển Visual Basic. Thiết kế DataReport, cung cấp các chức năng hết sức cơ bản, nhưng nó có ưu điểm rất dễ dùng.
Để tạo thiết kế DataReport, ta theo các bước sau:
1. trong đề án, từ menu Project, chọn Add DataReport.
2. Thiết kế DataReport được thêm vào đề án. DataReport chứa một số phân đoạn;
- Report Header hiển thị một lần ở đầu báo cáo.
- Report foodter hiển thị một lần ở cuối báo cáo
- Page header hiển thị tại đầu mỗi trang
- page footer hiển thị tại cuối mỗi trang
- Detail section hiển thị các dòng dữ liệu
- một hay nhiều group header hay foodter hiển thị tại đầu hoặc cuối của một phân đoạn nhóm.
Dễ nhất là tạo DataReport dùng trên thiết kế DataEnvironment.Với DataEnvironment, ta có thể dùng cách kéo thả để thiết kế báo cáo
Thiết kế với DataReport
Mỗi lần tạo ra thiết kế DataReport, ta phải ràng buộc nó với một cơ sở dữ liệu để hiển thị dữ liệu. ta thực hiện điều này thông qua một bộ gồm các điều khiển ràng buộc chỉ hoạt động trong ngữ cảnh thiết kế DataReport.
Các điều khiển trực quan của thiết kế DataReport bao gồm:
- Điều khiển nhãn
- Điều khiển hộp văn bản
- Điều khiển ảnh
- Điều khiển đoạn thẳng và điều khiển hình dạng
- Điều khiển hàm cho phép chèn các tính toán tóm tắt và báo cáo
Bởi vì các điều khiển của datareport được thiết kế đặc biệt để hoạt động trong ngữ cảnhcủa thiết kế datareport, chúng có những tên gọi khác nhau. Ví dụ tên lớp chính thức của điều khiển hộp văn bản là Rpttextbox; tên lớp điều khiển ảnh là rptimage
Sẽ đơn giản hơn nhiều nếu ta dùng kỹ thuật kéo thả để tạo báo cáo
- Từ menu Project, chọn Add DataReport
- Tạo thiết kế Data Enviroiment
- Trong thiết kế Data Enviroiment, tạo một câu lệnh truy vấn dựa trên bảng tblCcustomer
- Thiết kế Data Enviroiment hiển thị danh sách các trường dữ liệu trong bảng tblCustomer. Chọn và kéo rê trường Customer_ID từ thiết kế Data Enviroiment vào phân đoạn Detail của thiết kế DataReport
- Một điều khiển nhãn và một hộp văn bản ràng buộc với trường dữ liệu Customer_ID xuất hiện trên thiết kế DataReport
Nếu kéo điều khiển phân đoạn Page Header, nó sẽ được hiển thị một lần trên mỗi trang. Nếu thực hiện việc này với nhiều trường, ta sẽ có báo cáo tương tự như sau:
Khi có nhiều điều khiển được chọn, điều chỉnh kích cỡ một điều khiển sẽ làm kích cỡ các điều khiển khác bị diều chỉnh theo
Kéo và thả trường dữ liệu từ thiết kế Data Enviroiment vào báo cáo, ta phải thêm một số bước để chỉ ra nguồn dữ liệu cho ràng buộc
Bước 1: Chọn thiết kế DataReport bằng cách chọn vào nó trong danh sách drop- down của cửa sổ Properties
Bước 2: Trong cửa sổ Properties, quy định thuộc tính datasource của datareport là tên của trình thiết kế Data Enviroiment
Bước 3: Nếu đang sử dụng trình thiết kế Data Enviroiment, quy định thuộc tính Data member của DataReport là lệnh dữ liệu mà ta muốn
Xem và xuất DataReport
Ta có thể xem báo cáo trong chế độ Print Preview bằng cách thi hành phương thức Show.Ví dụ nếu DataReport được gọi là drCustomer thì ta có thể chạy nó bằng dòng lệnh:
drCustomer.Show
Báo cáo được hiển thị nhe hình dưới đây:
Microsoft Access cho phép viết báo cáo cơ sở dữ liệu. Nó hỗ trợ giao diện dễ dùng và trực quan mà hầu hết lập trình viên Visual Basic đều ưa thích. tương tự Crystal Report, báo cáo Microsoft Access cho phép phân nhóm và sắp xếp dữ liệu, cũng như sử dụng các biểu thức hiệu chỉnh trong báo cáo.
Thi hành báo cáo của Access từ Visual Basic
Có hai kỹ thuật thực hiện điều này:
- Sử dụng Automation để phóng một instance của Microsoft Access, thi hành báo cáo trực tiếp từ trong ứng dụng. Automation là một kỹ thuật cho phép giao tiếp giữa các ứng dụng trong Windows. Ở đây Access sẽ làm Automation server
- Dùng sản phẩm VSREPORT của Videosoft cho phép người sử dụng thi hành báo cáo của Microsoft Access bất kể họ có cài đặt Access hay không. Đây là điều khiển ActiveX chuyển đổi báo cáo từ tập tin MDB tành một định dạng mà ta có thể cung cấp với các ứng dụng
Sử dụng AUTOMATION để thi hành báo cáo Access
Ta có thể phóng một instance của Microsoft Access từ ứng dụng viết bằng Visual Basic. Với kỹ thuật này, ta có thể lập trình Microsoft Access tương tự như với đối tượng khác ngay trong Visual Basic
Bất lợi của kỹ thuật này là buộc người sử dụng phải chạy ột instance của Microsoft Access mỗi khi họ muốn xem hoặc in ấn báo cáo. Dĩ nhiên nó cũng đòi hỏi phải có Microsoft Access nạp sãn trên máy. Nếu bạn muốn khắc phục trở ngại này nhưng vẫn dùng báo cáo Access trong ứng dụng, bạn có thể xem xét giải pháp thiết lập báo cáo của Video soft VSREPORT
Để lập trình Access thông qua Automation, ta làm một tham chiếu đến Access bằng cách từ menu Project chọn References chọn hộp dánh dấu “Microsoft Access 8.0 Object Library”
Tránh dùng dàng buộc trễ với Automation
Nếu bạn dùng qua Automation qua OLE Automation, bạn sẽ thấy điểm khác biệt quan trọng giữa kỹ thuật Automation trong phần này và OLE Automation. Trong Visual Basic ta cần tránh định nghĩa đối tượng Automation theo kiểu Object tổng quát. Ví dụ trong Visual Basic 3.0 ta có thể viết chương trình như sau:
Dim appAcces as Object
Set appAcces =CreateObject(“Access.Application”)
Đoạn chương trình trên hoạt động tốt với Visual Basic 3.0 nhưng có cách khác tốt hơn. Thay vì dùng kiểu Object ta dùng kiểu dữ liệu đối tượng Automation Server cung cấp. Bởi vì khi đó Visual Basic không cần thi hành câu lệnh truy vấn trên Automation Server mỗi khi ta truy nhập nó để xác định kiểu đối tượng cần tạo. kỹ thuật này gọi là ràng buộc trế, giờ đây chỉ phù hợp với hai tình huống:
- Ta không biết trước kiểu đối tượng Automation Server khi cần tạo đối tượng
- Ta đang sử dụng một môi trường phát triển ứng dụng không hỗ trợ ràng buộc sớm sẽ cải tiến đáng kể tốc đọ chương trình, nhất là những lệnh cần nhiều sử lý để gọi đến Microsoft Office Automation Server
Thi hành Automation để điều khiển Microsoft Access
Sau khi thiết lập tham chiếu đến Microsoft Access từ trong ứng dụng, ta viêt chương trình để tạo instance cho đối tượng. khi đó có một đối tượng tham chiếu đến server, Visual Basic tích hợp mô hình đối tượng của server vào tính năng liệt kê thành phần tự động
Ngoài ra ta có thể xem toàn bộ thuộc tính, phương thức và sự kiện của đối tượng Access trong cửa sổ Object Browser
Đoan chương trình sau tạo một instance của Microsoft Access trong Visual Basic. Nó sử dụng Automation để thi hành phương thức Docmd của Access
Option Explicit Dim MSAccess As Access.Application Private Sub Command1_Click() Set MSAccess = New Access.Application MSAccess.OpenCurrentDatabase ("D:TungPTTemp eins.mdb ") MSAccess.DoCmd.OpenReport "rptEmployee", acViewNormal MSAccess.CloseCurrentDatabase Set MSAccess = Nothing End Sub
Sử dụng VSREPORTS để thi hành báo cáo Access
VSREPORT được thực hiện theo 2 phần:
- Trình tiện ích chuyển đổi dùng tập tin MDB của Access và tạo một tập tin báo cáo từ đối tượng Report chứa trong cơ sở dữ liệu
- Điều khiển activex dùng để mở tập tin báo cáo và thi hành báo cáo trong ứng dụng
Cấu trúc này tương tự Crystal Reports. Với cả hai hệ thống, ta phải tạo một tệp tin thông báo, rồi thêm một điều khiển và viết đoạn chương trình trong ứng dụng để in báo cáo. mỗi lần sửa đổi trong báo cáo, ta phải lưu và phân phát lại cho người sử dụng.
Có nhiều điểm khác nhau giữa Crystal Reports và VSREPORT. Crystal Reports có một tiện ích để thiết kế báo cáo riêng, trái lại, VSREPORT sử dụng Microsoft Access. chọn lựa các sản phẩm tuỳ thuộc vào các ứng dụng.
Nếu bạn muốn dùng báo cáo của Access, để ý rằng báo cáo của VSREPORT dùng trên Automation là người sử dụng không phải khởi động một instance của Access mỗi lần họ muốn thi hành báo cáo. Thực vậy, với mỗi VSREPORT, người sử dụng không cần nạp sẵn Access trên máy, điều này rất tiện nếu bạn là người quản lý một cơ quan lôncs định hướng sử dụng đối với nhiều loại người sử dụng. Nếu bạn khồn chắc chắn rằng toàn bộ người sử dụng có cài sẵn phoên bản Access mới nhất, bạn có thể đưa cho họ một tệp tin VSREPORT mà không cần bận tâm người sử dụng đã cài Access hay chưa.
Dùng VSREPORT để chuyển đổi báo cáo Access
Trước hết tạo một báo cáo trong Microsoft Access, sau đó thi hành trình thông dịch VSREPORT trên đó. Kết quả của thông dịch là một tệp tin có thể dùng ActiveX VSREPORT trong ứng dụng
Có 2 trình thông dịch:
- TRANS95.EXE: chuyển đổ báo cáo Access 95
- TRANS97.EXE : chuyển đổ báo cáo Access 97
Các tiện ích này chứa trong thư mục cài đặt VSREPORT
Tạo ứng dụng dùng VSREPORT
- phóng tiện ích thông dịch Access 97, TRANS97.EXE
- Nhấn đúp chuột lên More File để hiển thị hộp thoại tệp tin
- Chọn tệp tin cơ sở dữ liệu Novelty
- Trình thông dịch mở cơ sở dữ liệu và hiển thị danh sách các báo cáo. Chọn rptCustomer, sau đó nhấn mũi tên phải phía trên ở dưới hộp thoại. nhấn Next
- trình thông dịch yêu cầu cung cấp đường dẫn và tệp tin cần chọn. ta cũng có thể đổi tên tệp tin kết quả vào lúc này.
- nhấn Translate. trình thông dịch sinh ra tập tin.VSR chứa định nghĩa báo cáo
Dùng điều khiển ActiveX VSREPORT để thi hành báo cáo có Access
Để đưa báo cáo vào ứng dụng, ta dùng điều khiển ActiveX VSREPORT. Điều khiển này không xuất hiện lúc thi hành; nó chỉ đọc và xuất ra tập tin.VRS
Để cài đặt bản DAO 3.5 của điều khiển VSREPORT, ta làm như sau:
- Cài đặt tập tin cập nhật lấy từ CD hoặc tải xuống từ Internet, Web side http://www.videosoft.com
- Bảo đảm tập tin VSREP351.OCX có sẵn trong thư mục system của windows
- Dùng tiện ích regsvr32 để dăng ký tệp tin OCX mới
- Từ menu Project, chọn Components để thêm điều khiển VSREPORT
Đưa điều khiển vào ứng dụng
- Từ menu Project, chọn Components để thêm điều khiển VSREPORT vào đề án
- Điều khiển VSREPORT xuất hiện trong hộp công cụ. Nhấn đúp chuột vào điều khiển VSREPORT trong hộp công cụ để đưa nóp vào biểu mẫu. Điều khiển sẽ không hiển thị lúc thi hành, ta không cần bận tâm về vị trí điều khiển
- Quy định thuộc tính Report File Name của điều khiển là tệp tin.VSR ta đã tạo trước đó. Sau đó, quy định thuộc tính database Name của điều khiển là tên tập tin.MDB. Ta cũng có thể dùng cửa sổ Properties hoặc dùng chương trình
- Thi hành phương thức printreport để thi hành báo cáo. Ta còn tuỳ chọn cho phép gửi kết qủa ra màn hình hoặc máy in, tuỳ theo giá trị thuộc tính của máy in printdevice.
Đoạn chương trình sau để in trong chế đọ PrintPreview và thi hành báo cáo cơ sở dữ liệu dùng điều khiển ActiveX VSREPORT
Option Explicit ' Requires Jet 3.5 version of VSREPORTS (vsrep351.ocx) Private Sub Form_Load() vsReport1.ReportFileName=App.Path& " ptCustomer.vsr" vsReport1.DatabaseName = "....DB ovelty.mdb" End Sub Private Sub cmdPreview_Click() vsReport1.PrintDevice = vsrPrintDeviceScreen vsReport1.Zoom = 50' Percent vsReport1.PrintReport End Sub Private Sub cmdPrint_Click() vsReport1.PrintDevice = vsrPrintDevicePrinter vsReport1.PrintReport End Sub Private Sub vsReport1_LoadingDoc(ByVal Page As Integer, ByVal Of As Integer, Cancel As Boolean) Debug.Print "Loading: " & Page & " of " & Of End Sub
Tạo ứng dụng báo cáo nâng cao với VSREPORT
VSREPORT có một số tính năng khác cho phép tạo ứng dụng báo cáo mạnh mẽ. Sau đây là các tính năng nâng cao của điều khiển VSREPORT:
- Thuộc tính Zoom; cho phép phóng to hoặc thu nhỏ theo đơn vị %
- các thuộc tính Printer để điều khiển cách thức in ấn của báo cáo
- Hỗ trợ duyệt trangđối với báo cáo nhiều trang: Dùng thuộc tính PrevewPage để cho phép người sử dụng lật trang
- Tích hợp với đối tượng DataBase của DAO: Thay vì gán DataBase Name cho điều khiển, ta có thể gán đối tượng DataBase của DAO cho điều khiển. giải pháp này được dùng khi ứng dụng đang dùng DAO để kết nối với cơ sở dữ liệu và ta không muốn có một tham chiếu rõ ràng đến cơ sở dữ liệu từ trong điều khiển VSREPORT. Để gán một đối tượng DataBase cho điều khiển VSREPORT , ta quy định thuộc tính DataBase Access Mode của điều khiển là 1 – vsr DataBase Objiect. Sau đó ta có thể gán đối tượng DataBase của DAO cho thuộc tính DataBase Objectcủa điều khiển VSREPORT.
Ngoài các thuộc tính trên, báo cáo thi hành với điều khiển VSREPORT có thể kích hoạt sự kiện, như cách thực hiện của báo cáo trong Access. nó cho phép ta viết chương trình đáp ứng các sự kiện sảy ra trong khi in báo cáo. tuy nhiên, mô hình sự kiện của điều khiển VSREPORT khác với mô hình sự kiện của Access, vì vậy ta phải giữ bản gốc báo cáo Access cẩn thận trước khi chuyển sang dùng VSREPORT.
Crystal Reports cho phép tạo báo cáo cơ sở dữ liệu trong ứng dụng viết bằng Visual Basic. nó gồm hai phần chủ yếu:
- Trình thiết kế báo cáo xác định dữ liệu sẽ đưa vào báo cáo và cách thể hiện của báo cáo
- Một điều khiển activex cho phép thi hành, hiển thị, inấn điều khiển lúc thi hành ứng dụng
Đối với nhiều người lập trình Visual Basic, Crystal Reports là tất cả những gì cần khi muốn thiết lập báo cáo cơ sở dữ liệu. Bởi vì phiên bản Crystal Reports đi kèm với Visual Basic cực kỳ đẽ dùng.
Có 2 bước để tạo một báo cáo dùng Crystal Reports: tạo báo cáo và thêm điều khiển ActiveX của Crystal Reports vào ứng dụn. Bạn tạo báo cáo dùng trình thiết kế báo cáo của Crystal Reports. Ứng dụng này để tạo các tài liệu báo cáo thi hành trong ứng dụng. Sau đó ta mở tài liệu báo cáo trong ứng dụng bằng cách sử dụng điều khiển Crystal Reports.
Cài đặt Crystal Reports
Khác với phiên bản cũ của Visual Basic, Crystal Reports không được cài đặt tự động khi ta cài Visual Basic
Để cài đặ Crystal Reports phóng trình cài đặt Crystl32.exe chứa trong thư mục COMMONTOOL VBCRYSREPT trên đĩa VB6. các tệp tin tương ứng sẽ được copy vào hệ thống và đăng ký. sau đó ta mới có thể sử dụng Crystal Reports trong ứng dụng
Dùng Crystal Reports tạo báo cáo
Ta không thể tạo báo cáo băng chương trình, mà thay vào đó ta dùng Crystal Reports đe tạo báo cáo. Sau khi tạo báo cáo ta lưu nó và phân phát cùng với ứng dụng cho người sử dụng.
Để phóng trình thiết kế Crystal Reports ta theo các bước sau:
- Phóng trình thiết kế Crystal Reports
- Trình thiết kế hoạt động
- Từ menu file chọn New. hộp thoại tạo báo cáo mới xuất hiện;
Với hộp thoại này, Visual Basic cung cấp một số khiuôn mẫu báo cáo để ta chọn dùng xuất dữ liệu ta có thể dùng báo cáo do mình thiết kế làm khuôn mẫu cũng như tạo các báo cáo hiệu chỉnh không có trong khuôn mẫu có sẵn các kiểu báo cáo có sẵn trong Crystal Reports
Kể báo cáo | mô tả |
standar | báo cáo liệt kê theo dòng và cột, cho phép sắp xếp và gộp dữliệu |
listing | báo cáo là danh sách dữ liệu liên tục không có tổng kết haytrường tổng cộng. Ta có thể dùng kiểu báo cáo này để in danh bạ điện thoại |
cross- Tab | Tổ hợp dữ liệu theo hai chiều |
mail Lable | báo cáo thiết kế để in dữ liệu theo cột cho nhãn thư |
Summary | báo cáo chỉ hiển thị thông tin tổng quát, không chứa dữ liệu chitiết |
graph | báo cáo thể hiện dữ liệu một cách trực quan |
Top N | báo cáo cho phép chỉ hiển thị một số bản ghi được chọn |
drill down | báo cáo cho phéơ nhấn đúp chuột lên dữ liệu tổng quát để hiểnthị các thông tin chi tiết |
Các kiểu báo cáokhác | báo cáo sử dụng khuôn mẫu bạn đã tạo trước đó |
Ví dụ mẫu – dùng Crystal Reports để tạo báo cáo
- Khởi động Crystal Reports và tạo một báo cáo mới. Chọn kiểu Standar
- Ở bước một của Standar, nhấn nút Data file.
- Trong hộp thoại tập tin chọn cơ sở dữ liệu muốn báo cáo. Nhấn Add. danh sách các bảng được chỉ ra. Nó chuyển sang bước hai, hiển thị các quan hệ giữa các bảng trong cơ sở dữ liệu
Bởi vì các mối quan hệ được định nghĩa sẵn cho cơ sở dữ liệu đã được xác định ở mức bộ máy cơ sở dữ liệu, ta không cần định nghĩa lại. Nhưng nếu cần thiết phải thiết lập hoặc xoá một quan hệ ở mức báo cáo thay vì ở mức bộ máy cơ sở dữ liệu ta theo các bước sau:
- Nhấn chuột vào đoạn thẳng thể hiện quan hệ giữa các bảng
- Nhấn Delete quan hệ bị xoá bỏ
- Nhấn và rê một trường nào đó từ một bảng và thả ở bảng khác quan hệ giữa hai bảng lại được thiết lập
- Nhấn Next. chuyển sang bước 3. Đến đây ta xác lập trường nào sẽ hiển thị trong báo cáo.
- Nhấn vào Tab Sort. Bước này cho phép xác định cách sắp xếp dữ liệu
- Chọn vào Tab Total. Cho phép tóm lược dữ liệu trong báo cáo
- nhấn vào Tab Style. Cho phép xác định cáh thức thể hiện báo cáo
- Nhấn Preview Report
Thi hành báo cáo trong ứng dụng với điều khiển ActiveX của Crystal Reports
Việc cho phép người sử dụng ứng dụng thi hành Crystal Reports là hoàn toàn đơn giản; nó liên quan đến việc điều khiển ActiveX của Crystal Reports vào đề án và viết đoạn chương trình xử lý. Để làm được điều này, ta làm như sau:
1. Tạo một ứng dụng Visual Basic mới với một nút lệnh duy nhất
2. Thêm điều khiển Crystal vào ứng dụng thông quan menu Project Components
3. Tạo một instance của một điều khiển Crystal Reports trên biểu mẫu bằng cách nhấn đúp lên thanh công cụ. điều khiển kết quả được gọi là Crystal Reports 1
4. trong sự kiện click của nút lệnh dưa vào đoạn chương trình sau
Private Sub cmdReport_Click() CrystalReport1.ReportFileName=App.Path& "product.rpt" CrystalReport1.PrintReport End Sub
5. Thi hành nút lệnh và ấn nút Run. báo cáo thi hành hiển thị cho người sử dụng trong cửa sổ preview. Đến đây người sử dụng có thể xuất báo cáo ra máy in bằng cách nhấn nút Print. dùng thuộc tính Distination của điều khiển Crystal Reports, ta có thể gửi dữ liệu trực tiếp đến máy in bỏ qua cửa sổ Preview.
Sử dụng bản mới hơn của Crystal Reports
Phiên bản Crystal Reports mới đưa ra một số tính năng mới
- Báo cáo con
- Tuỳ chọn định dạng mới
- Báo cáo có điều kiện
- Trình điều khiển cơ sở dữ liệu trực tiếp
- Xuất ra Word và Excel
- Hỗ trợ Web
- Hỗ trợ những nguồn dữ liệu không phải là quan hệ