Báo biểu là một phần của project do đĩ, để tạo mới một báo biểu chúng ta thực hiện thơng qua menu Project | Add new item… và lần lượt thực hiện
Trong phần Templates, chọn mục Crystal Report để tạo mới một báo biểu.
Trong phần Name của hộp thoại Add New Item nhập vào tên file báo biểu cần tạo.
Khi nhấn nút Open, Visual Studio .Net tự động chuyển đổi sang giao diện của Crystal Report để
chúng ta thực hiện việc tạo mới báo biểu. Cĩ thể chọn tạo mới báo biểu ở một trong hai hình thức: Wizard (Using Report Expert) hay tự thiết kế từ đầu (Blank Report). Chúng ta cũng cĩ thể mở một báo biểu đã tạo sẵn đểđưa vào project.
Khi chọn Blank Report, khác với sử dụng phần mềm Crystal Report độc lập, Visual Studio .NET sẽ
chuyển ngay sang màn hình thiết kế mà khơng chọn CSDL cho báo biểu (xem hình trên)
Để chọn CSDL cho báo biểu, nhắp chuột phải trên mục Database Fields và chọn mục Add/Remove Database
Một điểm cần chú ý khác trong quá trình thiết kế báo biểu đĩ là một số thay đổi trong giao diện so với phần mềm Crystal Report chạy độc lập. Ví dụ, chúng ta sẽ tìm thấy TextObject trong phần Toolbox hay thuộc tính của các đối tượng thiết kế cĩ thể thay đổi trực tiếp từ cửa sổ Properties như
khi đang thiết kế form
Cuối cùng, cũng giống như Crystal Report Designer trên Visual Basic 6.0, chúng ta khơng thể
chuyển sang chế độ Preview để xem kết quả thiết kế báo biểu, thay vào đĩ cần phải sử dụng đối tượng Crystal Report Viewer của Visual Studio .NET.
Màn hình dưới là thiết kế của báo biểu hiển thị danh sách các mặt hàng theo từng loại, lấy nguồn dữ
II.1. Nguồn dữ liệu cho báo biểu
Crystal Report kết nối với nguồn dữ liệu thơng qua các trình dữ liệu của nĩ. Mỗi trình được viết để xử lý cho một loại dữ liệu hoặc cho một kỹ thuật truy xuất dữ liệu cụ thể.
Để tạo thuận lợi cho người lập trình, các trình dữ liệu của Crystal Report cung cấp hai mơ hình truy xuất: PULL và PUSH
II.1.1. Pull Model (mơ hình kéo)
Mơ hình Pull
Trong mơ hình này, trình sẽ kết nối với nguồn dữ liệu và lấy về dữ liệu yêu cầu. Kết nối với nguồn và lệnh SQL truy xuất dữ liệu đều do Crystal Reports xử lý; chúng ta khơng phải viết dịng lệnh nào. Nếu khơng cĩ dịng lệnh nào viết cho lúc thực hiện, báo biểu sử dụng mơ hình Pull.
II.1.2. Push Model (mơ hình đẩy)
Ngược lại, mơ hình đẩy (Push) địi hỏi chúng ta phải viết lệnh kết nối dữ liệu, thực hiện truy xuất dữ
liệu để tạo Recordset hoặc DataSet chứa các field cần thiết cho báo biểu. Mơ hình này cho phép chia sẽ
Mơ hình Push
II.2. Sử dụng Crystal Report Viewer để hiển thị báo biểu
Để hiển thị báo biểu, chúng ta cần cĩ điều khiển CrystalReportViewer. Cĩ thể thiết kế riêng một form chứa điều khiển này để hiển thị báo biểu và cung cấp thêm các chức năng đặc biệt nào đĩ trong chương trình. Trong trường hợp đơn giản, bản thân CrystalReportViewer cũng đã cung cấp khá đầy đủ
các chức năng hiển thị báo biểu và tương tác với người dùng. Do đĩ, chúng ta cĩ thể sẽ tạo ra form và
đối tượng CrystalReportViewer ngay trong đoạn lệnh của chương trình.
CrystalReportViewer trên ToolBoox
Ví dụ: Sau đây khai báo một form và đối tượng CrystalReportViewer để hiển thị báo biểu
CrystalReport1.rpt vừa được tạo ở trên ' Tạo form mới
Dim f As New Form
' Tạo đối tượng CrystalReportViewer
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer ' Đưa cv vào trong form, đặt cv.Dock = Fill để chiếm đầy màn hình f.Controls.Add(cv)
cv.Dock = DockStyle.Fill
' Gán report sẽ hiển thị trên cv là một thể hiện của CrystalRport1 cv.ReportSource = New CrystalReport1
f.ShowDialog()
Khi thực hiện chương trình với đoạn lệnh trên, chúng ta sẽ cĩ một màn hình hiển thị report tương tự
như hình dưới.
CrystalReportViewer cĩ khá đầy đủ các chức năng, từ lật trang, in ấn, gửi mail, phĩng lớn/thu nhỏ cho tới tìm kiếm, định vị các group,…
II.3. Nguồn dữ liệu cho báo biểu từ DataSet
Một điểm đặc biệt trong Visual Studio .NET là cĩ thể tạo nguồn dữ liệu cho báo biểu từ một DataSet (mơ hình Push). Sử dụng DataSet làm nguồn dữ liệu của báo biểu cho phép tạo ra những báo biểu khơng cần kết nối với CSDL hay thậm chí tạo ra những báo biểu trong các ứng dụng hoạt động khơng cần cĩ CSDL đi cùng. Chẳng hạn, cĩ thể lấy cấu trúc DataSet từ một file XML làm nguồn dữ liệu cho báo biểu.
Để gán nguồn dữ liệu cho báo biểu, chúng ta cần một biến đối tượng là một thể hiện của báo biểu đã thiết kế. Khi đã cĩ một DataSet, chúng ta sử dụng phương thức SetDataSource của đối tượng báo biểu
để gán DataSet đĩ làm nguồn dữ liệu:
Ví dụ:
Dim Rpt As New CrystalReport1 Rpt.SetDataSource(ds)
Sau đây minh họa cách thiết kế báo biểu sử dụng DataSet làm nguồn dữ liệu.
Trong Project, tạo một DataSet mới
+ Menu Project | Add new item, chọn mục DataSet, trong phần Name, gõ vào tên của DataSet là: Products_Schema.xsd
+ Lưu DataSet lại sau khi tạo xong cấu trúc bảng
Tạo mới một báo biểu, khi chọn nguồn dữ liệu cho báo biểu chúng ta chọn mục ADO.NET DataSet
+ Chọn DataSet vừa tạo
+ Chọn 2 bảng Categories và Products làm nguồn dữ liệu + Chọn OK để lưu lại nguồn dữ liệu của báo biểu
Thiết kế báo biểu tương tự như của ví dụ trước
Trong đoạn lệnh hiển thị dữ liệu, sửa lại nội dung như sau:
Ví dụ:
Dim bo_doc_ghi As New Data.OleDb.OleDbDataAdapter _
("Select CategoryID, CategoryName From Categories;Select ProductID, ProductName, " _
& "UnitPrice, UnitsInStock, CategoryID From Products" & _
"Provider=SQLOLEDB;Server=NTH;Initial Catalog=Northwind; User ID=sa") bo_doc_ghi.TableMappings.Add ("Table", "Categories")
bo_doc_ghi.TableMappings.Add ("Table1", "Products") Dim DS As New Products_Schema, rpt As New CrystalReport1 Dim f As New Form
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer f.Controls.Add(cv)
cv.Dock = DockStyle.Fill rpt.SetDataSource(DS)
rpt.RecordSelectionFormula = "{Categories.CategoryID} > 4" cv.ReportSource = rpt
f.ShowDialog()
Khi chạy chương trình, báo cáo sẽ được hiển thị như sau:
Trên hình, dữ liệu đã được lọc lại so với báo cáo trước để chỉ hiển thị những Category cĩ CategoryID >4.
II.4. Định lại dữ liệu cho báo biểu từ nguồn CSDL
Trong mơ hình Pull đã đề cập ở trên, khi khai báo nguồn dữ liệu trong thiết kế, chúng ta phải chỉ rõ nguồn dữ liệu (đường dẫn của tập tin mdb hay thơng tin đăng nhập trong SQL Server). Vì thế, lúc thực thi, cần định lại thơng tin nguồn CSDL.
Trước hết cần làm quen với một số đối tượng trong CrystalDecisions.CrystalReports.Engine:
Các đối tượng trong CrystalDecisions.CrystalReports.Engine
Tên Mơ tả
Database Nguồn CSDL sử dụng cho báo biểu.
Table Thơng qua chỉ số, tên trả về bảng tương ứng được sử dụng trong báo biểu. Tables Tập hợp các bảng sử dụng trên báo biểu.
Báo biểu cĩ thành phần Database cho biết nguồn dữ liệu hiển thị. Khi vị trí nguồn thay đổi, chúng ta phải định lại vị trí nguồn mới cho báo biểu thơng qua thơng tin đăng nhập của Table, thuộc tập hợp Tables của Database.
Thơng tin đăng nhập thuộc lớp TableLogOnInfo trong khơng gian tên CrystalDecisions.Shared.TableLogOnInfo với các thơng tin:
Tên Mơ tả
ConnectionInfo Đối tượng chứa thơng tin kết nối của bảng. DatabaseName Tên tập tin CSDL.
Password Mật khẩu truy cập nguồn CSDL ServerName Tên server hoặc nguồn dữ liệu ODBC. UserID Tên người dùng để truy cập CSDL.
Thơng tin TableLogOnInfo của bảng cĩ tính chỉđọc và mặc định lưu giữ thơng tin kết nối lúc chúng ta khai báo nguồn để thiết kế báo biểu. Khi thay đổi và muốn cập nhật lại, chúng ta phải sử dụng phương thức ApplyLogOnInfo của đối tượng Table với tham số là TableLogOnInfo chúng ta đã thay đổi.
Ví dụ: Minh họa khi nguồn dữ liệu là MS Access Dim f As New Form()
' CReportVD là báo biểu đã tạo lúc thiết kế
Dim rpt As New CreportVD()
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer() f.Controls.Add(cv)
cv.Dock = DockStyle.Fill
Dim logOnInfo As CrystalDecisions.Shared.TableLogOnInfo
' Nếu các Table cùng từ một nguồn dữ liệu, chỉ cần định lại cho một bảng là đủ logOnInfo = rpt.Database.Tables(0).LogOnInfo logOnInfo.ConnectionInfo.ServerName = <đường dẫn đến .mdb> rpt.Database.Tables(0).ApplyLogOnInfo(logOnInfo) cv.ReportSource = rpt f.ShowDialog()
Ví dụ: Minh họa khi nguồn dữ liệu là SQL Server Dim f As New Form()
' CReportVD là báo biểu đã tạo lúc thiết kế
Dim rpt As New CreportVD()
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer() f.Controls.Add(cv)
cv.Dock = DockStyle.Fill
Dim logOnInfo As CrystalDecisions.Shared.TableLogOnInfo
' Nếu các Table cùng từ một nguồn dữ liệu, chỉ cần định lại cho một bảng là đủ
logOnInfo = rpt.Database.Tables(0).LogOnInfo
logOnInfo.ConnectionInfo.ServerName = <Tên server> logOnInfo.ConnectionInfo.DatabaseName = <Tên CSDL> logOnInfo.ConnectionInfo.UserID = <Người dùng> logOnInfo.ConnectionInfo.Password = <Mật khẩu>
rpt.Database.Tables(0).ApplyLogOnInfo(logOnInfo) cv.ReportSource = rpt
f.ShowDialog()
II.5. Lọc dữ liệu báo biểu
Để lọc dữ liệu trên báo biểu, sử dụng thuộc tính RecordSelectionFormula với cú pháp:
Cú pháp:
<CrystalReport>.RecordSelectionFormula = _
"{<Tên bảng>.<Tên field>} <Tốn tử so sánh> <Giá trị>" <Tốn tử so sánh> cĩ thể là =, >=, <=, >, <, <>, In (<danh sách>), Not In (<danh sách>), In <giá trịđầu> To <giá trị cuối>
<Giá trị> cần phải cĩ ký hiệu của kiểu dữ liệu như ['] cho kiểu String, [#] cho kiểu DateTime Hoặc sử dụng thuộc tính SelectionFormula của điều khiển hiển thị báo biểu CrystalReportViewer
Cú pháp:
<CrystalReportViewer>.SelectionFormula = _
"{<Tên bảng>.<Tên field>} <Tốn tử so sánh> <Giá trị>"
II.6. Truyền tham số cho báo biểu
Để truyền tham số cho báo biểu, sử dụng phương thức SetParameterValue của báo biểu theo cú pháp sau:
Cú pháp:
<CrystalReport>.SetParameterValue(<Tên tham số>, <Giá trị>) <Tên tham số> là tên của tham số (ParameterField) đã tạo trong báo biểu. <Giá trị> khơng cần cĩ ký hiệu của kiểu dữ liệu.
II.7. Các loại kết xuất báo biểu
Mặc định, báo biểu được kết xuất ra màn hình, chúng ta cĩ thể xuất báo biểu ra máy in hoặc tập tin theo cú pháp sau: II.7.1. Kết xuất ra máy in Cú pháp: <CrystalReport>.PrintToPrinter(<số bản>, <Collate>, _ <từ trang>, <đến trang>) II.7.2. Kết xuất ra tập tin Cú pháp:
<CrystalReport>.ExportToDisk(<loại tập tin>, <tên tập tin>) <loại tập tin> cĩ thể cĩ các giá trị sau:
Các gía trị thuộc tính của CrystalDecisions.[Shared].ExportFormatType (loại tập tin)
Giá trị Mơ tả
Excel Xuất ra tập tin .XLS. HTML40 Xuất ra tập tin HTML4.0 NoFormat Xuất ra tập tin khơng kiểu. PortableDocFormat Xuất ra tập tin .PDF. RichText xuất ra tập tin .RTF WordForWindows xuất ra tập tin .DOC
ĐỀ THI MẪU CUỐI HỌC PHẦN Lập Trình Quản Lý (VB.NET) Thời gian: 60 phút Ngày thi: *** Các kết quả lưu vào đĩa làm việc để chấm điểm *** Phần I: Các thành phần cung cấp sẵn 1. Cơ sở dữ liệu Mơ tả
Đơn vị ABC cĩ nhiều phịng ban với các nhân viên trực thuộc. Do nhu cầu cơng tác, nhân viên cĩ thể được điều động từ phịng ban này sang phịng ban khác. Viết chương trình tra cứu thơng tin nhân viên. Quan hệ giữa các bảng
2. Cấu trúc thư mục tổ chức ứng dụng
Thư mục Ý nghĩa
Bao_cao Chứa tập tin báo biểu BC_QUA_TRINH.rpt.rpt sử dụng trong ứng dụng Du_lieu Chứa tập tin cơ sở dữ liệu QL_NHAN_SU.mdb
Lop_xu_ly_luu_tru Chứa XL_BANG.vb là lớp xử lý lưu trữ của ứng dụng Lop_xu_ly_nghiep_vu Chứa các lớp xử lý nghiệp vụ của ứng dụng
Man_hinh Chứa tập tin màn hình MH_TRA_CUU.vb sử dụng trong ứng dụng
3. Danh sách các lớp xử lý
Lớp xử lý Ý nghĩa
XL_BANG.vb Lớp đối tượng đọc ghi dữ liệu và một số chức năng khác
XL_<Nghiệp vụ>.vb Các lớp xử lý nghiệp vụ kế thừa từ lớp bảng ứng với mỗi bảng trong CSDL
4. Danh sách các đối tượng thể hiện
Thể hiện Ý nghĩa
MH_TRA_CUU.vb Màn hình cho phép thực hiện chức năng tra cứu thơng tin nhân viên BC_QUA_TRINH.rpt Báo biểu xuất thơng tin quá trình cơng tác của nhân viên
5. MH_TRA_CUU.vb
Màn hình Tra cứu thơng tin
Màn hình MH_TRA_CUU đã được cài đặt để:
Liệt kê ra danh sách chọn Thuộc phịng những phịng ban trong đơn vị. Lưới đã được thiết kếđể hiển thị dữ liệu tìm thấy (khơng cho chỉnh sửa). Cĩ thủ tục xuất dữ liệu ra lưới
6. BC_QUA_TRINH.rpt
Báo biểu đã được thiết kếđể hiển thị thơng tin như hình:
Phần II: Các yêu cầu phải thực hiện
1. Bổ sung cho các lớp xử lý nghiệp vụ: (1 điểm)
Cài đặt để XL_NHAN_VIEN cĩ thơng tin của tên phịng dựa trên MPH, cột hiển thị Nam/Nữ dựa trên Nam 2. Cài đặt cho màn hình MH_TRA_CUU: ( 7 điểm)
Viết hàm Lap_bieu_thuc_loc() As String trả về điều kiện lọc dữ liệu dựa vào các giá trị trên màn hình cĩ nội dung sau: (cộng chung 6.5 điểm)
+ Nếu Họ cĩ chứa khác rỗng, lọc theo điều kiện họ nhân viên cĩ chứa nội dung (Like ) trên điều khiển, ngược lại khơng lọc theo họ nhân viên (0.5 điểm)
+ Nếu Tên cĩ chứa khác rỗng, lọc theo điều kiện tên nhân viên cĩ chứa nội dung trên điều khiển, ngược lại khơng lọc theo tên nhân viên (0.5 điểm)
+ Giới tính lọc theo điều kiện trên màn hình: (Nam), (Nữ) hoặc khơng lọc nếu (Nam Nữ) được chọn. (0.5 điểm)
+ Nếu Thuộc phịng rỗng, khơng lọc theo phịng ban, ngược lại lọc theo phịng được chọn (0.5 điểm) + Lọc theo hệ số lương: (1.25 điểm với điểm chi tiết như mơ tả bên dưới)
− Nếu hệ số lương từ, đến đều rỗng: khơng lọc
− Nếu hệ số lương từ khác rỗng và hệ số lương đến rỗng: lọc theo hệ số lương >= hệ số lương từ
− Nếu hệ số lương từ rỗng và hệ số lương đến khác rỗng: lọc theo hệ số lương <= hệ số lương
đến.
− Ngược lại, lọc ra hệ số lương trong đoạn hệ số lương từđến hệ số lương đến + Lọc theo tuổi (dựa vào ngày sinh): (1.5 điểm với điểm chi tiết như mơ tả bên dưới)
− Nếu tuổi từ, đến đều rỗng: khơng lọc
− Nếu tuổi từ khác rỗng và tuổi đến rỗng: lọc theo tuổi >= tuổi từ − Nếu tuổi từ rỗng và tuổi đến khác rỗng: lọc theo tuổi <= tuổi đến − Ngược lại, lọc ra tuổi trong đoạn tuổi từđến tuổi đến
+ Khơng yêu cầu kiểm tra giá trị hệ số lượng, tuổi đến lớn hơn giá trị hệ số lương, tuổi từ. + Kết hợp các điều kiện lọc lại thành chuỗi lọc và trả về giả trị chuỗi lọc (0.5 điểm) Nhấn nút lệnh Tra cứu, thực hiện các yêu cầu sau: (chung 0.75 điểm)
+ Lập dữ liệu nhân viên theo yêu cầu tra cứu trên màn hình (nội dung của hàm Lap_bieu_thuc_loc) + Xuất dữ liệu ra lưới Kết quả tìm kiếm
Bổ sung các đối tượng thích hợp để khi nhấn nút lệnh Xuất In, xuất báo biểu BC_QUA_TRINH.rpt lọc theo nhân viên hiện hành trên lưới Kết quả tìm kiếm (1 điểm)
3. Xử lý trên báo biểu: (2 điểm)
Bổ sung tên phịng vào tiêu đề hồ sơ nhân viên như hình bằng chữ HOA (0.5 điểm) Hiển thị họ tên trong cùng một field như hình (0.5 điểm)
Đánh số thứ tự các lần thuyên chuyển như hình (0.5 điểm)
ĐỀ THI MẪU KIỂM TRA CHUYÊN MƠN GIÁO VIÊN
Đề thi kiểm tra chuyên mơn giáo viên:
LẬP TRÌNH QUẢN LÝ (VB.NET)
Thời gian: 150 phút
Phần lý thuyết (30 phút)
Câu 1. Biến khai báo trong VB.NET thuộc loại nào dưới đây: a) Value Type, Pointer Type
b) Value Type, Reference Type c) Pointer Type, Reference Type
d) Pointer Type, Reference Type, Value Type
Câu 2. Giả sử khai báo biến d cĩ kiểu ngày:
Dim d As Date d = Now
Hãy cho biết câu lệnh nào sau đây sẽ in ra ngày hiện hành theo dạng ngày tháng năm: a) Msgbox (d.Date)
b) MsgBox (d.ToString(“dd/mm/yyyy”)) c) MsgBox (d.ToString(“dd/MM/yyyy”)) d) MsgBox (d.ToShortDateString())
Câu 3. Chọn lý do khai báo thủ tục sau đây bị lỗi:
Private Sub TEST(ByVal a As Integer, ByVal b As Integer, Optional ByVal c As Boolean ) ' các lệnh
End Sub
a) Lỗi vì thiếu kiểu dữ liệu của thủ tục b) Lỗi vì từ khĩa ByVal của các tham số
c) Lỗi vì tham số Optional khơng cĩ giá trị mặc định d) Lỗi vì thừa từ ByVal trong Optional ByVal.
Câu 4. Tính chất nào sau đây khơng thuộc các tính chất của Lập trình hướng đối tượng: a) Tính Cụ thể (Concret)
b) Tính Đa hình (Polymorphism)
c) Tính Bảo bọc (Encapsulation) d) Tính Kế thừa (Inheritance)
Câu 5. Cĩ các dịng lệnh sau:
Public … Property <Ten thuoc tinh> Get
' Trả về giá trị End Get
End Property
Chọn từ khĩa thích hợp để điền vào phần … của thuộc tính: a) MustOverride
b) ReadOnly
c) WriteOnly d) ReadWrite
Câu 6. Từ khĩa Shared trong khai báo các thành phần cho biết thành phần đĩ: a) Được sử dụng chung giữa các đối tượng thuộc lớp đĩ
b) Cĩ thể sử dụng thành phần Shared thơng qua tên lớp
c) Cĩ thể sử dụng thành phần Shared thơng qua một biến thuộc lớp đĩ, ngay cả khi chưa cấp phát vùng nhớ cho biến.
d) Từ khĩa Shared hàm ý tất cả các câu trên.
Câu 7. Các thành phần được khai báo với từ khĩa Protected cho phép truy xuất: a) Chỉ trong chính lớp nơi thành phần đĩ được khai báo