วันอาทิตย์ที่ ๑๖ สิงหาคม พ.ศ. ๒๕๕๒

VB.NET สร้างรายงานด้วย .rdlc (Client Report Definition File)

ช่วงนี้ดึกๆหามรุ่งหามค่ำนั่งโม่โปรแกรมอยู่ (เล่นปังยา 2 ชั่วโมง เขียนโปรแกรม ครึ่งชั่วโมง) พอจะสร้างรายงาน ปรากฏว่าตัว Visual Studio 2008 ที่ลงไว้ไม่มี Crystal Report มาด้วย (กรรม หาแผ่นก็ไม่เจอ) ก่อนหน้านี้เคยใช้ Print Document รู้สึกว่ามันถึกมาก (เหมือนใช้ VSPrint ใน VB6 เลย) มานั่งทบทวนจำได้ว่าเคยอ่านบทความเรื่อง rdlc กับ Report Viewer ผ่านตา เลยไปลองใช้บริการอากู๋ดูครับ

ได้ข้อมูลมาเยอะมาก อ่านผ่านๆไม่ค่อยรู้เรื่อง ก็ลงมือลองเขียนเลยครับ ปรากฏว่าไม่ยากเท่าไหร่ ติดที่ว่าไม่ถนัดครับ แต่ก็พอถูๆไถๆไปได้ ลองเขียน Daily Report ใช้เวลาคลำประมาณครึ่งชั่วโมงก็เสร็จครับ ไว้ถ้ามีเวลาจะศึกษาเพิ่ม แล้วจะมาลงวิธีการสร้างรายงานอีกที

พอสร้างรายงานเสร็จก็เขียนโค้ดสำหรับ Preview Report ครับ ก็ใช้ ReportViewer Control นั่นแหละ ก่อนอื่นสร้าง form สำหรับ query ข้อมูลก่อน แล้วพอ user กด print ก็ไปเปิด form ที่มี ReportViewer ขึ้นมาแสดง


Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click

Dim reports As List(Of Entity.ReportDailySummary) = ReportManager.GetDailySummaryReport(Me.dtpWorkingDate.Value)

If reports Is Nothing OrElse reports.Count = 0 Then
MsgBox("ไม่พบข้อมูล", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, My.Application.Info.Description)
Else
Dim ds As New Microsoft.Reporting.WinForms.ReportDataSource("ReportDailySummary", reports)
Dim params As New List(Of Microsoft.Reporting.WinForms.ReportParameter)
params.Add(New Microsoft.Reporting.WinForms.ReportParameter("WorkingDate", Me.dtpWorkingDate.Value.ToString("dd MMMM yyyy")))
frmPreview.ReportViewer1.LocalReport.ReportPath = "rptDailySummary.rdlc"
frmPreview.ReportViewer1.LocalReport.DataSources.Add(ds)
frmPreview.ReportViewer1.LocalReport.SetParameters(params)
frmPreview.ReportViewer1.RefreshReport()
frmPreview.Text = "รายงานสรุปยอดขายประจำวัน"
frmPreview.ShowDialog()
End If

End Sub


เนื่องจากขี้เกียจ และต้องรีบไปออกรอบ ดังนั้นลงแค่ code พอ เผื่อว่าวันหลังลืมวิธี Preview Report จะได้มาค้นดูได้

ปล. วันนี้ตอนอยู่ที่ทำงานจะเขียนคำสั่งสำหรับ sort list ว่าจะใช้ Lamda Expression แต่นึกไม่ออก ลองเขียนแล้วก็รันไม่ผ่าน ยังดีที่ได้เอาโค้ดมาลง blog ไว้ เลยมาเปิดหาดู สะดวกดีครับ ดีกว่าไปเปิดโปรเจคเก่าๆมาหามากมายก่ายกอง

1 ความคิดเห็น:

Unknown กล่าวว่า...

ขอถามได้มั้ยค่ะ
ทำไมเชื่อมฐานข้อมูลกับ report แล้วรัน error