Aplikasi pembayaran spp

5.1 Membuat Database Dengan Sql Server 2005 Express

Untuk menjalankan aplikasi pembayaran SPP, anda harus melakukan langkah-langkah yang sudah dibahas pada bab operasi database terutama pada langkah attach atau restore database dan membuat DSN.

Membuat database umumnya dilakukan dengan cara sebagai berikut:

1.              Buka SQL server 2005 Express

2.              Isilah user name dan password (jika ada)

3.              Kemudian klik Connect dan tunggu hingga sql server terbuka

4.              Kemudian klik kanan databases > new database

5.              Tulis nama database misal DBSPP > OK

6.              Selanjutnya buatlah beberapa tabel sesuai kebutuhan

Ilustrasi cara membuat database dapat dilihat pada gambar-gambar di bawah ini dengan mengikutipetunjuk kursor pada setiap gambar.

Gambar 5.1 Login sql server

Gambar 5.2 Membuat database baru

Gambar 5.3 Memberi nama database

5.2 Membuat Tabel

Beberapa tabel yang harus dibuat untuk keperluan aplikasi pembayaran SPP antara lain :

1.              Tabel User

2.              Tabel Siswa

3.              Tabel Guru

4.              Tabel WaliKelas

5.              Tabel SPP

Struktur masing-masing tabel dapat dilihat pada gambar-gambar berikut ini :

Gambar 5.4 Tabel user

Gambar 5.5 Tabel siswa

Gambar 5.6 Tabel guru

Gambar 5.7 Tabel wali kelas

Gambar 5.8 Tabel SPP

Bentuk relasi tabel dapat dilihat pada ilustrasi di bawah ini. Gambar ini diambil dari hasil relasi pada crystal report.

Gambar 5.9 Relasi tabel

5.3  Membuat Project Baru

Tahapan selanjutnya dalam pembuatan aplikasi pembayaran SPP ini adalah :

1.              Membuat project baru

2.              Membuat module koneksi

3.              Membuat beberapa form sesuai kebutuhan

4.              Membuat coding untuk masing-masing form

5.              Membuat laporan

Untuk masing-masing tahapan dapat dilihat pada gambar-gambar di bawah ini.

 

Gambar 5.10  Memulai vb.net

 

Gambar 5.11  Membuat project baru

5.3.1   Memberi Nama Project

Gambar 5.12  Memberi nama project

Catatan : nama project ini akan secara otomatis membentuk nama folder yang sama dengan nama project-nya jika opsi “Create directory for solution” di centang.

5.3.2   Membuat Module

Gambar 5.13  Membuat module

Tujuan utama membuat module ini adalah agar koneksi ke database cukup dibuat satu kali dan dapat digunakan berkali-kali pada semua form dalam project yang bersangkutan.

Coding :

Imports System.Data.SqlClient

 

Module Module1

    Public CONN As SqlConnection

    Public DA As SqlDataAdapter

    Public DS As New DataSet

    Public CMD As SqlCommand

    Public DR As SqlDataReader

 

    Public Sub Koneksi()

        CONN = New SqlConnection("data source=user-pc\sqlexpress;initial catalog=dbspp;integrated security =true")

        CONN.Open()

    End Sub

End Module

 

Catatan : dalam buku ini sql server yang digunakan tidak memakai user name dan password.

5.4  Form Login

 

Gambar 5.14  Form login

 

Logika program :

 

1.              Setelah mengisi nama user lalu menekan enter maka kursor pindah ke password

2.              Setelah mengisi password lalu menekan enter maka kursor pindah ke button Login

3.              Pada saat Login di klik maka

4.              Cari nama user dan password ke tabel user

5.              Jika data tidak ditemukan maka munculkan pesan “password salah”

6.              Jika data ditemukan, maka form login disembunyikan dan menu utama ditampilkan

7.              Pada Menu utama panel1 tampilkan kode user, di panel2 tampilkan nama user, di panel3 tampilkan status user

