Hướng dẫn tạo coman trong crystal report trong vb.net

Tiếp theo để tạo Datatablen thì nhấp phải vào vùng trống chọn add->Datatable hoặc mở toolbox của vs ra và lôi Datatable vào vùng trống.

Đặt tên Datatable lai bằng cách nhấp vào phía trên đầu Datatable và đổi tên

Nhấp phải vào Datatable chọn add ->collunm:

Tạo đầy đủ như thế này:

Trong csdl thì có Flag trong này tạo report thì bỏ

Tạo xong thi lưu lại

Như vây đã tạo xong phần chứa csdl, lưu ý nó là cái thùng rỗng chẳng có j trong cả

  1. Tạo và trang trí report

Tạo Report nhấp phải vào project chon add-> new item- >reporting:

Đặt tên rptBILL.rdlc

Sau khi xong ta được như thế này:

Không thây cửa sổ Report Data bên tay trái thì ban vào:view->report data

Tiếp tục để thấy phần Header và footer thì nhấp vào phần trống trên của số report rồi vào Report ->Add Page Header,Add Page Footer [nhớ nhấp vào phần trống trên report thì nó mới hiện Report trên menu]

Ta được như sau:

Tiếp tục ta thiết kế cho report:

Mở Toolbox và lôi Texbox vào phần Header và Footer và gõ như sau:

Tiếp theo lôi Table vào phần thân của report nó sẽ hiện ra như thế này :

Chọn vào Data source chọn dataset ta đã tạo hồi này, ở dưới Available dataset sẽ tự động chọn Datatable ta đã tạo trong Dataset ->ok

Kết quả như thế này:

Mở Report Data được như thế này:

Bây giờ lôi các thuộc tình bên dataset1 thả vào datatable:

Cứ thế ta lôi vào cho hết các thuôc tình:

Vào Toolbox lôi reportviewer vào form:

Nhấp chuột vào mũi tên màu đen ở bên trên góc phải chọn:rptBILL.rdlc

  1. Code

Đặt luôn trong sự kiên form load:

dt_printbill.Clear[]

dt_printbill = _bus_rp.Print_bill_rpb[cgb.BillID]

rvBill.Reset[]

rvBill.LocalReport.ReportEmbeddedResource = “Report.prtBill.rdlc”

rvBill.LocalReport.DataSources.Clear[]

Dim newDataSource As Microsoft.Reporting.WinForms.ReportDataSource = New Microsoft.Reporting.WinForms.ReportDataSource[“DataSet1”, dt_printbill]

rvBill.LocalReport.DataSources.Add[newDataSource]

rvBill.RefreshReport[]

  • dt_printbill = _bus_rp.Print_bill_rpb[cgb.BillID]:

-dt_printbill :là một Datatable khai báo đặt biến toàn cục

-_bus_rp:là 1 class trug gian truy vấn dữ liệu

-_bill_rpb[cgb.BillID]:hàm trung gian truy vấn dữ liêu của bus_rp

  • tạo class: bus_rp

Function Print_bill_rpb[ByVal billid As String] As DataTable

Dim dt As DataTable

dt = daorp.Print_bill_rpa[billid]

Return dt

End Function

  • daorp.Print_bill_rpa[billid]

-daorp:là 1 class khác truy vấn trực tiếp dữ liệu:

Function Print_bill_rpa[ByVal billid As String] As DataTable

Dim dt As DataTable

Dim s As String = “SELECT BillID,BillNo,BillType,BillDate,BillShiftID,BillTime,TableID,GuestName,WaiterID,CashierID,NetAmount,SerAmount,TaxAmount,TotalAmount FROM Bill WHERE BillID=” + billid

dt = xldl.ReadData[s]

Return dt

End Function

  • lớp xử lý dữ liệu: xldl.ReadData[s]

Imports System

Imports System.Data

Imports System.Data.SqlClient

Public Class CXuLiDuLieu

”chuoi ket noi tu sqlserver

Dim strCnn As String = “Data Source=ASUS-PC\SQLEXPRESS;Initial Catalog=POS;Integrated Security=True”

