Laporan merupakan output dari sebuah sistem yang kita buat, maka oleh itu laporan sangat penting dari setiap sistem yang dibuat.
Berikut langkah-langkah singkat untuk membuat sebuat laporan dengan menggunakan Crystal Report for Visual Studio (Crystal Report yang sudah build in didalam Visual Studio diatas versi Express), sebenarnya Anda juga dapat menggunkan Crystal Report dengan aplikasi terpisah.
Pertama-tama, Anda harus membuat DataSet dengan menggunakan file .XSD, yang digunakan untuk menarik/ menempatkan field2 kedalam report designer nantinya:
... (next update)
Langkah-langkah berikutnya akan saya update nantinya beserta gambarnya...
Berikut Code untuk memunculkan Report:
- Buatlah sebuah Class sebagai DataAccess ke Database (misalnya: Class Sale)
Imports System.Data
Imports System.Data.SqlClient
Public Class Sales
'Get Sales Invoice value and return in DATASET
Public Function GenerateInvoice( _
ByVal SalesOrderID As Integer, _
ByVal PrintedBy As String) As DataSet
Dim ds As New DataSet
Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
Using sqlDA As New SqlDataAdapter("Sales.spGenerateInvoice", sqlConn)
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
With sqlDA.SelectCommand.Parameters
.AddWithValue("@SalesOrderID", SalesOrderID)
.AddWithValue("@PrintedBy", PrintedBy)
End With
sqlDA.Fill(ds)
End Using
End Using
Return ds
End Function
'Get Sales Invoice value without return the value but
'passing the control ByRef on parameter to fill directly
Public Sub GenerateInvoice(ByRef dtReport As DataTable, _
ByVal SalesOrderID As Integer, _
ByVal PrintedBy As String)
Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
Using sqlDA As New SqlDataAdapter("Sales.spGenerateInvoice", sqlConn)
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
With sqlDA.SelectCommand.Parameters
.AddWithValue("@SalesOrderID", SalesOrderID)
.AddWithValue("@PrintedBy", PrintedBy)
End With
sqlDA.Fill(dtReport)
End Using
End Using
End Sub
End Class
- Berikut Code dari Form yang digunakan untuk memanggil Crystal Report
Public Class Form1
Private dsR As New DataSet
Private objDSReport As New dsReport
Private objSale As New Sales
Private Sub btnDirectPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDirectPrint.Click
'----------- CARA 1 -------------
'Dim ds As New DataSet
'ds = objSale.GenerateInvoice(txtSalesOrderID.Text, "Budiyanto")
'For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
' objDSReport.Tables("dtSalesInvoice").Rows.Add()
' With objDSReport.Tables("dtSalesInvoice").Rows(i)
' .Item(0) = ds.Tables(0).Rows(i).Item(0)
' .Item(1) = ds.Tables(0).Rows(i).Item(1)
' .Item(2) = ds.Tables(0).Rows(i).Item(2)
' .Item(3) = ds.Tables(0).Rows(i).Item(3)
' .Item(4) = ds.Tables(0).Rows(i).Item(4)
' .Item(5) = ds.Tables(0).Rows(i).Item(5)
' .Item(6) = ds.Tables(0).Rows(i).Item(6)
' .Item(7) = ds.Tables(0).Rows(i).Item(7)
' .Item(8) = ds.Tables(0).Rows(i).Item(8)
' .Item(9) = ds.Tables(0).Rows(i).Item(9)
' .Item(10) = ds.Tables(0).Rows(i).Item(10)
' End With
'Next
'Dim rSalesInvoice As New rptSalesInvoice
'rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
'rSalesInvoice.PrintToPrinter(1, False, 1, 999)
'------------ CARA 2 --------------
objSale.GenerateInvoice(objDSReport.Tables("dtSalesInvoice"), _
txtSalesOrderID.Text, "Budiyanto")
Dim rSalesInvoice As New rptSalesInvoice
rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
rSalesInvoice.PrintToPrinter(1, True, 1, 999)
End Sub
Private Sub btnPreview_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnPreview.Click
objSale.GenerateInvoice(objDSReport.Tables("dtSalesInvoice"), _
txtSalesOrderID.Text, "Budiyanto")
Dim rSalesInvoice As New rptSalesInvoice
rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
crvSalesInvoice.ReportSource = rSalesInvoice
crvSalesInvoice.Refresh()
End Sub
End Class
Silahkan dicoba, jika ada yang ingin membuat tutorial step by step, bisa email kesaya dalam bentuk document MS. Word, nanti saya postkan....
(dari mahasiswa untuk mahasiswa)