APLIKASI KOPERASI VB 6.0 Peminat silakan hubungi : Email : uusrusmawan71@gmail.com Facebook : konsultasivb@ymail.com (Uus Rusmawan) Phone : 0812 8438 1118 Inti program ini adalah bagaimana cara menyimpan gambar (foto) ke dalam database dan menampilkannya pada form. Kemudian di dalamnya dibahas tentang bagaimana proses sistem koperasi. Program ini sebenarnya sangat sederhana. Proses program ini diawali dengan mengambil foto anggota melalui webcam. Dalam pengambilan gambar ini seringkali ukurannya harus diatur ulang secara manual. Oleh karena itu dalam CD pendukung buku ini kami lapirkan software TNT Capture untuk mengambil gambar dengan ukuran yang sesuai dengan besarnya ukuran picturebox dalam form anggota. Untuk melihat petunjuk instalasi dan cara menggunakan software TNT Capture ini silakan lihat bab cara instalasi TNT Capture di bagian bawah. 5.1 Merancang Database Dan Bentuk Relasi Tabel Langkah awal yang harus dilakukan dalam pembuatan program penggajian ini adalah : 1. Membuat database dengan nama DBKOPERASI.mbd 2. Membuat tabel ANGGOTA, yang terdiri dari field : Nomor Anggota Nama Simpanan wajib Simpanan pokok Saldo Foto Pembaca dipersilakan untuk menambahkan field yang dianggap perlu, seperti field jenis kelamin, agama, pendidikan, alamat, telepon dan sebagainya. 3. Membuat tabel KASIR, yang terdiri dari field : Kode Kasir Nama Kasir Password Kasir 4. Membuat tabel SIMPAN, yang terdiri dari field : Nomor simpanan Tanggal 1
Nomor Anggota Jumlah simpanan Kode Kasir 5. Membuat tabel PINJAM, yang terdiri dari field : Nomor Pinjaman Tanggal Nomor Anggota Jumlah Pinjaman Kode kasir Demikianlah ilustrasi awal rancangan database untuk program penggajian ini. Langkah selanjutnya adalah membuat project di VB. Bentuk relasi tabel dalam program koperasi ini terlihat pada gambar di bawah ini : 5.2 Membuat Modul Gambar 5.1 Relasi Tabel 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 2
Kemudian ketiklah koding di bawah ini : Public Conn As New ADODB.Connection Public RSKasir As ADODB.Recordset Public RSAnggota As ADODB.Recordset Public RSSimpan As ADODB.Recordset Public RSPinjam As ADODB.Recordset Public Sub BukaDB() Set Conn = New ADODB.Connection Set RSKasir = New ADODB.Recordset Set RSAnggota = New ADODB.Recordset Set RSSimpan = New ADODB.Recordset Set RSPinjam = New ADODB.Recordset Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBKoperasi.mdb" 5.3 Data Anggota Setelah membuat module, buatlah form untuk mengolah tabel master anggota dengan bentuk seperti gambar di bawah ini. Dalam form anggota tambahkanlah objek CommonDialog (untuk membuka forlder dan mengambil gambar) dan objek PictureBox (untuk menampilkan gambar yang dipilih). Gambar 5.2 Form Anggota 3
5.4 Data Tabungan Gambar 5.3 Form Anggota Kemudian buatlah form untuk mengolah data penyimpanan dana nasabah dengan bentuk seperti gambar di bawah ini. Koding : Gambar 5.4 Data Tabungan 4
Private Sub Form_Activate() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBKoperasi.mdb" Adodc1.RecordSource = "TBLSimpan" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Refresh Call NoSimpan Tanggal = Format(Date, "DD-MMM-YYYY") 'prosedur untuk membuat nomor pinjam otomatis dengan pola SPNYYMMDD999 Private Sub NoSimpan() RSSimpan.Open "select * from TBLSIMPAN Where NO_SIMPAN In(Select Max(NO_SIMPAN)From TBLSIMPAN)Order By NO_SIMPAN Desc", Conn RSSimpan.Requery Dim Urutan As String * 12 Dim Hitung As Long With RSSimpan If.EOF Then Urutan = "SPN" + Format(Date, "yymmdd") + "001" Nomor = Urutan If Mid(!No_Simpan, 4, 6) <> Format(Date, "yymmdd") Then Urutan = "SPN" + Format(Date, "yymmdd") + "001" Hitung = Right(!No_Simpan, 9) + 1 Urutan = "SPN" + Format(Date, "yymmdd") + Right("000" & Hitung, 3) Nomor = Urutan End With 'pada saat form dipanggil, tampilkan nomor anggota di dalam combo Private Sub Form_Load() RSAnggota.Open "select * from tblanggota", Conn CBOAgt.Clear Do While Not RSAnggota.EOF CBOAgt.AddItem RSAnggota!no_anggota RSAnggota.MoveNext Loop CBOAgt.Enabled = False JmlSimpan.Enabled = False Sub KondisiAwal() CBOAgt = "" Nama = "" Saldo = "" JmlSimpan = "" Picture1.Picture = LoadPicture() CBOAgt.Enabled = False JmlSimpan.Enabled = False CmdInput.Caption = "&Input" CmdTutup.Caption = "&Tutup" 'pada saat nomor anggota dipilih dalam combo, tampilkan nama anggota, saldo dan fotonya Private Sub CBOAgt_Click() RSAnggota.Open "select * from tblanggota where no_anggota='" & CBOAgt & "'", Conn 5
If RSAnggota.EOF Then MsgBox "Nomor anggota tidak terdaftar" CBOAgt.SetFocus Nama = RSAnggota!Nama Saldo = Format(RSAnggota!Saldo, "##,###,###") Picture1.Picture = LoadPicture(RSAnggota!foto) 'pada saat nomor anggota dipilih dalam combo, tampilkan nama anggota, saldo dan fotonya Private Sub CBOAgt_KeyPress(Keyascii As Integer) If Keyascii = 13 Then RSAnggota.Open "select * from tblanggota where no_anggota='" & CBOAgt & "'", Conn If RSAnggota.EOF Then MsgBox "Nomor anggota tidak terdaftar" CBOAgt.SetFocus Nama = RSAnggota!Nama Saldo = Format(RSAnggota!Saldo, "##,###,###") Picture1.Picture = LoadPicture(RSAnggota!foto) JmlSimpan.SetFocus Private Sub CmdInput_Click() If CmdInput.Caption = "&Input" Then CmdInput.Caption = "&Simpan" CmdTutup.Caption = "&Batal" CBOAgt.Enabled = True JmlSimpan.Enabled = True CBOAgt.SetFocus If CBOAgt = "" Or JmlSimpan = "" Then MsgBox "Data belum lengkap" 'simpan data ke tabel pinjam Dim simpan As String simpan = "Insert into tblsimpan (no_simpan,tanggal,no_anggota,jmlsimpan,kodeksr) values " & _ "('" & Nomor & "','" & CDate(Tanggal) & "','" & CBOAgt & "','" & JmlSimpan & "','" & MENU.StatusBar1.Panels(1) & "')" Conn.Execute simpan 'tambah saldo anggota dengan simpanan yang baru saja dilakukan RSAnggota.Open "select * from tblanggota where no_anggota='" & CBOAgt & "'", Conn If Not RSAnggota.EOF Then Dim edit As String edit = "update tblanggota set saldo= '" & RSAnggota!Saldo + JmlSimpan & "' where no_anggota='" & CBOAgt & "'" Conn.Execute edit Call KondisiAwal Form_Activate 6
Private Sub CmdTutup_Click() If CmdTutup.Caption = "&Tutup" Then Unload Me If CmdTutup.Caption = "&Batal" Then CBOAgt = "" Call KondisiAwal Form_Activate Private Sub JmlSimpan_KeyPress(Keyascii As Integer) If Keyascii = 13 Then JmlSimpan = Format(JmlSimpan, "##,###,###") CmdInput.SetFocus 5.5 Data Pinjaman Kemudian buatlah form untuk mengolah transaksi peminjaman dana dengan bentuk seperti gambar di bawah ini: Gambar 5.5 Form Pinjaman Jika anda ingin membuat program lebih cepat pada proses peminjaman ini, salin saja form tabungan berikut kodingnya, kemudian simpan dengan nama Pinjaman. Setelah itu ubahlah proses penambahan saldo menjadi pengurangan saldo (artinya anda cukup mengganti tanda + menjadi tanda (minus). Setelah itu ubahlah sebuah hal yang berkaitan dengan simpanan menjadi pinjaman. Dengan satu cacatan penting anda harus memasang validasi agar jangan sampai peminjaman melebihi saldo awal 5.6 Pembuatan Laporan 7
Dalam program ini laporan dibagi menjadi dua bagian berdasarkan proses yang terjadi sebelumnya, yaitu laporan tabungan dan laporan pinjaman. Laporan tabungan dikelompokkan berdasarkan nomor anggota, laporan tabungan per hari, per minggu, per bulan dan per tahun. Begitupun dengan laporan pinjaman, dibuat sama dengan laporan tabungan. Tetapi dalam buku ini kami tidak akan membahas laporan pinjaman secara rinci. Kami cukupkan contohnya dengan laporan tabungan saja. Buatlah form laporan tabungan seperti gambar di bawah ini. Koding : Gambar 5.6 Form Laporan Tabungan Private Sub Form_Load() 'buka database, buka tabel anggota dan tampilkan Nomor anggota di dalam combo 'nomor anggota yang tampil berulang disatukan dengan distinct RSSimpan.Open "select distinct (no_anggota) from tblsimpan", Conn Do While Not RSSimpan.EOF Combo1.AddItem RSSimpan!no_anggota RSSimpan.MoveNext Loop Conn.Close 'buka tblsimpan dan tampilkan tanggal dalam combo berikutnya dengan format tertentu RSSimpan.Open "select distinct tanggal from tblsimpan", Conn Do While Not RSSimpan.EOF Combo2.AddItem Format(RSSimpan!Tanggal, "DD-MMM-YYYY") Combo3.AddItem Format(RSSimpan!Tanggal, "YYYY, MM, DD") Combo4.AddItem Format(RSSimpan!Tanggal, "YYYY, MM, DD") RSSimpan.MoveNext Loop Conn.Close 'buatlah sebuah recordset baru Dim RSBLN As New ADODB.Recordset 'buka recordset baru tersebut dengan mengambil angka dan nama bulan dari data tanggalnya di TBLsimpan 8
RSBLN.Open "select distinct month(tanggal) as Bulan from TBLsimpan", Conn Do While Not RSBLN.EOF Combo5.AddItem RSBLN!BULAN & Space(5) & MonthName(RSBLN!BULAN) RSBLN.MoveNext Loop Conn.Close Dim RSTHN As New ADODB.Recordset 'ambillah data tahun dari tblsimpan dan tampilkan dalam combo6 dan 7 RSTHN.Open "select distinct year(tanggal) as Tahun from tblsimpan", Conn Do While Not RSTHN.EOF Combo6.AddItem RSTHN!TAHUN Combo7.AddItem RSTHN!TAHUN RSTHN.MoveNext Loop Conn.Close 'lap per anggota Private Sub Combo1_Click() CR.SelectionFormula = "{tblsimpan.no_anggota}='" & Combo1 & "' " CR.ReportFileName = App.Path & "\lap simpanan per anggota.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 'lap harian Private Sub Combo2_Click() CR.SelectionFormula = "totext({tblsimpan.tanggal})='" & CDate(Combo2) & "' " CR.ReportFileName = App.Path & "\lap simpanan per tanggal.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 'lap mingguan Private Sub Combo4_Click() If Combo3 = "" Then MsgBox "Tanggal awal kosong",, "Informasi" Combo3.SetFocus If Combo4 < Combo3 Or Combo3 > Combo4 Then MsgBox "Tanggal terbalik" Combo4.SetFocus If Combo4 = Combo3 Then MsgBox "pilih tanggal yang berbeda" Combo4.SetFocus CR.SelectionFormula = "{TBLSIMPAN.Tanggal} in date (" & Combo3 & ") to date (" & Combo4 & ")" CR.ReportFileName = App.Path & "\Lap simpanan per minggu.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 'lap bulanan 9
Private Sub Combo6_Click() RSSimpan.Open "select * from TBLsimpan where month(tanggal)='" & Val(Left(Combo5, 2)) & "' and year(tanggal)='" & (Combo6) & "'", Conn If RSSimpan.EOF Then MsgBox "Data tidak ditemukan" Combo4.SetFocus CR.SelectionFormula = "Month({TBLsimpan.Tanggal})=" & Val(Left(Combo5, 2)) & " and Year({TBLsimpan.Tanggal})=" & Val(Combo6.Text) CR.ReportFileName = App.Path & "\Lap simpanan bulanan.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 'lap tahunan Private Sub Combo7_Click() CR.SelectionFormula = "year({tblsimpan.tanggal})=" & Val(Combo7.Text) CR.ReportFileName = App.Path & "\Lap simpanan per tahun.rpt" CR.WindowState = crptmaximized CR.RetrieveDataFiles CR.Action = 1 5.6.1 Laporan Penyimpanan Per Anggota Gambar 5.7 Laporan Tabungan Per Anggota 5.6.2 Laporan Tabungan Harian 10
5.6.3 Laporan Tabungan Mingguan Gambar 5.8 Laporan Tabungan Per Tanggal 5.6.4 Laporan Tabungan Bulanan Gambar 5.9 Laporan Tabungan Per Minggu 11
5.6.5 Laporan Tabungan Tahunan Gambar 5.10 Laporan Tabungan Per Bulan Gambar 5.11 Laporan Tabungan Per Tahun 12