Printer"
'Thiết lập tên máy in cần in (nếu cần) myReport.PrintOptions.PrinterName = "Foxit Reader PDF
'In giấy mời ra máy in chỉ định myReport.PrintToPrinter(1, True, 0, 0) 'Trả trạng thái con trỏ về mặc định Me.Cursor = Cursors.Default
'Tạm khóa nút In ấn ButtonInAn.Enabled = True
Else
If RadioButtonTungKH.Checked Then 'Kiểm tra mã khách hàng có tồn tại không 'Khai báo đối tượng và biến cần sử dụng Dim sqlTimKiem As String
'Thiết lập câu lệnh tìm kiếm theo mã khác hàng sqlTimKiem = "SELECT * FROM tblKhachHang WHERE
[MaKH]=" & TextBoxMaKH.Text
Using cn As New SqlConnection("Data Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User ID=sa;Password=admin123@")
Using cmd As New SqlCommand(sqlTimKiem, cn) cmd.CommandType = CommandType.Text cn.Open()
Dim ds As New DataSet()
Dim da As New SqlDataAdapter(cmd) da.Fill(ds)
'Nếu tồn tại mã khách hàng
If ds.Tables(0).Rows.Count > 0 Then 'Chuyển trạng thái con trỏ Me.Cursor = Cursors.WaitCursor 'Tạm khóa nút In ấn
ButtonInAn.Enabled = False 'In giấy mời ra máy in
'Khai báo một đối tượng Crystal Report Dim myReport As New ReportDocument() 'Tải báo cáo từ đường dẫn chỉ định
myReport.Load(Application.StartupPath.ToString() & "GiayMoiKhachHang.rpt")
'Thiết lập nguồn dữ liêu mới cho giấy mời
myReport.SetDataSource(ds.Tables(0).DefaultView)
'Thiết lập tên máy in cần in (nếu cần) myReport.PrintOptions.PrinterName = "Foxit
Reader PDF Printer"
'In giấy mời ra máy in chỉ định myReport.PrintToPrinter(1, True, 0, 0) 'Trả trạng thái con trỏ về mặc định Me.Cursor = Cursors.Default
'Tạm khóa nút In ấn ButtonInAn.Enabled = True
Else
'Thông báo
MessageBox.Show("Mã khách hàng không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
TextBoxMaKH.Focus()
End If cn.Close()
End Using End Using
End If
End If End Sub
3. Kết quả thiết kế:
Hình 101. Kết quả thiết kế form in giấy mời khách hàng
4. Kết quả thực thi:
Sau khi nhấn vào nút “In ấn” với lựa chọn theo từng khách hàng.
Hình 102. Kết quả sau khi thực hiện chức năng in giấy mời khách hàng.
Công việc 2. Thiết kế hóa đơn bán hàng
a) Thiết kế hóa đơn bán hàng theo mẫu
1. Phân tích công việc:
Theo yêu cầu trên ta nhận thấy:
Phần thể hiện thông tin về khách hàng, số hóa đơn và các tiêu đề chỉ xuất hiện một lần ở đầu báo cáo nên phần này đưa vào phần
Phần thông tin về các mặt hàng đã mua xuất hiện nhiều lần nên phần này sẽ phải thiết kế trong phần Details
2. Thao tác thực hiện:
Thực hiện các thao tác tương tự như trong phần hướng dẫn thao tác ở công việc 1 để tạo mới một báo cáo có tên HoaDonBanHang.rpt
Nhấn phải chuột vào phần Report Header chọn Insert / Text Object và nhập giá trị “CỬA HÀNG THƯƠNG MẠI ABC” cho điều khiển này. Thao tác tương tự để tạo đối tượng Text Object có nội dung “HÓA ĐƠN BÁN HÀNG”. Điều chỉnh vị trí và font chữ của đối tượng Text Object này cho phù hợp.
Nhấn phải chuột vào phần Page Footer chọn Insert / Text Object và nhập nội dung “Trang / ” để tạo phần thống kê số trang cho báo cáo. Sau đó, nhấn phải chuột vào phần Page Footer của báo cáo chọn Insert / Special Field / Page Number và kéo vào trước dấu / để hiển thị giá trị trang hiện tại. Nhấn phải chuột vào phần Page Footer của báo cáo chọn Insert / Special Field / Total Page Count và kéo vào sau dấu / để hiển thị giá trị tổng số trang của báo cáo.
Thực hiện kết nối dữ liệu cho báo cáo.
Tại cửa sổ Field Explorer, nhấn phải chuột vào Database Fields / Chọn Database Expert. Xuất hiện cửa sổ Database Expert, tiến hành kết nối tới nguồn dữ liệu và chọn thủ tục hiển thị dữ liệu cho báo cáo (thủ tục này viết trong phần store procedure của cơ sở dữ liệu SQL Server) giống như phần hướng dẫn ở trên.
Mã lệnh thủ tục HoaDonBanHang viết trong SQL SERVER
USE [QLYBH] GO
/****** Object: StoredProcedure [dbo].[HoaDonBanHang]
Script Date: 12/07/2014 22:35:47 ******/ SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON GO
--
=============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
--
=============================================
CREATE PROCEDURE [dbo].[HoaDonBanHang]
-- Add the parameters for the stored procedure here
@SoHieuHD int
AS BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements. SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT tblBanHang.*, tblKhachHang.HoTen, tblKhachHang.DienThoai, tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT, tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia, tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH
= tblKhachHang.MaKH AND tblBanHang.SoHieuHD =
tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD =
@SoHieuHD RETURN END
Trong phần cuối của hóa đơn bán hàng có hiển thị tổng tiền khách hàng phải trả. Để tính toán và hiển thị được giá trị tổng tiền này thực hiện như sau:
Nhấn phải chuột vào Formula Fields ở cửa sổ Field Explorer chọn New. Xuất hiện cửa sổ Formula Name. Nhập “tongtien” vào ô Name và nhấn OK.
Hình 103. Cửa sổ Formula Name
Xuất hiện cửa sổ Formula Workshop.
Hình 104. Cửa sổ Formula Workshop
Nhập công thức tính tổng tiền vào khung soạn thảo công thức:
Sum ({HoaDonBanHang;1.ThanhTien})
Nhấn “Save and close” để lưu biến hiển thị tổng tiền của hóa đơn.
Tiếp theo, tạo các đối tượng Text Object có nội dung “Khách hàng, Địa chỉ, Điện thoại, Số hóa đơn” ở phần Report Header. Điều chỉnh kích thước, font chữ, mầu chữ và vị trí các đối tượng này cho phù hợp với yêu cầu của báo cáo.
Từ cửa sổ Field Explorer kéo các trường TenMatHang, DVT, SoLuong, DonGia, ThanhTien vào phần Details.
Nháy phải chuột vào phần Details chọn Insert / Special Field / Record Number và kéo vào vị trí trước trường TenMatHang ở phần Details để hiển thị số thứ tự. Trong Crystal Report có nhiều trường đặc biệt, được xây dựng sẵn nhằm hiển thị các thông tin liên quan đến báo cáo được trình bày ở bảng bên dưới.
Bảng 6. Danh sách các trường đặc biệt trong Crystal Report.
Mô tả | |
DataDate | Ngày báo cáo được sửa lần cuối. |
DataTime | Giờ báo cáo được sửa lần cuối. |
FileAuthor | Các tệp tin tác giả được lưu trữ cùng với báo cáo |
FileCreationDate | Ngày tạo báo cáo. |
Filename | Tên báo cáo |
GroupNumber | Số thứ tự của nhóm trong báo cáo |
GroupSelection | Công thức lựa chọn nhóm trong báo cáo. |
ModificationDate | Ngày báo cáo được sửa gần nhất. |
ModificationTime | Giờ báo cáo được sửa gần nhất. |
PageNofM | Hiển thị giá trị “Page số thứ tự của trang of tổng số |
Có thể bạn quan tâm!
- Thiết Kế Form Điều Khiển Việc In Ấn Hóa Đơn Bán Hàng Theo Mẫu Sau:
- Thực hành lập trình CSDL với VB.net - 23
- Thực hành lập trình CSDL với VB.net - 24
- Thực hành lập trình CSDL với VB.net - 26
- Thực hành lập trình CSDL với VB.net - 27
- Thực hành lập trình CSDL với VB.net - 28
Xem toàn bộ 318 trang tài liệu này.
trang” | |
PageNumber | Số thứ tự trang hiện tại. |
PrintDate | Ngày in báo cáo. |
PrintTime | Giờ in báo cáo. |
RecordNumber | Số thứ tự bản ghi. |
RecordSelection | Công thức lựa chọn bản ghi. |
ReportComments | Các chú thích được lưu trữ cùng với báo cáo. |
ReportTitle | Tiêu đề của báo cáo. |
TotalPageCount | Tổng số trang của báo cáo. |
Sau khi chèn trường RecordNumber vào báo cáo, tiến hành thay đổi nội dung tiêu đề các trường cần hiển thị cho phù hợp với yêu cầu của báo cáo.
Nháy phải chuột vào biến tongtien ở phần Fomula Field chọn Insert to Report và kéo vào phần Report Footer.
Tạo một đối tượng Text Object tại phần Page Footer. Nhập nội dung cho đối tượng Text Object này là “Trang ”. Nháy phải chuột vào phần Page Footer chọn Insert
/ Special Field / Page Number, kéo vào trong nội dung của đối tượng Text Object vừa tạo.
Nháy phải chuột vào phần Report Header chọn Insert / Box để kẻ khung, Insert
/ Line để tạo phân cách cho các trường và các bản ghi của phần chi tiết hóa đơn.
Chuyển sang cửa sổ Main Report Preview để xem kết quả và hiệu chỉnh nếu
cần.