Anda di halaman 1dari 35

M

UUSRUSMAWAN.C

PANDUAN MEMBUAT APLIKASI PEMBAYARAN


SPP DENGAN VB.NET
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.

1
M
UUSRUSMAWAN.C

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 :

2
M
UUSRUSMAWAN.C

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

3
M
UUSRUSMAWAN.C

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.

5.3.1 Memberi Nama Project

4
M
UUSRUSMAWAN.C

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

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()

5
M
UUSRUSMAWAN.C
End Sub
End Module

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

5.4 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

6
M
UUSRUSMAWAN.C

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

7
M
UUSRUSMAWAN.C

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.

8
M
UUSRUSMAWAN.C

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

9
M
UUSRUSMAWAN.C

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()

10
M
UUSRUSMAWAN.C
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

11
M
UUSRUSMAWAN.C
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()

12
M
UUSRUSMAWAN.C
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

13
M
UUSRUSMAWAN.C
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.

14
M
UUSRUSMAWAN.C

5.9 Form Wali Kelas

15
M
UUSRUSMAWAN.C
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

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

16
M
UUSRUSMAWAN.C
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

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

17
M
UUSRUSMAWAN.C
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

18
M
UUSRUSMAWAN.C

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

19
M
UUSRUSMAWAN.C

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.

20
M
UUSRUSMAWAN.C
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

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 :

21
M
UUSRUSMAWAN.C

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

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

22
M
UUSRUSMAWAN.C
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

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

23
M
UUSRUSMAWAN.C

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

24
M
UUSRUSMAWAN.C

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

25
M
UUSRUSMAWAN.C

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

26
M
UUSRUSMAWAN.C

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

27
M
UUSRUSMAWAN.C

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

28
M
UUSRUSMAWAN.C

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

29
M
UUSRUSMAWAN.C

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

30
M
UUSRUSMAWAN.C

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

31
M
UUSRUSMAWAN.C

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

32
M
UUSRUSMAWAN.C

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

33
M
UUSRUSMAWAN.C

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

34
M
UUSRUSMAWAN.C

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

35

Anda mungkin juga menyukai