8.              jika panel3 di menu utama statusnya USER atau Operator, maka matikan menu user

Catatan :

sebelumnya menu utama harus dibuat terlebih dahulu dengan menambahkan MenuStrip dan StatusStrip. Pembahasan tentang hal tersebut telah kami lakukan pada dua buku VB.NET sebelumnya.

Coding

 

Imports System.Data.SqlClient

 

Public Class Login

 

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        If e.KeyChar = Chr(13) Then TextBox2.Focus()

    End Sub

 

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        If e.KeyChar = Chr(13) Then Button1.Focus()

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        Call Koneksi()

        CMD = New SqlCommand("select * from tbluser where nama_user='" & TextBox1.Text & "' and pwd_user='" & TextBox2.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            MsgBox("Login gagal, Password Case Sensitive")

            TextBox1.Clear()

            TextBox2.Clear()

            TextBox1.Focus()

        Else

            Me.Visible = False

            MenuUtama.Show()

            MenuUtama.Panel1.Text = DR.Item("kode_user")

            MenuUtama.Panel2.Text = DR.Item("nama_user")

            MenuUtama.Panel3.Text = DR.Item("statuS_user")

            If MenuUtama.Panel3.Text = "USER" Or MenuUtama.Panel3.Text = "OPERATOR" Then

                MenuUtama.UserToolStripMenuItem.Enabled = False

            Else

                MenuUtama.UserToolStripMenuItem.Enabled = True

            End If

        End If

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        End

    End Sub

 

 

    Private Sub Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call Koneksi()

    End Sub

End Class

5.5  Form Menu Utama

Gambar 5.15  Form menu utama

Pada menu utama ini ditambahkan sebuah PictureBox yang akan digunakan untuk menampilkan gambar background. Properti PicturBox pada opsi Doc=FILL.

5.6  Form User

Logika program dalam form User adalah sebagai berikut :

1.              Ketik kode user, maka program akan mencari kode tersebut ke tabel user

2.              Jika kodenya ditemukan maka akan tampil nama, password dan status di masing-masing textbox

3.              Jika kode user tidak ada maka akan dianggap sebagai data baru

4.              Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel user

5.              Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru

6.              Jika kode tersebut ada maka data tersebut akan diedit.

Gambar 5.16  Form user

Dalam pembuatan sebuah form, sebaiknya menggunakan GroupBox agar mengatur posisi objek-objek di dalamnya lebih mudah.

Pada pembahasan selanjutnya, proses program dalam form-form master sama saja dan kode program pada proses tersebut akan diberi tanda kotak agar tidak dijelaskan berulang-ulang.

5.7  Form Siswa

Pada form siswa beberapa asumsi dipergunakan sebagai gambaran nyata di lapangan. Misalnya

1.              NIS tampil secara otomatis dengan awalan angka 13 sebagai tahun masuk

2.              Kelas muncul secara otomatis dengan asumsi 1 kelas kapasitas 5 orang siswa

3.              Biaya untuk siswa pertama kali masuk dengan asumsi Rp. 150.000

4.              Jatuh tempo pertama pembayaran adalah tanggal 10 bulan Juli tahun sistem komputer

5.              Tahun ajaran otomatis mengikuti sistem komputer

Gambar 5.17  Form siswa

Coding :

 

Imports System.Data.SqlClient

 

Public Class Siswa

 

    Sub NISotomatis()

        Call Koneksi()

        CMD = New SqlCommand("select * from TBLsiswa where NIS in(select max(NIS) from TBLsiswa)", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = Format(Now, "yy") + "001" à nim dengan pola yy + 3 digit nomor urut = 13001

        Else

            If Microsoft.VisualBasic.Left(DR.Item("NIS"), 2) = Format(Now, "yy") Then

                TextBox1.Text = DR.Item("NIS") + 1 à jika tahun masih sama maka nomor urut + 1

            Else

                TextBox1.Text = Format(Now, "yy") + "001"

            End If

        End If

    End Sub

 

    Sub Kosongkan()

        TextBox2.Clear()

        TextBox5.Clear()

        TextBox2.Focus()

    End Sub

 

    Sub DataBaru()

        TextBox2.Clear()

        TextBox5.Clear()

        TextBox2.Focus()

    End Sub

 

    Sub Tampilgrid()

        Call Koneksi()

        DA = New SqlDataAdapter("select * from tblSiswa", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

        DGV.Columns(4).DefaultCellStyle.Format = "###,###,###"

        DGV.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

    End Sub

 

    Sub Setingkelas()

        Call Koneksi()

        CMD = New SqlCommand("select count(*) from tblsiswa", CONN) à mencari banyaknya siswa, kemudian pasang interval 5 orang per kelas

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.Item(0) <= 5 Then

            TextBox3.Text = "1A"

        ElseIf DR.Item(0) <= 10 Then

            TextBox3.Text = "1B"

        ElseIf DR.Item(0) <= 15 Then

            TextBox3.Text = "1C"

        ElseIf DR.Item(0) <= 20 Then

            TextBox3.Text = "1D"

        Else

            TextBox3.Text = "1Z"

        End If

    End Sub

 

 

    Private Sub Siswa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call NISotomatis()

        Call Tampilgrid()

 

        Label7.Text = DateValue("10/07/" & Year(Today) & "")à jatuh tempo pertama pembayaran adalah bulan juli tanggal 10 tahun berjalan

 

        Dim TahunAjaran As String = Format(Today, "yyyy") & "-" & Format(Today, "yyyy") + 1 à tahun ajaran berjalan dan tahun ajaran berjalan + 1 = 2013 – 2014

        Label8.Text = TahunAjaran

        If Microsoft.VisualBasic.Left(Label8.Text, 4) = "2013" Then

            TextBox4.Text = 150000

            TextBox4.Text = FormatNumber(TextBox4.Text, 0)

        ElseIf Microsoft.VisualBasic.Left(Label8.Text, 4) = "2014" Then

            TextBox4.Text = 200000

            TextBox4.Text = FormatNumber(TextBox4.Text, 0)

        End If

        Call Setingkelas()

    End Sub

 

 

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        TextBox2.MaxLength = 30

        If e.KeyChar = Chr(13) Then

            Button1.Focus()

        End If

    End Sub

 

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox4.Text = "" Or TextBox3.Text = "" Then

            MsgBox("data belum lengkap")

            Exit Sub

        Else

            Call Koneksi()

            CMD = New SqlCommand("select * from tblSiswa where NIS='" & TextBox1.Text & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If Not DR.HasRows Then

                Call Koneksi()

                Dim simpan As String = "insert into tblSiswa values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & Label8.Text & "','" & Microsoft.VisualBasic.Str(TextBox4.Text) & "')"

                CMD = New SqlCommand(simpan, CONN)

                CMD.ExecuteNonQuery()

 

Menyimpan ke tabel SPP secara berulang dari bulan juli tahun ini hingga bulan juni tahun depan

 

                For i As Integer = 1 To 12

                    Dim TempO As Date = DateAdd(DateInterval.Month, i - 1, DateValue(Label7.Text))

                    Call Koneksi()

                    Dim hasil As String = TextBox1.Text

                    Dim simpandetail2 As String = "insert into TBLSPP values ('" & TextBox1.Text & i & "',0,'" & Format(TempO, "MM/dd/yyyy") & "','" & Format(TempO, "MMMM") + " " + Format(TempO, "yyyy") & "','" & TextBox1.Text & "',0,'-','-')"

                    CMD = New SqlCommand(simpandetail2, CONN)

                    CMD.ExecuteNonQuery()

                Next

 

 

                CMD = New SqlCommand("select * from TBLSPP order by 1,2", CONN)

                DR = CMD.ExecuteReader

                DR.Read()

            Else

                Call Koneksi()

                Dim edit As String = "update tblSiswa set nama_Siswa='" & TextBox2.Text & "',Kelas='" & TextBox3.Text & "',Tahun_ajaran='" & Label8.Text & "',Biaya='" & TextBox4.Text & "' where NIS='" & TextBox1.Text & "'"

                CMD = New SqlCommand(edit, CONN)

                CMD.ExecuteNonQuery()

            End If

            Call Kosongkan()

            Call Tampilgrid()

            Call NISotomatis()

            Call Setingkelas()

        End If

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        If TextBox1.Text = "" Then

            MsgBox("kode Siswa harus diisi dulu")

            TextBox1.Focus()

            Exit Sub

        Else

            Call Koneksi()

            CMD = New SqlCommand("select distinct nis from TBLSPP where nis='" & TextBox1.Text & "' and jumlah >0", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                MsgBox("NIS tidak dapat dihapus karena sudah ada dalam data pembayaran")

                Call Kosongkan()

                Call NISotomatis()

                Exit Sub

            End If

            If MessageBox.Show("hapus data ini...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

                Call Koneksi()

                Dim hapus As String = "delete from tblSiswa where NIS='" & TextBox1.Text & "'"

                CMD = New SqlCommand(hapus, CONN)

                CMD.ExecuteNonQuery()

 

                Dim HapusNISSPP As String = "delete from tblspp where NIS='" & TextBox1.Text & "'"

                CMD = New SqlCommand(HapusNISSPP, CONN)

                CMD.ExecuteNonQuery()

                Call Kosongkan()

                Call Tampilgrid()

                Call NISotomatis()

            Else

                Call Kosongkan()

            End If

        End If

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Call Kosongkan()

    End Sub

 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Me.Close()

    End Sub

 

    Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged

        Call Koneksi()

        CMD = New SqlCommand("select * from tblSiswa where nama_Siswa like '%" & TextBox5.Text & "%'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Call Koneksi()

            DA = New SqlDataAdapter("select * from tblSiswa where nama_Siswa like '%" & TextBox5.Text & "%'", CONN)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

        Else

            MsgBox("Nama Siswa tidak ditemukan")

        End If

    End Sub

 

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick

        On Error Resume Next

        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value

        TextBox2.Text = DGV.Rows(e.RowIndex).Cells(1).Value

        TextBox3.Text = DGV.Rows(e.RowIndex).Cells(2).Value

        TextBox4.Text = DGV.Rows(e.RowIndex).Cells(4).Value

    End Sub

 

    Private Sub textbox3_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs)

        TextBox3.Text = UCase(TextBox3.Text)

    End Sub

End Class

5.8  Form Guru

Proses program dalam pengolahan data guru sama dengan data user.

Gambar 5.18  Form guru

5.9  Form Wali Kelas

 

Gambar 5.19  Form wali kelas

Satu orang guru boleh menjadi wali kelas untuk dua kelas yang berbeda.

5.10  Transaksi Pembayaran SPP

Logika dan proses program dalam transaksi pembayaran SPP adalah sebagai berikut :

1.              Nomor pembayaran tampil secara otomatis dengan pola yyMMdd + 0001 = “1310250001”

2.              Tanggal bayar bisa digunakan untuk simulasi pembayaran tunggakan, oleh karena itu digunakan DatetimePicker

3.              Jika NIS tidak ditemukan tersedia fasilitas daftar siswa yang akan muncul secara otomatis dan tinggal dipilih kemudian menekan enter

 

Gambar 5.20  Mencari NIM dalam transaksi pembayaran spp

 

4.              Cara pembayaran dengan memilih record dalam grid, kemudian klik Button BAYAR

5.              Record yang sudah dibayar tidak dapat di bayar ulang

6.              Record yang sudah dibayar dapat dicetak berdasarkan nomor pembayaran dan berdasarkan tanggal cukup dengan memilih record yang akan dicetak dalm datagrid

7.              Tersedia fasilitas cetak data SPP yang sudah terbayar

8.              Tersedia fasilitas cetak data SPP yang belum dibayar

9.              Terlihat di bagian bawah akumulasi SPP yang sudah dibayar dan yang belum dibayar dalam bentuk nominal dan jumlah bulan

10.          Jika tanggal pembayaran melebihi tanggal jatuh tempo, maka keterangan =LUNASI TUNGGAKAN

11.          Jika tanggal pembayaran lebih kecil dari tanggal jatuh tempo maka keterangan = LUNAS

12.          Kode user secara otomatis terekam dari login

Gambar 5.21  Form transaksi pembayaran

Coding :

 

Imports System.Data.SqlClient

 

Public Class Pembayaran

 

    Sub Bayarotomatis()

        Call Koneksi()

        CMD = New SqlCommand("select * from TBLSPP where No_bayar in(select max(No_Bayar) from TBLSPP)", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = Format(Now, "yyMMdd") + "0001" à nomor pembayaran dengan pola yyMMdd+0001 = 1310250001

        Else

            If Microsoft.VisualBasic.Left(DR.Item("no_Bayar"), 6) = Format(Now, "yyMMdd") Then

                TextBox1.Text = DR.Item("no_Bayar") + 1

            Else

                TextBox1.Text = Format(Now, "yyMMdd") + "0001"

            End If

        End If

    End Sub

 

    Sub KondisiAwal()

        TextBox3.Clear()

        Label2.Text = ""

        Label6.Text = ""

        Label7.Text = ""

        Label8.Text = ""

        Label9.Text = ""

        Label13.Text = ""

        Label15.Text = ""

        Label17.Text = ""

        Label18.Text = ""

        Button1.Enabled = False

        Button4.Enabled = False

        Button5.Enabled = False

        DGV.Columns.Clear()

        TextBox3.Focus()

    End Sub

 

    Private Sub Pembayaran_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call Bayarotomatis()

        Button1.Enabled = False

        Button4.Enabled = False

        Button5.Enabled = False

        Me.Top = 100

    End Sub

 

    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

        TextBox1.MaxLength = 5

 

Mencari data siswa berdasarkan NIS

 

        If e.KeyChar = Chr(13) Then

            Call Koneksi()

            CMD = New SqlCommand("select * from tblSiswa where NIS='" & TextBox3.Text & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                Label6.Text = DR.Item("nama_Siswa")

                Label7.Text = DR.Item("Kelas")

                Label8.Text = DR.Item("Tahun_ajaran")

                Label9.Text = DR.Item("Biaya")

                Label9.Text = FormatNumber(Label9.Text, 0)

            Else

                MsgBox("Nis tidak terdaftar")

                Call KondisiAwal()

                DataSiswa.Show()

            End If

        End If

 

 

 

        Call Koneksi()

        CMD = New SqlCommand("select * from TBLSPP where NIS='" & TextBox3.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

 

Menampilkan data pembayaran SPP

 

            Call Koneksi()

            DA = New SqlDataAdapter("select * from TBLSPP where NIS='" & TextBox3.Text & "' ORDER BY 3", CONN)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

            DGV.ReadOnly = True

            DGV.Columns(5).DefaultCellStyle.Format = "###,###,###"

            DGV.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            DGV.Columns(4).Visible = False

            DGV.Columns(7).Visible = False

            DGV.Columns(6).Width = 190

            Call TotalTelahDibayar()

            Call TotalBelumDibayar()

        End If

        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled = True

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Call KondisiAwal()

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()

    End Sub

 

    Sub TotalTelahDibayar()

 

Mencari total pembayaran

        Dim hitung As Integer = 0

        For baris As Integer = 0 To DGV.RowCount - 1

            hitung = hitung + DGV.Rows(baris).Cells(5).Value

            Label13.Text = Format(hitung, "###,###,###")

        Next

 

Mencari jumlah bulan yang sudah dibayar

        Call Koneksi()

        CMD = New SqlCommand("select count(keterangan) from TBLSPP where nis='" & TextBox3.Text & "' and keterangan<>'-'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        Label17.Text = DR.Item(0) & " Bulan"

    End Sub

 

 

    Sub TotalBelumDibayar()

        Call Koneksi()

 

Mencari jumlah bulan yang belum dibayar

 

        CMD = New SqlCommand("select count(keterangan) from TBLSPP where nis='" & TextBox3.Text & "' and keterangan='-'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        Label18.Text = DR.Item(0) & " Bulan"

        Label15.Text = Val(Microsoft.VisualBasic.Str(Label9.Text) * DR.Item(0))

        Label15.Text = FormatNumber(Label15.Text, 0)

    End Sub

 

 

Mencetak laporan-laporan dengan kriteria tertentu. Prinsip utama query dalam crystal report adalah dengan SELECTION FORMULA dilanjutkan dengan menulis Nama_Tabel.Nama_Field = “Kriteria”

 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.no_bayar}='" & DGV.Rows(DGV.CurrentCell.RowIndex).Cells(0).Value & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

 

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and totext({TBLSPP.tgl_bayar})='" & DGV.Rows(DGV.CurrentCell.RowIndex).Cells(1).Value & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

 

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and {TBLSPP.jumlah}>0 "

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

 

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and {TBLSPP.jumlah}=0 "

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

 

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

 

    Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged

        If TextBox3.Text = "" Then

            Call KondisiAwal()

        End If

    End Sub

 

End Class

5.11  Laporan SPP Perorangan

Sebelum membahas tentang pembuatan laporan pada aplikasi pembayaran SPP ini, pastikan anda telah membaca bab tentang pembuatan DSN dan crystal report sebelumnya.

Tahapan pembuatan laporan dimulai dengan mendesain bentuk-bentuk laporan yang diperlukan, silakan gunakan Ms. Word atau Ms. Excel sebagai model awalnya atau bahkan dengan coretan tangan pada lembaran kertas kosong, kemudian masing-masing laporan tersebut diprediksi tabel apa yang terlibat di dalamnya. Setelah desain selesai dan prediksi tabel-tabel yang diperlukan diketahui, maka mulailah membuat DSN dan dilanjutkan dengan pembuatan laporan dengan Crystal report.

5.11.1 Laporan SPP Per Nomor

Gambar 5.22  Laporan SPP per nomor

Jika tabel-tabel dalam database sudah terhubung dengan baik dan benar, maka pembuatan laporan akan menjadi lebih mudah. Syarat  utama relasi tabel yang baik antara lain :

1.              Nama field harus sama

2.              Tipe field harus sama

3.              Ukuran fiels harus sama

4.              Besar  – kecilnya huruf pada field sebaiknya sama

 

Coding :

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

 

'Cetak laporan yang nomor bayarnya dipilih di kolom 0

 

        CetakData.CRV.SelectionFormula = "{TBLSPP.no_bayar}='" & DGV.Rows(DGV.CurrentCell.RowIndex).Cells(0).Value & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

5.11.2 Laporan SPP Per Tanggal

Gambar 5.23  Laporan SPP per tanggal bayar

Coding :

 

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

 

'Cetak laporan yang nis-nya ada di textbox3 dan tanggalnya ada di kolom 1

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and totext({TBLSPP.tgl_bayar})='" & DGV.Rows(DGV.CurrentCell.RowIndex).Cells(1).Value & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

5.11.3 Laporan SPP Yang Sudah Dibayar

 

Gambar 5.24  Laporan SPP yang sudah dibayar

Coding :

 

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

 

'Cetak laporan yang nis-nya ada di textbox3 dan jumlahnya > 0 (sudah dibayar)

 

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and {TBLSPP.jumlah}>0 "

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

5.11.4 Laporan SPP Yang Belum Dibayar

 

Gambar 5.25  Laporan SPP yang belum dibayar

Coding :

 

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

 

'Cetak laporan yang nis-nya ada di textbox3 dan jumlahnya > 0 (belum dibayar)

 

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "' and {TBLSPP.jumlah}=0 "

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

5.11.5 Laporan Seluruh Data SPP

 

Gambar 5.26  Laporan SPP keseluruhan

Coding :

 

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

        CetakData.Show()

        CetakData.CRV.ReportSource = Nothing

        CetakData.CRV.RefreshReport()

        CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" & TextBox3.Text & "'"

        CetakData.CRV.ReportSource = "master SPP.rpt"

    End Sub

5.12 Laporan Data Master

Pada setiap laporan, jika data yang tampil tidak terupdate dengan baik, segera klik ikon refresh.

5.12.1 Laporan Data User

Gambar 5.27  Laporan data user

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan user.rpt"

    End Sub

5.12.2 Laporan Data Guru

 

Gambar 5.28  Laporan data guru

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan guru.rpt"

    End Sub

5.12.3 Laporan Data Wali Kelas

 

Gambar 5.29  Laporan data wali kelas

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan walikelas.rpt"

    End Sub

5.12.4 Laporan Data Siswa

 

Gambar 5.30  Laporan data siswa

Coding :

 

 

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan siswa.rpt"

    End Sub

5.13 Laporan Data Siswa

5.13.1 Laporan Siswa Per Kelas

Gambar 5.31  Laporan data siswa per kelas

Coding :

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "{tblSISWA.KELAS}='" & ComboBox1.Text & "'"

        CRV.ReportSource = "laporan siswa.rpt"

    End Sub

5.13.2 Laporan Data Siswa Per Tahun Ajaran

 

Gambar 5.32  Laporan data siswa per tahun ajaran

Coding :

 

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "{tblSISWA.TAHUN_AJARAN}='" & ComboBox2.Text & "'"

        CRV.ReportSource = "laporan siswa.rpt"

    End Sub

5.13.3 Mencari Nama Siswa Dalam Laporan

Gambar 5.33  Laporan data siswa berdasarkan nama

Coding :

 

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        If e.KeyChar = Chr(13) Then

            If TextBox1.Text <> "" Then

                CRV.ReportSource = Nothing

                CRV.RefreshReport()

                CRV.SelectionFormula = "{tblSISWA.NAMA_SISWA} like '*" & TextBox1.Text & "*'"

                CRV.ReportSource = "laporan siswa.rpt"

            Else

                CRV.ReportSource = Nothing

                CRV.RefreshReport()

                CRV.ReportSource = "laporan siswa.rpt"

            End If

            TextBox1.Focus()

        End If

    End Sub

5.14 Laporan Pembayaran SPP Secara Umum

5.14.1 Laporan Per Tanggal

Gambar 5.34  Laporan pembayaran SPP umum per tanggal

Coding :

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "totext({tblspp.tgl_bayar})='" & DateTimePicker1.Text & "' and {tblspp.keterangan}<>'-'"

        CRV.ReportSource = "laporan spp harian.rpt"

    End Sub

5.14.2 Laporan Per Bulan Dan Tahun

 

Gambar 5.35  Laporan pembayaran SPP umum per bulan dan tahun

Coding :

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "{tblspp.keterangan}<>'-' and month({tblspp.tgl_bayar})=(" & Month(DateTimePicker2.Text) & ") and year({tblspp.tgl_bayar}) =(" & Year(DateTimePicker2.Text) & ") "

        CRV.ReportSource = "laporan spp bulanan.rpt"

    End Sub

5.14.3 Laporan Pembayaran SPP Per Kelas

 

Gambar 5.36  Laporan pembayaran SPP umum per kelas

Coding :

 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox1.Text & "' and {tblspp.keterangan}<>'-'"

        CRV.ReportSource = "laporan spp PER KELAS.rpt"

    End Sub

5.14.4 Laporan Tunggakan

 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox2.Text & "' and {tblspp.keterangan}='-' and month({tblspp.tgl_bayar})=(" & Month(DateTimePicker3.Text) & ") and year({tblspp.tgl_bayar}) =(" & Year(DateTimePicker3.Text) & ")"

        CRV.ReportSource = "laporan tunggakan.rpt"

    End Sub