What time is it?


Pages

Jumat, 27 April 2012

Membuat Script Printing dengan VB.Net

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 :

14 komentar:

  1. Terima kasih tutorialnya mbak...

    Ini yang lagi saya cari..

    BalasHapus
  2. Saya pakai VB 2010 Express, kok StringReader Not Define ya????

    BalasHapus
  3. @Fransiskus Sutris: apa udah dicek importnya sudah apa belum?

    BalasHapus
  4. maaf mbah mau tanya, untuk cetak document, nah ducement yang dicetak itu ngambil dari mana ya mbak ?

    kalo dari database gimana ?
    mohon pencerahannya :D

    BalasHapus
  5. coba ini: script untuk tombol kalkulasi

    Private 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

    BalasHapus
  6. cara import stringReader di vb.net express 2010 gimana ya??
    mohon pencerahannya...

    BalasHapus
  7. cara masukkan query di richtextbox gmn ?

    BalasHapus
  8. tinggal diset RichTextBox.text nya aja.

    RichTextBox1.Text = title & text

    BalasHapus
  9. mbak..mau tanya klo mencetak spt buku rekening bank...bgmana , apakah sama ..?..tks pencerahannya...

    BalasHapus
  10. mbak kalau databasenya ambil dari ms-acsess scriptnya gimana ?

    BalasHapus
  11. saya cuma mau nambahkan menu print didalam software sederhana buatan VB,scriptnya gmna ya mbak..ty

    BalasHapus
  12. Diset di richtexboxnya dimananya?

    BalasHapus