Form cho phép người sử dụng chọn tên một nhân viên bán hàng trong cboten và hiển thị thông tin chi tiết về những hóa đơn bán hàng của nhân viên đó. Khi nhấn nút Report ta sẽ xuất dữ liệu trên form sang một report được thể hiện như hình sau:
Phần hiển thị và lọc dữ liệu được thực hiện thông qua đối tượng dataAdapter và đối tượng DataSet như đã hướng dẫn trong các ví dụ trước. Bạn có thể tham khảo phần code dưới đây với da là tên của DataAdapter và dst là tên của DataSet. Form có tên ngầm định là form1
'khai báo biến tầm vực đơn thể - biến chung của class
Dim lenh1 As String = "select banhang.sohd, banhang.ngayban," & _ "banhang.nguoiban, banhang.masp,sanpham.tensp,sanpham.dongia," & _ "banhang.soluong, banhang.thanhtien from banhang,sanpham " & _
" where banhang.masp=sanpham.masp" Dim lenh2 As String
Dim da As New SqlClient.SqlDataAdapter(lenh1, Chuoi_ket_noi)
Dim dst As New DataSet
' Thủ tục Load của form Private Sub Form1_Load...
dst.Clear()
da.Fill(dst, "bangthongke") dg.DataSource = dst dg.DataMember = "bangthongke"
Tao_ket_noi()
If Ket_noi.State = ConnectionState.Closed Then Ket_noi.Open()
Dim comm1 As New SqlClient.SqlCommand _
("select distinct nguoiban from banhang", Ket_noi) Dim reader1 As SqlClient.SqlDataReader = _ comm1.ExecuteReader(CommandBehavior.CloseConnection)
While reader1.Read cboten.Items.Add(reader1.Item(0))
End While reader1.Close()
End Sub
'Thủ tục chọn một mục trong cbo_ten Private Sub cboten_SelectedIndexChanged ...
lenh2 = " and banhang.nguoiban='" & cboten.Text & "'" da.SelectCommand.CommandText = lenh1 & lenh2 dst.Clear()
da.Fill(dst, "bangthongke")
End Sub
Vấn đề chỉ còn lại cách xây dựng báo biểu thống kê chi tiết các lần bán hàng theo tên nhân viên và viết code cho nút Report. Hãy thực hiện theo các bước sau:
- Bước 1: Trong SQL Server tạo thủ tục nhận tên người bán làm tham số và trả về thông tin bán hàng của nhân viên đó. Thủ tục có tên thongkeBHtheoNV và được tạo như sau:
Create proc ThongkeBHtheoNV(@tennb nvarchar(50)) as
begin
select banhang.sohd, banhang.ngayban,banhang.nguoiban, banhang.masp,sanpham.tensp,sanpham.dongia, banhang.soluong,banhang.thanhtien
from sanpham,banhang
where banhang.masp=sanpham.masp and
banhang.nguoiban=@tennb end
Biên dịch thủ tục trên (nhấn F5)
- Bước 2:
+ Tạo Crystal Report (nhấn phải chuột vào tên project trong cửa sổ Solution Explorer, chọn Add, chọn Crystal Report).
+ Đặt tên report là rptTK_TheoNV. Cửa sổ Crystal Reports Gallery xuất hiện như hình dưới đây. Chọn kiểu Standard và nhấn OK.
- Bước 3: Nháy đúp vào mục Create New Connection; chọn OLEDB, chọn Microsoft OLEDB Provider for SQL Server, chọn Next
+ Chọn tên Server và tên Database. Nhấn Next sang màn hình tiếp theo.
+ Tìm tên thủ tục ThongkeBHtheoNV trong danh mục các thủ tục nội tại của cơ sở dữ liệu. Add sang bảng Selected Table. Nhấn Next để tiếp tục.
+ Add toàn bộ các trường của thủ tục ThongkeBHtheoNV sang cửa sổ bên phải.
Nhấn Finish để hoàn tất bước 3. Report rptTK_theoNV đã xuất hiện trên project.
- Bước 4: Định dạng lại report như hình dưới đây. Section1 là phần tiêu đề của báo biểu; Section 2 là tiêu đề các cột của bảng (lặp lại khi hết một trang); Section3 là phần dữ liệu tương ứng với một bản ghi.
+ Dùng Text Object để đặt các label lên báo biểu; Line Object để vẽ các đường thẳng; dùng cửa sổ Field Explorer để chèn các trường vào báo biểu.
+ Để định dạng nội dung, font chữ, kiểu dữ liệu của tiêu đề cột và dữ liệu trong cột, nhấn phải chuột vào đối tượng và chọn các lệnh cần thiết.
Thủ thuật: Để gióng hàng (hoặc đặt cùng kích cỡ) cho nhiều đối tượng, bạn chọn chúng và nhấn phải chuột chọn Align hoặc Size.
+ Để xem trước báo biểu, chọn nút Main Report Preview.
- Bước 5: Tạo form làm lớp cơ sở cho báo biểu:
+ Tạo form mới, đặt tên form là frmTK_theoNV.
+ Đưa vào form một điều khiển CrystalReportViewer. Điều khiển có tên ngầm định là CrystalReportViewer1
- Bước 6: Viết code cho nút Report và chạy thử chương trình
Dim myreport As New rptTK_TheoNV myreport.SetDataSource(dst.Tables("bangthongke")) Dim f As New frmTK_TheoNV f.CrystalReportViewer1.ReportSource = myreport f.ShowDialog()
NỘI DUNG PHẦN THẢO LUẬN
1. Các phương pháp xây dựng form hiển thị dữ liệu
2. Mô hình thiết kế form lọc dữ liệu
3. Các phương pháp xây dựng form cập nhật dữ liệu
4. Tính toán trên cơ sở dữ liệu
5. Xử lý các ràng buộc trên cơ sở dữ liệu
6. Xử lý trùng khóa trên cơ sở dữ liệu.
TÓM TẮT NỘI DUNG CỐT LÕI
Trong chương này sinh viên cần chú ý đến các nội dung sau:
• Tạo module kết nối cơ sở dữ liệu
• Hiển thị dữ liệu bằng Data Reader
• Hiển thị dữ liệu bằng DataAdapter kết hợp với DataSet, DataTable
• Tính toán, cập nhật dữ liệu bằng đối tượng Command
• Tính toán, cập nhật dữ liệu bằng đối tượng DataSet, DataTable
• Cập nhật dữ liệu bằng Binding Navigator
• Tạo và sử dụng báo biểu.
BÀI TẬP THỰC HÀNH
1. Tạo cơ sở dữ liệu SQL có tên De1 với cấu trúc các bảng và dữ liệu như sau:
SanPham (MaSPint, TenSP nvarchar(50), NhaCC nvarchar(30), DonGia decimal)
BanHang (SoHDint, NgayBan datetime, MaSP int ràng buộc khóa ngoại tham chiếu đến MaSP trong bảng SanPham, NguoiBan nvarchar(50), SoLuong int, ThanhTien decimal)
SanPham
TenSP (tên sản phẩm) | NhaCC (nhà cung cấp) | DonGia (đơn giá) | |
1 | LCD Toshiba 32 inch | Toshiba | 6690000 |
2 | LCD Toshiba 40 inch | Toshiba | 10900000 |
3 | LCD LG 32 inch | LG | 5290000 |
4 | LCD Sony 40 inch | Sony | 14900000 |
5 | LED Samsung 22 inch | Samsung | 5790000 |
Có thể bạn quan tâm!
- Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 20
- Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 21
- Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 22
- Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 24
Xem toàn bộ 201 trang tài liệu này.
BanHang
NgayBan (ngày bán) | MaSP (mã sản phẩm) | Ngươiban (người bán) | SoLuong (số lượng) | ThanhTien (thành tiền) | |
1 | '2/1/2011' | 1 | An | 2 | |
2 | '2/1/2011' | 2 | Bình | 3 | |
3 | '2/1/2011' | 3 | Vân | 2 | |
4 | '2/3/2011' | 4 | Bình | 3 | |
5 | '3/1/2011' | 5 | An | 1 | |
6 | '3/1/2011' | 1 | An | 1 | |
7 | '3/2/2011' | 1 | Vân | 2 | |
8 | '4/1/2011' | 2 | Vân | 2 | |
9 | '4/1/2011' | 3 | An | 2 | |
10 | '4/1/2011' | 3 | An | 1 | |
11 | '4/1/2011' | 4 | Bình | 5 | |
12 | '4/1/2011' | 4 | Vân | 3 |
2. Tạo project mới. Trên đó tạo module và viết thủ tục Tao_Ket_noi với cơ sở dữ liệu De1 (xem mẫu trong ví dụ 5.2b).
3. Tạo form mới theo mẫu dưới đây. Form cho phép nhập tên một nhân viên bán hàng và thống kê số lần bán hàng, tổng số tiền bán hàng. (xem mẫu trong ví dụ 5.3, 5.4)