- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
Subreport DevExpress - In nhiều báo cáo với khuôn mẫu định sẵn với VB.Net
Hôm ny mình xin giới thiệu với mọi người một dạng report không mới nhưng khá là lạ, đó chính là Subreport. Với Subreport, chúng ta có thể tùy biến để có thể in nhiều biểu mẫu báo cáo với cùng một khuôn mẫu nhưng nội dung thì hoàn toàn khác nhau.
VD như bạn có một danh sách các khách mời của đám cưới và 1 mẫu thiệp hồng chói lọi, và thay vì chọn từng cái tên để in thiệp thì bạn chỉ cần nhấn 1 nút 1, việc còn lại là nhấn nút Print và bạn có thể đi ngủ. :D Mơ về thiệp hồng đi hý.
Ở đây mình sẽ làm ví dụ về phiếu QR Code, cách tạo phiếu QR Code như thế nào thì các bạn vui lòng xem lại link bên dưới
https://laptrinhvb.net/bai-viet/lap-trinh-di-dong-android/--JAVASCRIPT---Huong-dan-tao-va-doc-ma-QR-code-/71663a96a79aca4c.html
Bắt đầu thôi, trước hết ta cần một cái đatabase kiểu như thế này:
Sau đó bạn cần tạo 1 cái form để chứa thông tin danh sách này. Thật ra report này không bắt buộc phải show ra trên gridview, ở đây mình làm cho hoàn chỉnh để dễ hình dung thôi :D
'Hàm load dữ liệu vào grid
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ds = _load_data("select top 10 * from tbl_nhanvien where manv<>0")
dgv_nhanvien.DataSource = ds.Tables(0)
lbl_manv.DataBindings.Clear()
lbl_manv.DataBindings.Add("Text", ds.Tables(0), "manv")
End Sub
'Hàm thực thi khi click nút in
Private Sub btn_rpt_sub_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btn_rpt_sub.ItemClick
dsreport = _load_data("select top 10 * from tbl_nhanvien where manv<>0")
int_report = 2 'chạy cái subreport
Dim f As New frm_show_report
f.Show()
End Sub
'Hàm khi click phải chuột vào đầu dòng
Private Sub InQRCodeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InQRCodeToolStripMenuItem.Click
int_report = 1 'chạy report đơn
strMaNV = lbl_manv.Text
Dim f As New frm_show_report
f.Show()
End Sub
Sau đó cần một cái form có DocumentViewer để chứa nội dung report.
'Hàm khi load form
Private Sub frm_show_report_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If int_report = 1 Then
'chạy report đơn
Dim rpt As New rpt_QR_nhanvien
DocumentViewer1.PrintingSystem = rpt.PrintingSystem
rpt.BindData()
rpt.CreateDocument()
ElseIf int_report = 2 Then
'chạy Subreport
Dim rpt As New Sub_report
DocumentViewer1.PrintingSystem = rpt.PrintingSystem
rpt.DataSource = dsreport
rpt.BindData()
rpt.CreateDocument()
End If
End Sub
Và cuối cùng là Report vs SubReport để chứa cái Report đó:
'Hàm để bind source cho report
Public Sub BindData()
Dim dt As New DataTable
dt = _load_data("select * from tbl_nhanvien where manv='" & strMaNV & "'").Tables(0)
lbl_thongtin.Text = "Họ tên: " & dt.Rows(0).Item("tennv").ToString & vbCrLf & "Mã NV:" & dt.Rows(0).Item("manv").ToString & vbCrLf & "Ngày sinh: " & CDate(dt.Rows(0).Item("ngaysinh").ToString).Date & vbCrLf & "Địa chỉ: " & dt.Rows(0).Item("diachi1").ToString
barCode1.Text = strMaNV
End Sub
SubReport
Cái này các bạn tạo report như bình thường rồi kéo cái tool XrSubreport vào và để kích thước cho phù hợp với cái report kia, sau đó nhấn F7 và chép đoạn code này vào.
Mấy cái lblXXX chính là label mình dùng để chứa mã nguồn khi chạy.
'ham nay de luu lai manv khi sub chay - rất quan trọng chính là đây
Public Sub BindData()
lbl_manv.DataBindings.Add("Text", DataSource, "manv")
End Sub
'hàm này chính là hàm gọi report đơn
Private Sub XrSubreport1_BeforePrint(sender As Object, e As Printing.PrintEventArgs) Handles XrSubreport1.BeforePrint
strMaNV = lbl_manv.Text
Dim rpt As New rpt_QR_nhanvien
rpt.BindData()
XrSubreport1.ReportSource = rpt
End Sub
Chúc các bạn thành công !
Like - Share hoặc để lại Coment để ủng hộ nhóm viết bài nhá ;)