”chuoi ket noi tu file co san

”Dim chuoiketnoi As String = “Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\ASUS\Desktop\Dethi\Dethi\POS_Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True”

Nhấn phải chuột vào biến “ngay” vừa tạo chọn Insert to Report và kéo nó vào vị trí sau chữ ngày. Làm tương tự với các biến “thang” và “nam”.

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 TatCaHoaDonBanHang viết trong SQL SERVER

USE [QLYBH] GO

/****** Object: StoredProcedure [dbo].[TatCaHoaDonBanHang] Script Date: 12/07/2014 18:43:38 ******/

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

--

\=============================================

-- Author:

-- Create date:

-- Description:

--

\=============================================

CREATE PROCEDURE [dbo].[TatCaHoaDonBanHang]

-- Add the parameters for the stored procedure here

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

RETURN END

Vì yêu cầu của báo cáo phải phân nhóm theo người bán hàng nên phải thêm vào báo cáo một Group bằng cách: Nhấn phải chuột vào phần Details của báo cáo chọn Insert / Group. Xuất hiện cửa sổ Insert Group.

Hình 116. Cửa sổ Insert Group

Trong tab Common, chọn trường NguoiBanHang từ danh sách các trường có trong báo cáo. Nhấn OK để thêm Group vào báo cáo.

Nhấn phải chuột vào phần Group Header Section1 chọn Insert / Special Field / Group Number và kéo vào phía trước của phần Group Name để thêm số thứ tự của nhóm cho báo cáo.

Để hiển thị chi tiết các đơn hàng mà mỗi người bán hàng đã bán thực hiện như

sau:

Tăng chiều cao cho phần Group Header Section1 bằng cách đưa chuột tới phần

giao giữa Group Header Section1 và Details và kéo lùi xuống phía dưới.

Từ cửa sổ Field Explorer lần lượt kéo các trường HoTen, TenMatHang, DVT, SoLuong, DonGia, ThanhTien vào phần Details của báo cáo. Điều chỉnh kích thước, vị trí của các trường cho phù hợp với việc thể hiện của báo cáo.

Mặc định khi kéo các trường từ cửa sổ Field Explorer vào phần Details của báo cáo thì Crystal Report sẽ thêm vào phần Page Header các tiêu đề của các trường này để mỗi khi chuyển sang trang mới nó sẽ xuất hiện ở đầu mỗi trang. Trong yêu cầu của báo cáo này thì khi hiển thị phía dưới tên mỗi người bán hàng sẽ là tên các trường cần

hiển thị và dữ liệu bán hàng sẽ lặp lại nhiều lần ở phía dưới. Do đó, cần phải kéo các tiêu đề này từ phần Page Header xuống phần Group Header Section1 và đặt chúng bên dưới của Group Name.

Nhấp đúp vào các tiêu đề này để sửa lại nội dung thành Khách hàng, Mặt hàng, ĐVT, Số lượng, Đơn giá, Thành tiền. Thiết lập định dạng và căn chỉnh các tiêu đề này phù hợp với yêu cầu của báo cáo.

Thêm số thứ tự vào phần danh sách các hóa đơn bán hàng của mỗi người bán

hàng:

Mặc định trong Crystal Report có trường Record Number để hiển thị thứ tự của

các bản ghi trong báo cáo. Tuy nhiên, trường này được thiết kế để tăng tự động nên khi sang Group mới thì nó không tự reset về 1. Vì vậy, để chèn cột số thứ tự vào đầu mỗi dòng trong danh sách các hóa đơn bán hàng của từng người bán phải thực hiện như sau:

Nháy phải chuột vào Running Total Field ở cửa sổ Field Explorer / chọn New.

Xuất hiện cửa sổ Create Running Total Field.

Hình 117. Cửa sổ Create Running Total Field

Chọn trường HoTen ở phần khung Available Tables and Fields, nhấn vào nút mũi tên quay sang phải để cung cấp thông số cho việc tính toán của biến này. Nhập stt_hoadon vào ô Running Total Name để đặt tên cho biến. Chọn hàm count ở mục

