Apabila kita membuat sebuah aplikasi desktop menggunakan VB, VB.net, atau Java, sering kali kita juga akan membuat sebuah laporan yang perlu untuk dicetak oleh tingkatan manager tertentu. Disini saya akan men-share sedikit tentang bagaimana caranya membuat sebuah halaman yang dapat diprint menggunakan VB.Net.
Langkah-langkah :
1. Desainlah tampilan dari antarmuka pembuat laporan. seperti contoh berikut
Perhatikan : disini kita memerlukan komponen PrintPreviewDialog dan juga PrintDocument yang sudah disediakan pada toolbox project secara otomatis. PrintPreviewDialog digunakan untuk membuat dialog print preview, seperti jika kita akan mencetak dokumen di Ms.Word. Sedangkan PrintDocument adalah komponen yang berisi string-string / isi dokumen yang akan dicetak.
2. Tambahkan script berikut pada form laporan anda
Private Sub btn_Print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Print.Click
Try
With Me.PrevDlg
.Document = Me.PrintDoc
.ShowDialog()
End With
Catch ex As Exception
MessageBox.Show(ex.Message, "preview Eror")
End Try
End Sub
Private Sub PrintDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim MarginKiri As Single = e.MarginBounds.Left
Dim MarginAtas As Single = e.MarginBounds.Top
Dim line As String = Nothing
Dim myfont As New Font("arial", 15, FontStyle.Regular)
'menentukan banyak baris per halaman
linesPerPage = _
e.MarginBounds.Height / myfont.GetHeight(e.Graphics)
Dim sr As StringReader = New StringReader(Me.RichTextBox1.Text)
'melakukan iterasi dan cetak tiap baris
line = sr.ReadLine
While count < linesPerPage
'kalkulasi baris berikutnya
yPos = (MarginAtas + (count * myfont.GetHeight(e.Graphics)))
'menetapkan halaman teks yang diprint
e.Graphics.DrawString(line, myfont, Brushes.Black, MarginKiri, yPos, New StringFormat)
count += 1
line = sr.ReadLine()
End While
'memeriksa jika masih ada baris tersisa
If Not (line Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Keterangan : RichTextBox berisi hasil dari query yang anda buat.
3. Setelah itu jalankan program anda. maka akan muncul tampilan seperti ini :
Makasih Bray
BalasHapusTerima kasih tutorialnya mbak...
BalasHapusIni yang lagi saya cari..
Saya pakai VB 2010 Express, kok StringReader Not Define ya????
BalasHapus@Fransiskus Sutris: apa udah dicek importnya sudah apa belum?
BalasHapusmaaf mbah mau tanya, untuk cetak document, nah ducement yang dicetak itu ngambil dari mana ya mbak ?
BalasHapuskalo dari database gimana ?
mohon pencerahannya :D
coba ini: script untuk tombol kalkulasi
BalasHapusPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dataReader As MySqlDataReader
Dim text As String = ""
BukaKoneksi()
Dim cmdKeuangan As MySqlCommand = conn.CreateCommand
tglAwal = (DateTimePicker1.Value).ToShortDateString.ToString
tglAkhir = (DateTimePicker2.Value).ToShortDateString.ToString
Try
Dim sql As String = "SELECT MONTH(a.tgl_berkunjung) AS BULAN, SUM(b.harga*b.qty) AS PEMASUKAN, SUM(b.qty*c.biaya) AS PENGELUARAN FROM pelanggan a, pemesanan b, makanan c WHERE a.id_pelanggan = b.id_pelanggan AND b.id_menu = c.id_menu and a.tgl_berkunjung between @tgl_awal AND @tgl_akhir GROUP BY MONTH(a.tgl_berkunjung)"
With cmdKeuangan
.Parameters.Add("@tgl_awal", MySqlDbType.String, 20).Value = tglAwal
.Parameters.Add("@tgl_akhir", MySqlDbType.String, 20).Value = tglAkhir
.CommandText = sql
.Connection = conn
End With
dataReader = cmdKeuangan.ExecuteReader()
Dim title As String = "Laporan Keuangan" & vbCrLf & vbCrLf
While dataReader.Read()
text = text & "====================================================" & vbCrLf & _
"Bulan : " & dataReader("BULAN").ToString & vbCrLf & _
"====================================================" & vbCrLf & _
"Pengeluaran : " & dataReader("PENGELUARAN").ToString & vbCrLf & _
"Pemasukan : " & dataReader("PEMASUKAN").ToString & vbCrLf & _
"----------------------------------------------------" & vbCrLf & _
"Keuntungan : " & CStr(CInt(dataReader("PEMASUKAN").ToString) - CInt(dataReader("PENGELUARAN").ToString)) & vbCrLf & _
"===================================================="
RichTextBox1.Text = title & text
'RichTextBox1.Text = text
End While
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try
TutupKoneksi()
End Sub
cara import stringReader di vb.net express 2010 gimana ya??
BalasHapusmohon pencerahannya...
cara masukkan query di richtextbox gmn ?
BalasHapustinggal diset RichTextBox.text nya aja.
BalasHapusRichTextBox1.Text = title & text
mbak..mau tanya klo mencetak spt buku rekening bank...bgmana , apakah sama ..?..tks pencerahannya...
BalasHapuskeren mbak
BalasHapusmbak kalau databasenya ambil dari ms-acsess scriptnya gimana ?
BalasHapussaya cuma mau nambahkan menu print didalam software sederhana buatan VB,scriptnya gmna ya mbak..ty
BalasHapusDiset di richtexboxnya dimananya?
BalasHapus