APLIKASI PEMBAYARAN SPP VB 6.0 Peminat silakan hubungi : Email : uusrusmawan71@gmail.com Facebook : konsultasivb@ymail.com (Uus Rusmawan) Phone : 0812 8438 1118 Program ini digunakan di setiap institusi pendidikan baik formal maupun non formal seperti di TK, SD, SMP, SMU, AMIK dan sekolah tinggi. Program ini dibuat sesimpel mungkin dengan mengakomidasi berbagai kebutuhan informasi yang diperlukan. 7.1 Merancang Database Dan Bentuk Relasi Tabel Langkah awal yang harus dilakukan dalam pembuatan program Pembayaran SPP ini adalah : 1. Membuat database dengan nama DBSPP.mdb 2. Membuat tabel MAHASISWA, yang terdiri dari field : NIM Nama Kelas Jurusan Catatan : Pembaca dipersilakan untuk menambahkan field yang dianggap perlu, seperti field jenis kelamin, agama, asal sekolah, alamat, telepon dan sebagainya. 3. Membuat tabel KASIR, yang terdiri dari field : Kode kasir Nama kasir Password Kasir 4. Membuat tabel SPP, yang terdiri dari field : Nomor NIM Tanggal Jumlah Kode Kasir 5. Membuat tabel TUNGGAKAN, yang terdiri dari field : 1
Nim Nama Bulan Jumlah 6. Membuat tabel temporer untuk mencari data tunggakan, yang terdiri dari field : Nomor Nim Nama Bulan Jumlah Demikianlah ilustrasi awal rancangan database untuk program Pembayaran SPP ini. Langkah selanjutnya adalah membuat project di VB. Bentuk relasi tabel dalam program Pembayaran SPP ini terlihat pada gambar di bawah ini : 7.2 Membuat Modul Gambar 7.1 Relasi Tabel Program Pembayaran SPP Hal ini dibuat agar melakukan koneksi ke database cukup dengan memanggil nama prosedurnya saja. Lakukanlah langkah di bawah ini : Buka VB Klik menu project Pilih add module Klik open Kemudian ketiklah koding di bawah ini : 2
Public Conn As New ADODB.Connection Public RSSPP As ADODB.Recordset Public RSMAHASISWA As ADODB.Recordset Public RSKASIR As ADODB.Recordset Public Sub BukaDB() Set Conn = New ADODB.Connection Set RSSPP = New ADODB.Recordset Set RSMAHASISWA = New ADODB.Recordset Set RSKASIR = New ADODB.Recordset Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBSPP.mdb" 7.3 Login Setelah membuat module, buatlah form login kasir dengan bentuk seperti gambar di bawah ini. 7.4 Data mahasiswa Gambar 7.2 Login kasir Setelah membuat form login kasir, buatlah form Mahasiswa dengan bentuk seperti gambar di bawah ini. 3
Proses dalam form ini adalah sebgaai berikut: Gambar 7.3 Data Mahasiswa Input data dilakukan dengan memilih jurusan terlebih dahulu, jika jurusannya MI, maka program akan mencari berapa jumlah mahasiswa yang sudah mendaftar di jurusan MI, jika jumlah 0 5 maka dia termasuk kelas MI1A, jika 6 10 maka masuk ke kelas MI1B dan seterusnya. Dan proses input ini dibuat autonumber dengan pola nim YY99999. YY adalah tahun masuk 99 adalah jurusan (01 = MI, 02, KA dan 03 = TK), 999 adalah nomor urut. Adapun edit data cukup dengan mengetik NIM saja. 7.5 Pembayaran SPP Kemudian buatlah form untuk mengolah transaksi pembayaran SPP dengan bentuk seperti gambar di bawah ini : Gambar 7.4 Pembayaran SPP Proses dalam form pembayaran SPP ini adalah sebgai berikut: Input data dilakukan dengan memilih NIM dalam combo atau mengetiknya, jika siswa tersebut telah melakukan pembayaran maka akan tampil data pembayarannya dalam list, jika siswa tersebut belum bayar pada bulan yang bersangkutan maka setelah memilih NIM kursor akan menuju ke jumlah pembayaran. Jika jumlah pembayaran masih kosong dan data disimpan maka muncul pesan bahwa jumlah pembayaran masih kosong. Nomor pembayaran akan muncul secara otomatis. Jika pembayaran telah dilakukan maka akan tampil kwitansi pembayarannya yang telah dirancang dengan Crystal Report. 4
7.6 Mencari Data Tunggakan Gambar 7.5 Kwitansi Pembayaran SPP Proses selanjutnya adalah mencari data tunggakan. Proses dalam program ini adalah sebagai berikut : Tahap awal adalah memilih bulan dan tahun berapa data tunggakan yang akan ditampilkan. Jika bulan dan tahun tunggakan lebih besar dari bulan dan tahun sekarang, maka akan tampil pesan bahwa tunggakan bulan tersebut tidak dapat diproses. Jika bulan dan tahun tunggakan lebih kecil dari tanggal sekarang maka secara otomatis tgl akhir pembayarannya adalah tanggal 5 bulan tersebut. Jika tanggal akhir pembayaran lebih kecil dari tanggal saat ini maka proses tunggakanpun tidak dapat diproses. Jika pilihan tunggakan sudah sesuai persyaratan maka klik command tampilkan data tunggakan, setelah itu grid akan menampilkan datanya. Untuk menyimpan data tersbut klik command simpan data tunggakan. Jika data tunggakan pada bulan dan tahun yang sama disimpan dua kali, maka akan tampil pesan. 5
Koding : Gambar 7.6 Mencari Data Tunggakan Private Sub Form_Load() TGLSEKARANG = Date Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBSPP.mdb" Adodc1.RecordSource = "TRTUNGGAKAN" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Refresh Call Tabel_Kosong Private Sub Command1_Click() 'tgl akhir pembayaran ditentukan tgl 5 setiap bulannya TGLAKHIR = "05" + "/" + Mid(BLNTUNGGAKAN, 4, 2) + "/" + Right(BLNTUNGGAKAN, 2) 'jika tgl akhir pembayarn > dari tanggal saat ini, maka tampilkan pesan If CDate(TGLAKHIR) > CDate(TGLSEKARANG) Then Call Tabel_Kosong MsgBox "TUNGGAKAN BULAN " & Format(TGLAKHIR, "MMMM") & " TAHUN " & Format(TGLAKHIR, "YYYY") & " TIDAK DAPAT DIPROSES" & Chr(13) & _ "CARI BULAN DAN TAHUN YANG LEBIH KECIL DARI BULAN DAN TAHUN HARI INI" BLNTUNGGAKAN.SetFocus Exit Sub 'jika tgl akhir lebih kecil dari gl sekarang, maka lakupan proses pencarian tunggakan Dim RSCARI1 As New ADODB.Recordset 'cari data di tabel mahasiswa dan spp yang nim di di tabel mahasiswa tidak ada di tabel spp 6
'dan bulannya lebih kecil dari tgl akhir pembayaran RSCARI1.Open "SELECT DISTINCT MAHASISWA.NIM,NAMA,TANGGAL FROM MAHASISWA,SPP WHERE MAHASISWA.NIM NOT IN " & _ "(SELECT NIM FROM SPP WHERE MONTH(TANGGAL) <=CDATE(MONTH('" & TGLAKHIR & "')))", Conn 'jika data ditemukan maka tampilkan dalam grid If Not RSCARI1.EOF Then Call Tabel_Kosong RSCARI1.MoveFirst NOMOR = 0 Do While Not RSCARI1.EOF NOMOR = NOMOR + 1 Adodc1.Recordset.AddNew Adodc1.Recordset!NO = NOMOR Adodc1.Recordset!NIM = RSCARI1!NIM Adodc1.Recordset!NAMA = RSCARI1!NAMA Adodc1.Recordset!BULAN = TGLAKHIR Adodc1.Recordset!JUMLAH = 130000 Adodc1.Recordset.Update RSCARI1.MoveNext Adodc1.Recordset.MoveFirst Conn.Close 'jika data tidak ditemukan, maka ambil datanya langsung dari tabel mahasiswa dan tampilkan dalam grid Dim RSCARI2 As New ADODB.Recordset RSCARI2.Open "SELECT MAHASISWA.NIM,NAMA FROM MAHASISWA ", Conn Call Tabel_Kosong RSCARI2.MoveFirst NOMOR = 0 Do While Not RSCARI2.EOF NOMOR = NOMOR + 1 Adodc1.Recordset.AddNew Adodc1.Recordset!NO = NOMOR Adodc1.Recordset!NIM = RSCARI2!NIM Adodc1.Recordset!NAMA = RSCARI2!NAMA Adodc1.Recordset!BULAN = TGLAKHIR Adodc1.Recordset!JUMLAH = 130000 Adodc1.Recordset.Update RSCARI2.MoveNext Adodc1.Recordset.MoveFirst 'Text1 = Adodc1.Recordset.RecordCount & " ORANG" Private Sub Command1_KeyPress(Keyascii As Integer) If Keyascii = 27 Then Unload Me 'jika datagrid masih kosong, kemudian coba disimpan 'maka tampilkan pesan bahwa data tidak dapat disimpan Private Sub Command2_Click() If Adodc1.Recordset.RecordCount = 0 Then MsgBox "TIDAK ADA DATA YANG DAPAT DISIMPAN" & Chr(13) & _ "PILIH BULAN DAN TAHUN YANG BENAR" BLNTUNGGAKAN.SetFocus Exit Sub 'jika data dalam grid tampil, maka 'cari data yang bulan dan tahun tunggakannya sama dengan bulan dan tahun tgl akhir pembayaran 7
RSTUNGGAKAN.Open "SELECT * FROM TUNGGAKAN WHERE MONTH(BULAN)=MONTH('" & TGLAKHIR & "') AND YEAR(BULAN)=YEAR('" & TGLAKHIR & "')", Conn 'jika data tidak ditemukan maka simpan data dalam grid ke tabel tunggakan If RSTUNGGAKAN.EOF Then Adodc1.Recordset.MoveFirst Do While Not Adodc1.Recordset.EOF Dim SIMPANTUNGGAKAN As String SIMPANTUNGGAKAN = "INSERT INTO TUNGGAKAN(NIM,NAMA,BULAN,JUMLAH) VALUES " & _ "('" & Adodc1.Recordset!NIM & "','" & Adodc1.Recordset!NAMA & "','" & TGLAKHIR & "','" & Adodc1.Recordset!JUMLAH & "')" Conn.Execute SIMPANTUNGGAKAN Adodc1.Recordset.MoveNext Call Tabel_Kosong MsgBox "DATA TELAH BERHASIL DISIMPAN" 'jika data telah ada, maka tampilkan pesan bahwa data telah disimpan sebelumnya MsgBox "DATA TELAH DISIMPAN SEBELUMNYA" Call Tabel_Kosong 'prosedur untuk mengosongkan tabel transaksi Function Tabel_Kosong() If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst Do While Not Adodc1.Recordset.EOF Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext End Function 7.7 Pembayaran Tunggakan Setelah pencarian tunggakan SPP dilakukan, langkah selanjutnya adalah proses pembayaran tunggakan. Pola program ini hampir sama dengan pembayaran SPP sebelumnya. Buatlah form dengan bentuk seperti gambar di bawah ini. 8
7.8 Pembuatan Laporan Gambar 7.7 Pembayaran Tunggakan 7.8.1 Laporan SPP per nim dan per kelas Setelah proses pembayaran SPP, pencarian tunggakan dan pembayaran tunggakan selesai, langkah berikutnya adalah membuat laporan. Laporan pertama adalah laporan pembayaran SPP berdasarkan NIM dan berdasarkan kelas. Buatlah form dengan bentuk seperti gambar di bawah ini. Gambar 7.8 Laporan Pembayaran SPP 9
Koding : Private Sub Form_Load() RSSPP.Open "Select Distinct NIM From SPP order By 1", Conn RSSPP.Requery Do Until RSSPP.EOF Combo1.AddItem RSSPP!NIM RSSPP.MoveNext Dim RSTHN As New ADODB.Recordset RSTHN.Open "select distinct year(tanggal) as Tahun from SPP", Conn Do While Not RSTHN.EOF Combo2.AddItem RSTHN!Tahun Combo4.AddItem RSTHN!Tahun RSTHN.MoveNext RSMAHASISWA.Open "Select Distinct KELAS FROM MAHASISWA order By 1", Conn RSMAHASISWA.Requery Do Until RSMAHASISWA.EOF Combo3.AddItem RSMAHASISWA!KELAS RSMAHASISWA.MoveNext Conn.Close Private Sub Command1_Click() RSSPP.Open "SELECT * FROM SPP WHERE NIM='" & Combo1 & "' AND YEAR(TANGGAL)='" & Combo2 & "'", Conn If RSSPP.EOF Then MsgBox "DATA TIDAK DITEMUKAN" Exit Sub CR.SelectionFormula = "{SPP.NIM}='" & Combo1 & "' and Year({SPP.TANGGAL})=" & Val(Combo2.Text) CR.ReportFileName = App.Path & "\Lap spp per nim.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 Private Sub Command2_Click() RSSPP.Open "SELECT KELAS,TANGGAL FROM MAHASISWA,SPP WHERE MAHASISWA.NIM=SPP.NIM AND KELAS='" & Combo3 & "' AND YEAR(TANGGAL)='" & Combo4 & "'", Conn If RSSPP.EOF Then MsgBox "DATA TIDAK DITEMUKAN" Exit Sub CR.SelectionFormula = "{MAHASISWA.KELAS}='" & Combo3 & "' and Year({SPP.TANGGAL})=" & Val(Combo4.Text) CR.ReportFileName = App.Path & "\Lap spp per KELAS.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 Hasil laporan terlihat pada gambar di bawah ini. 10
Gambar 7.9 Laporan Pembayaran SPP Per Siswa Gambar 7.10 Laporan Pembayaran SPP Per Kelas 7.8.2 Laporan SPP Per Hari, Per Minggu Dan Per Bulan Laporan berikutnya adalah laporan pembayaran SPP berkala (harian, mingguan dan bulanan), untuk itu buatlah form dengan bentuk seperti gambar di bawah ini. Laporan inilah yang paling sering diminta oleh pihak-pihak yang terkait. 11
Koding : Gambar 7.11 Laporan Harian, Mingguan Dan Bulanan Private Sub Form_Load() RSSPP.Open "Select Distinct TANGGAL From SPP order By 1", Conn RSSPP.Requery Do Until RSSPP.EOF Combo1.AddItem Format(RSSPP!TANGGAL, "DD-MMM-YYYY") Combo2.AddItem Format(RSSPP!TANGGAL, "YYYY,MM, DD") Combo3.AddItem Format(RSSPP!TANGGAL, "YYYY,MM, DD") RSSPP.MoveNext Conn.Close Dim RSTGL As New ADODB.Recordset RSTGL.Open "select distinct month(tanggal) as Bulan from SPP", Conn Do While Not RSTGL.EOF Combo4.AddItem RSTGL!BULAN & Space(5) & MonthName(RSTGL!BULAN) RSTGL.MoveNext Conn.Close Dim RSTHN As New ADODB.Recordset RSTHN.Open "select distinct year(tanggal) as Tahun from SPP", Conn Do While Not RSTHN.EOF Combo5.AddItem RSTHN!Tahun RSTHN.MoveNext Conn.Close Private Sub Command1_Click() If Combo1 = "" Then MsgBox "PILIH TANGGALNYA DULU..." Exit Sub CR.SelectionFormula = "Totext({SPP.TANGGAL})='" & CDate(Combo1) & "'" 12
CR.ReportFileName = App.Path & "\Lap SPP Harian.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 Private Sub Command2_Click() If Combo2 = "" Or Combo3 = "" Then MsgBox "PILIH TANGGAL AWAL DAN TANGGAL AKHIRNYA..." Exit Sub CR.SelectionFormula = "{SPP.TANGGAL} in date (" & Combo2.Text & ") to date (" & Combo3.Text & ")" CR.ReportFileName = App.Path & "\Lap SPP Mingguan.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 Private Sub Command3_Click() If Combo4 = "" Or Combo5 = "" Then MsgBox "PILIH BULAN DAN TAHUNYA DULU..." Exit Sub RSSPP.Open "select * from SPP where month(tanggal)='" & Val(Combo4) & "' and year(tanggal)='" & (Combo5) & "'", Conn If RSSPP.EOF Then MsgBox "Data tidak ditemukan" Exit Sub Combo4.SetFocus CR.SelectionFormula = "Month({SPP.TANGGAL})=" & Val(Combo4.Text) & " and Year({SPP.TANGGAL})=" & Val(Combo5.Text) CR.ReportFileName = App.Path & "\Lap SPP Bulanan.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 Hasil laporan berkala dapat dilihat pada beberapa gambar di bawah ini. 13
Gambar 7.12 Laporan Pembayaran SPP Harian Gambar 7.13 Laporan Pembayaran SPP Mingguan 7.8.3 Laporan Tunggakan SPP Gambar 7.14 Laporan Pembayaran SPP Bulanan 14
Hal yang tidak kalah pentingnya dalam pembuatan laporan adalah laporan tunggakan. Dalam hal ini laporan tunggakan dibagi dua bentuk yaitu laporan tunggakan per bulan dan per kelas. Buatlah form dengan bentuk seperti gambar di bawah ini. Gambar 7.15 Laporan Tunggakan Hasil laporan tunggakan SPP dapat di lihat pada gambar di bawah ini. Gambar 7.16 Laporan Tunggakan SPP Bulanan 15
Gambar 7.17 Laporan Tunggakan SPP Per Kelas 16