Type of summary. Chọn On change of group ở phần Reset. Nhấn OK để hoàn thành việc tạo biến đếm.

Bảng 7. Các hàm để tính toán với nhóm của Crystal Report

Hàm

Ý nghĩa

Sum

Tính tổng tất cả các mặt hàng.

Average

Tính trung bình trọng số tiêu chuẩn cho tất cả các mặt hàng.

Maximum

Trả về giá trị lớn nhất.

Minimum

Trả về giá trị nhỏ nhất.

Count

Đếm tất cả các mặt hàng.

Sample Variance

Tính phương sai mẫu thống kê của một ví sam cụ thể của các mặt hàng.

Sample Standard Deviation

Tính độ lệch tiêu chuẩn thống kê của một mẫu cụ thể của các mặt hàng.

Population Variance

Tính phương sai thống kê của toàn bộ dân số các mặt hàng.

Population Standard Deviation

Tính độ lệch tiêu chuẩn thống kê của toàn bộ dân số của các mặt hàng.

Distinct Count

Tính số mặt hàng riêng biệt. Ví dụ, nếu hai trường hợp khác nhau của "David" xuất hiện trong danh sách, họ sẽ chỉ được tính một lần.

Correlation

Tính số đo của mối quan hệ giữa hai hoặc nhiều mục

Covariance

Tính một biện pháp của phương sai giữa hai hoặc nhiều mục.

Weighted Average

Tính trung bình, trọng bởi số lần một item xuất hiện.

Median

Tính trung bình thống kê của tất cả các mặt hàng.

Nth Percentile

Tính percentile thứ N, trong đó N được xác định trước số.

Nth Largest

Trả về Nth mục lớn nhất, trong đó N được xác định

Có thể bạn quan tâm!

Xem toàn bộ 318 trang tài liệu này.

trước số.

Nth Smallest

Trả về các mục nhỏ nhất thứ N, trong đó N được xác định trước số.

Mode

Tính chế độ thống kê của tất cả các mặt hàng.

Nth Most Frequent

Trả về Nth mục thường xuyên nhất, trong đó N là một số prede phạt.

Nhấn phải chuột vào biến stt_hoadon ở phần Running Total Field chọn Insert to Report và kéo vào phía trước của trường HoTen trong phần Details.

Để tạo biến chứa tổng tiền của mỗi người bán hàng thực hiện như sau: Nháy phải chuột vào Running Total Field ở cửa sổ Field Explorer / chọn New. Xuất hiện cửa sổ Create Running Total Field.

Hình 118. Cửa sổ Create Running Total Field

Chọn trường ThanhTien ở phần khung Available Tables and Fields, nhấn vào nút mũi tên quay sang phải để cung cấp thông số cho việc tính toán của biến này. Nhập tongtientheonhom vào ô Running Total Name để đặt tên cho biến. Chọn hàm sum ở mục Type of summary. Chọn On change of group ở phần Reset. Nhấn OK để hoàn thành việc tạo biến đếm.

Nhấn phải chuột vào biến tongtientheonhom ở phần Running Total Field chọn Insert to Report và kéo vào GroupFooterSection1 sau nhãn “Tổng tiền”.

Chuyển sang cửa sổ Main Report Preview để xem thử kết quả của báo cáo. Ta nhận thấy rằng các biến ngay, thang, nam khi hiển thị đều có thêm 2 số 0 đằng sau dấu phẩy. Đây là tùy chọn hiển thị mặc định của các trường có giá trị số. Để bỏ các số 0 này khi hiển thị báo cáo thực hiện như sau:

Nháy phải chuột vào biến ngay ở phần Report Footer, chọn Format Embedded Field. Xuất hiện cửa sổ Format Editor / chọn Customize. Xuất hiện cửa sổ Custom Style.

Hình 119. Cửa sổ Custom Style

Thay đổi ở phần Decimals, Rounding về giá trị 1, bỏ dấu chọn ở mục Thousands Separator. Nhấn OK hai lần để áp dụng.

Chủ Đề