Program Aplikasi Persediaan Barang Oleh :. Buatlah database dan beberapa tabel menggunakan program Microsoft Access sesuai dengan ketentuan berikut ini : Nama database : database.mdb Daftar tabel 1. Nama Tabel : Barang Field Name *Kode_Brg Nama_Brg Satuan Stok 2. Nama Tabel : Supplier Field Name *Kode_Supp Nama_Supp Alamat Kota Telepon 3. Nama Tabel : Pembelian Field Name *No_Faktur Tanggal Kode_Supp Nama_Supp Total 4. Nama Tabel : Detail_Beli Field Name No_Faktur Kode_Brg Nama_Brg Jumlah Keterangan : Tanpa Primary Key 5. Nama Tabel : Pengeluaran Field Name *No_Keluar Tanggal Total 6. Nama Tabel : Detail_Keluar Field Name No_Keluar Kode_Brg Nama_Brg Stok Jumlah Keterangan : Tanpa Primary Key Data Type (Length) (10) (30) (20) Number(Integer) Data Type (Length) (10) (30) (150) (30) (20) Data Type (Length) (10) Date (10) (30) Number(Integer) Data Type (Length) (10) (10) (30) Number(Integer) Data Type (Length) (10) Date Number(Integer) Data Type (Length) (10) (10) (30) Number(Integer) Number(Integer) 7. Nama Tabel : Admin Field Name Data Type (Length) *Username (16) Password (16) 1
Setelah pembuatan database dan tabel menggunakan Microsoft Access selesai, selanjutnya ikuti langkah-langkah berikut ini : 1. Aktifkan Microsoft Visual Basic 6.0 2. Kemudian klik Project References untuk menambahkan Reference Microsoft ActiveX Data Objects 2.0 Library. 3. Pilih Microsoft ActiveX Data Objects 2.0 Library pada kotak dialog References 4. Tambahkan Module untuk menuliskan deklarasi variabel global dan procedure untuk koneksi database 2
5. Ketik kode program sesuai contoh berikut ini : Option Explicit Public KonekDB As ADODB.Connection Public Rs_Barang As New ADODB.Recordset Public Rs_Supplier As New ADODB.Recordset Public Rs_Beli As New ADODB.Recordset Public Rs_Keluar As New ADODB.Recordset 'Deklarasi Variabel Public strkonekdb As String Public SQL As String Public Sub BukaDatabase() Set KonekDB = New ADODB.Connection strkonekdb = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path + "\database.mdb" 'Untuk membuka koneksi On Error Resume Next If KonekDB.State = adstateopen Then KonekDB.Close Set KonekDB = New ADODB.Connection KonekDB.Open strkonekdb 'Periksa status koneksi If Err.Number <> 0 Then MsgBox "Koneksi Database Gagal, Silakan Periksa Kembali..!!", vbokonly + vbinformation, "Informasi" End 'Koneksi Database Sukses 6. Simpan Module tersebut dengan nama Config 7. Tambahkan komponen Microsoft FlexGrid Control 6.0 dengan cara klik kanan pada area Toolbox kemudian pilih Components 3
8. Rancanglah form Data Barang dengan menambahkan 4 Label, 3 Box, 1 ComboBox, 1 Frame, 4 CommandButton dan 1 MsFlexGrid seperti contoh berikut ini: 9. Kemudian atur properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmbarang Caption Data Barang Label1 Caption Kode Barang Label2 Caption Nama Barang Label3 Caption Satuan Label4 Caption Stok 1 Name txtkode (Kosongkan) 2 Name txtnama (Kosongkan) 3 Name txtstok (Kosongkan) Combo1 Name cbsatuan Kosongkan Frame1 Caption Proses Command1 Name cmdinput Caption &Input Command2 Name cmdedit Caption &Edit Command3 Name cmdhapus Caption &Hapus Command4 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 4
10. Sehingga tampilan akhirnya menjadi seperti berikut ini : 11. Kemudian tambahkan kode program sesuai contoh berikut ini : Dim GridBaris As Byte Sub NonAktif() txtkode.enabled = False txtnama.enabled = False cbsatuan.enabled = False txtstok.enabled = False cmdedit.enabled = False cmdhapus.enabled = False cmdinput.enabled = True cmdinput.caption = "&Input" cmdtutup.caption = "&Tutup" Sub Aktif() txtkode.enabled = True txtnama.enabled = True cbsatuan.enabled = True txtstok.enabled = True Sub Kosong() txtkode. = "" txtnama. = "" cbsatuan. = "" txtstok. = "" Private Sub cmdedit_click() If MsgBox("Apakah Anda yakin mau mengedit data ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then If txtnama. = "" Then MsgBox "Nama Barang tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtnama.setfocus If cbsatuan. = "" Then MsgBox "Satuan tidak boleh kosong!", vbinformation + vbokonly, "Informasi" cbsatuan.setfocus If txtstok. = "" Then MsgBox "Stok tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtstok.setfocus If Not IsNumeric(txtStok.) Then MsgBox "Stok harus diisi dengan tipe number!", vbinformation + vbokonly, "Informasi" 5 txtstok.setfocus
SQL = "" SQL = "SELECT * FROM Barang WHERE Kode_Brg = '" & txtkode. & "'" Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Not Rs_Barang.BOF Then With Rs_Barang.Fields!Kode_Brg = Trim(txtKode.).Fields!Nama_Brg = Trim(txtNama.).Fields!Satuan = Trim(cbSatuan.).Fields!Stok = Trim(txtStok.).Update End With Rs_Barang.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil diedit", vbokonly + vbinformation, "Informasi" MsgBox "Data gagal diedit", vbokonly + vbinformation, "Informasi" Private Sub cmdhapus_click() If MsgBox("Apakah Anda yakin mau menghapus data ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then SQL = "DELETE FROM Barang WHERE Kode_Brg='" & txtkode. & "'" KonekDB.Execute SQL,, adcmd Rs_Barang.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil dihapus", vbokonly + vbinformation, "Informasi" Private Sub cmdinput_click() If cmdinput.caption = "&Input" Then Call Aktif cmdinput.caption = "&Simpan" cmdtutup.caption = "&Batal" txtkode.setfocus If txtkode. = "" Then MsgBox "Kode Barang tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtkode.setfocus If txtnama. = "" Then MsgBox "Nama Barang tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtnama.setfocus If cbsatuan. = "" Then MsgBox "Satuan tidak boleh kosong!", vbinformation + vbokonly, "Informasi" cbsatuan.setfocus If txtstok. = "" Then MsgBox "Stok tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtstok.setfocus If Not IsNumeric(txtStok.) Then MsgBox "Stok harus diisi dengan tipe number!", vbinformation + vbokonly, "Informasi" txtstok. = "" txtstok.setfocus SQL = "" SQL = "SELECT * FROM Barang WHERE Kode_Brg = '" & txtkode. & "'" Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Rs_Barang.BOF Then With Rs_Barang.AddNew.Fields!Kode_Brg = Trim(txtKode.).Fields!Nama_Brg = Trim(txtNama.).Fields!Satuan = Trim(cbSatuan.).Fields!Stok = Trim(txtStok.).Update End With 6
Rs_Barang.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil tersimpan", vbokonly + vbinformation, "Informasi" MsgBox "Data tidak tersimpan", vbokonly + vbinformation, "Informasi" Private Sub cmdtutup_click() If cmdtutup.caption = "&Tutup" Then If MsgBox("Apakah Anda mau menutup form ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then Unload Me Call Kosong Call NonAktif Private Sub Form_Load() Call BukaDatabase Call TampilGrid Call NonAktif Sub AktifGrid() With GridData.Cols = 5.RowHeightMin = 300.Col = 0. = "No".ColWidth(0) = 400.RowHeightMin = 300.Col = 1. = "Kode Barang".ColWidth(1) = 1750.Col = 2. = "Nama Barang".ColWidth(2) = 2500.Col = 3. = "Satuan".ColWidth(3) = 1500.Col = 4. = "Stok".ColWidth(4) = 1000 End With 7
Sub TampilGrid() Dim baris As Integer GridData.Clear Call AktifGrid GridData.Rows = 2 baris = 0 Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang", KonekDB, adopendynamic, adlockoptimistic If Rs_Barang.BOF Then Exit Sub With Rs_Barang.MoveFirst Do While Not.EOF On Error Resume Next baris = baris + 1 GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = baris GridData.Matrix(baris, 1) =!Kode_Brg GridData.Matrix(baris, 2) =!Nama_Brg GridData.Matrix(baris, 3) =!Satuan GridData.Matrix(baris, 4) =!Stok.MoveNext Loop End With Private Sub GridData_DblClick() GridBaris = GridData.Row Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg='" & GridData.Matrix(GridBaris, 1) & "'", KonekDB, adopendynamic, adlockoptimistic If Rs_Barang.BOF Then MsgBox "TABEL MASIH KOSONG!", vbokonly + vbinformation, "Error" Exit Sub Rs_Barang.MoveFirst Do While Not Rs_Barang.EOF On Error Resume Next txtkode. = Rs_Barang!Kode_Brg txtnama. = Rs_Barang!Nama_Brg cbsatuan. = Rs_Barang!Satuan txtstok. = Rs_Barang!Stok Rs_Barang.MoveNext Loop cmdedit.enabled = True cmdhapus.enabled = True cmdtutup.caption = "&Batal" cmdinput.caption = "&Input" cmdinput.enabled = False Call Aktif txtkode.enabled = False txtnama.setfocus 12. Simpan form tersebut dengan nama frmbarang 8
13. Tambahkan form baru dan rancanglah form Data Supplier dengan menambahkan 5 Label, 5 Box, 1 Frame, 4 CommandButton dan 1 MsFlexGrid seperti contoh berikut ini: 14. Atur properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmsupplier Caption Data Supplier Label1 Caption Kode Supplier Label2 Caption Nama Supplier Label3 Caption Alamat Label4 Caption Kota Label5 Caption Telepon 1 Name txtkode (Kosongkan) 2 Name txtnama (Kosongkan) 3 Name txtalamat (Kosongkan) 4 Name txtkota (Kosongkan) 5 Name txttelepon (Kosongkan) Frame1 Caption Proses Command1 Name cmdinput Caption &Input Command2 Name cmdedit Caption &Edit Command3 Name cmdhapus Caption &Hapus Command4 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 9
15. Sehingga tampilan akhirnya menjadi seperti berikut ini : 16. Kemudian tambahkan kode program seperti contoh berikut ini : Dim GridBaris As Byte Sub NonAktif() txtkode.enabled = False txtnama.enabled = False txtalamat.enabled = False txtkota.enabled = False txttelepon.enabled = False cmdedit.enabled = False cmdhapus.enabled = False cmdinput.enabled = True cmdinput.caption = "&Input" cmdtutup.caption = "&Tutup" Sub Aktif() txtkode.enabled = True txtnama.enabled = True txtalamat.enabled = True txtkota.enabled = True txttelepon.enabled = True Sub Kosong() txtkode. = "" txtnama. = "" txtalamat. = "" txtkota. = "" txttelepon. = "" Private Sub cmdedit_click() If MsgBox("Apakah Anda yakin mau mengedit data ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then If txtnama. = "" Then MsgBox "Nama Supplier tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtnama.setfocus If txtalamat. = "" Then MsgBox "Alamat tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtalamat.setfocus If txtkota. = "" Then MsgBox "Kota tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtkota.setfocus If txttelepon. = "" Then MsgBox "No. Telepon tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txttelepon.setfocus 10
SQL = "" SQL = "SELECT * FROM Supplier WHERE Kode_Supp = '" & txtkode. & "'" Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Not Rs_Supplier.BOF Then With Rs_Supplier.Fields!Kode_Supp = Trim(txtKode.).Fields!Nama_Supp = Trim(txtNama.).Fields!Alamat = Trim(txtAlamat.).Fields!Kota = Trim(txtKota.).Fields!Telepon = Trim(txtTelepon.).Update End With Rs_Supplier.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil diedit", vbokonly + vbinformation, "Informasi" MsgBox "Data gagal diedit", vbokonly + vbinformation, "Informasi" Private Sub cmdhapus_click() If MsgBox("Apakah Anda yakin mau menghapus data ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then SQL = "DELETE FROM Supplier WHERE Kode_Supp='" & txtkode. & "'" KonekDB.Execute SQL,, adcmd Rs_Supplier.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil dihapus", vbokonly + vbinformation, "Informasi" Private Sub cmdinput_click() If cmdinput.caption = "&Input" Then Call Aktif cmdinput.caption = "&Simpan" cmdtutup.caption = "&Batal" txtkode.setfocus If txtkode. = "" Then MsgBox "Kode Supplier tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtkode.setfocus If txtnama. = "" Then MsgBox "Nama Supplier tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtnama.setfocus If txtalamat. = "" Then MsgBox "Alamat tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtalamat.setfocus If txtkota. = "" Then MsgBox "Kota tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txtkota.setfocus If txttelepon. = "" Then MsgBox "No. Telepon tidak boleh kosong!", vbinformation + vbokonly, "Informasi" txttelepon.setfocus If Not IsNumeric(txtTelepon.) Then MsgBox "No. Telepon harus diisi dengan tipe Number!", vbinformation + vbokonly, "Informasi" txttelepon. = "" txttelepon.setfocus SQL = "" SQL = "SELECT * FROM Supplier WHERE Kode_Supp = '" & txtkode. & "'" Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Rs_Supplier.BOF Then With Rs_Supplier.AddNew.Fields!Kode_Supp = Trim(txtKode.) 11
.Fields!Nama_Supp = Trim(txtNama.).Fields!Alamat = Trim(txtAlamat.).Fields!Kota = Trim(txtKota.).Fields!Telepon = Trim(txtTelepon.).Update End With Rs_Supplier.Requery Call Kosong Call NonAktif Call TampilGrid MsgBox "Data berhasil tersimpan", vbokonly + vbinformation, "Informasi" MsgBox "Data tidak tersimpan", vbokonly + vbinformation, "Informasi" Private Sub cmdtutup_click() If cmdtutup.caption = "&Tutup" Then If MsgBox("Apakah Anda mau menutup form ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then Unload Me Call Kosong Call NonAktif Private Sub Form_Load() Call BukaDatabase Call TampilGrid Call NonAktif Sub AktifGrid() With GridData.Cols = 6.RowHeightMin = 300.Col = 0. = "No".ColWidth(0) = 400.RowHeightMin = 300.Col = 1. = "Kode Supplier".ColWidth(1) = 1750.Col = 2. = "Nama Supplier".ColWidth(2) = 2000.Col = 3. = "Alamat".ColWidth(3) = 3000.Col = 4. = "Kota".ColWidth(4) = 1500 12
.Col = 5. = "Telepon".ColWidth(5) = 1500 End With Sub TampilGrid() Dim baris As Integer GridData.Clear Call AktifGrid GridData.Rows = 2 baris = 0 Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open "SELECT * FROM Supplier", KonekDB, adopendynamic, adlockoptimistic If Rs_Supplier.BOF Then Exit Sub With Rs_Supplier.MoveFirst Do While Not.EOF On Error Resume Next baris = baris + 1 GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = baris GridData.Matrix(baris, 1) =!Kode_Supp GridData.Matrix(baris, 2) =!Nama_Supp GridData.Matrix(baris, 3) =!Alamat GridData.Matrix(baris, 4) =!Kota GridData.Matrix(baris, 5) =!Telepon.MoveNext Loop End With Private Sub GridData_DblClick() GridBaris = GridData.Row Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open " SELECT * FROM Supplier WHERE Kode_Supp='" & GridData.Matrix(GridBaris, 1) & "'", KonekDB, adopendynamic, adlockoptimistic If Rs_Supplier.BOF Then MsgBox "TABEL MASIH KOSONG!", vbokonly + vbinformation, "Error" Exit Sub Rs_Supplier.MoveFirst Do While Not Rs_Supplier.EOF On Error Resume Next txtkode. = Rs_Supplier!Kode_Supp txtnama. = Rs_Supplier!Nama_Supp txtalamat. = Rs_Supplier!Alamat txtkota. = Rs_Supplier!Kota txttelepon. = Rs_Supplier!Telepon Rs_Supplier.MoveNext Loop cmdedit.enabled = True cmdhapus.enabled = True cmdtutup.caption = "&Batal" cmdinput.caption = "&Input" cmdinput.enabled = False Call Aktif txtkode.enabled = False txtnama.setfocus 17. Simpan form tersebut dengan nama frmsupplier 13
18. Tambahkan komponen Microsoft Windows Common Controls-2.6.0 19. Kemudian tambahkan form baru dan rancanglah form Data Pembelian dengan menambahkan 8 Label, 7 Box, 1 DTPicker, 1 Frame, 6 CommandButton seperti contoh berikut ini : 20. Atur properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmpembelian Caption Data Pembelian Label1 Caption No. Faktur Label2 Caption Tanggal Label3 Caption Kode Supplier Label4 Caption Nama Supplier Label5 Alignment Center BackColor (Pilih Warna) Caption Kode Barang Label6 Alignment Center BackColor (Pilih Warna) Caption Nama Barang 14
Label7 Alignment Center BackColor (Pilih Warna) Caption Jumlah Label8 Caption Total 1 Name txtnofak Kosongkan 2 Name txtkdsupp Kosongkan 3 Name txtnmsupp Kosongkan 4 Name txtkdbrg Kosongkan 5 Name txtnmbrg Kosongkan 6 Name txtjumlah Kosongkan 7 Name txttotal Kosongkan DTPicker1 Name dttanggal Frame1 Caption Proses Command1 Name cmdcarisupp Caption... Command2 Name cmdcaribrg Caption... Command3 Name cmdok Caption &OK Command4 Name cmdsimpan Caption &Simpan Command5 Name cmdbatal Caption &Batal Command6 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 21. Sehingga tampilan akhirnya menjadi seperti berikut ini : 15
22. Kemudian tambahkan kode program seperti contoh berikut ini : Dim i, baris As Integer Private Sub cmdbatal_click() Kosong Private Sub cmdcarisupp_click() frmcarisupplier.show Private Sub cmdcaribrg_click() frmcaribarang.show Private Sub Kosong() txtnofak. = "" dttanggal.value = Format(Now, "dd-mm-yyyy") txtkdsupp. = "" txtnmsupp. = "" txtkdbrg. = "" txtnmbrg. = "" txtjumlah. = "" txttotal. = "" baris = 1 GridData.Clear GridData.Rows = 2 AktifGridData Private Sub cmdok_click() On Error Resume Next If txtkdbrg = "" Then MsgBox "Kode Barang tidak boleh kosong..!!", vbinformation + vbokonly, "Informasi" txtkdbrg.setfocus If txtnmbrg = "" Then MsgBox "Kode Barang tidak terdaftar..!", vbinformation + vbokonly, "Informasi" txtkdbrg = "" txtjumlah = "" txtkdbrg.setfocus If txtjumlah = "" Then MsgBox "Jumlah tidak boleh kosong..!!", vbinformation + vbokonly, "Informasi" txtjumlah.setfocus If Not IsNumeric(txtJumlah) Then MsgBox "Jumlah harus diisi dengan tipe Number!", vbinformation + vbokonly, "Informasi" txtjumlah = "" txtjumlah.setfocus GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = txtkdbrg. GridData.Matrix(baris, 1) = txtnmbrg. GridData.Matrix(baris, 2) = txtjumlah. txttotal. = Val(txtTotal.) + Val(txtJumlah.) baris = baris + 1 txtkdbrg = "" txtnmbrg = "" txtjumlah = "" txtkdbrg.setfocus Rs_Barang.Requery Private Sub AktifGridData() With GridData.Cols = 3.RowHeightMin = 300.Col = 0. = "Kode Barang".ColWidth(0) = 2000 16
.Col = 1. = "Nama Barang".ColWidth(1) = 4000.Col = 2. = "Jumlah".ColWidth(2) = 1000 End With Private Sub cmdsimpan_click() If baris <> 1 Then If txtnofak = "" Then MsgBox "No. Faktur tidak boleh kosong!", vbokonly + vbinformation, "Informasi" txtnofak.setfocus If txtkdsupp = "" Then MsgBox "Kode Supplier tidak boleh kosong!", vbokonly + vbinformation, "Informasi" txtkdsupp.setfocus 'Proses penyimpanan ke Pembelian SQL = "" SQL = "INSERT INTO Pembelian(No_Faktur,Tanggal,Kode_Supp,Nama_Supp,Total) VALUES('" & txtnofak. & "','" & dttanggal.value & "','" & txtkdsupp. & "','" & txtnmsupp. & "','" & txttotal. & "')" KonekDB.Execute SQL,, adcmd 'Proses penyimpanan ke Detail_Beli For i = 1 To baris - 1 SQL = "" SQL = "INSERT INTO Detail_Beli(No_Faktur,Kode_Brg,Nama_Brg,Jumlah) VALUES('" & txtnofak. & "','" & GridData.Matrix(i, 0) & "','" & GridData.Matrix(i, 1) & "','" & GridData.Matrix(i, 2) & "')" KonekDB.Execute SQL,, adcmd Dim StokBaru As Integer Dim Kode As String StokBaru = Val(GridData.Matrix(i, 2)) Kode = GridData.Matrix(i, 0) SQL = "" SQL = "UPDATE Barang SET Stok=Stok + " & StokBaru & " WHERE Kode_Brg='" & Kode & "'" KonekDB.Execute SQL,, adcmd Next i MsgBox "Data Pembelian telah tersimpan.", vbinformation + vbokonly, "Informasi" Kosong MsgBox "Maaf! Data pembelian barang masih kosong.", vbokonly + vbinformation, "Informasi" Private Sub cmdtutup_click() If MsgBox("Apakah Anda mau menutup form ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then Unload Me Private Sub Form_Load() Call BukaDatabase Call Kosong Private Sub TampilBarang() If txtkdbrg <> "" Then SQL = "" SQL = "SELECT * FROM Barang WHERE Kode_Brg='" & txtkdbrg. & "'" Set Rs_Barang = New ADODB.Recordset 17 Rs_Barang.Open SQL, KonekDB, adopendynamic, adlockoptimistic
If Not Rs_Barang.BOF Then txtnmbrg = Rs_Barang.Fields!Nama_Brg txtjumlah.setfocus Private Sub TampilSupplier() If txtkdsupp <> "" Then SQL = "" SQL = "SELECT * FROM Supplier WHERE Kode_Supp='" & txtkdsupp. & "'" Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Not Rs_Supplier.BOF Then txtnmsupp = Rs_Supplier.Fields!Nama_Supp txtkdbrg.setfocus Private Sub txtkdbrg_change() TampilBarang Private Sub txtkdsupp_change() TampilSupplier 23. Simpan form tersebut dengan nama frmpembelian 24. Tambahkan form baru dan rancanglah form Pencarian Supplier dengan menambahkan 1 Frame, 1 Box, 1 CommandButton dan 1 MsFlexGrid seperti contoh berikut ini : 25. Atur properti masing-masing seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmcarisupplier Caption Pencarian Frame1 Caption Kata Kunci 1 Name txtcari (Kosongkan) Command1 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 18
26. Sehingga tampilan akhirnya menjadi seperti berikut ini : 27. Tambahkan kode program seperti contoh berikut ini : Private Sub cmdtutup_click() Unload Me Private Sub Form_Load() Call BukaDatabase Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open "SELECT * FROM Supplier", KonekDB, adopendynamic, adlockoptimistic Call TampilGridData GridData.Cols = 6 Sub AktifGridData() With GridData.Cols = 6.RowHeightMin = 300.Col = 0. = "No".ColWidth(0) = 400.Col = 1. = "Kode Supplier".ColWidth(1) = 2000.Col = 2. = "Nama Supplier".ColWidth(2) = 2000.Col = 3. = "Alamat".ColWidth(3) = 3500.Col = 4. = "Kota".ColWidth(4) = 1500 19
.Col = 5. = "Telepon".ColWidth(5) = 1800 End With Sub TampilGridData() Dim baris As Byte GridData.Clear Call AktifGridData GridData.Rows = 2 baris = 0 If Rs_Supplier.BOF Then MsgBox "Data Supplier Masih Kosong..", vbinformation + vbokonly, "Informasi" Exit Sub With Rs_Supplier.MoveFirst Do While Not.EOF baris = baris + 1 GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = baris GridData.Matrix(baris, 1) =!Kode_Supp GridData.Matrix(baris, 2) =!Nama_Supp GridData.Matrix(baris, 3) =!Alamat GridData.Matrix(baris, 4) =!Kota GridData.Matrix(baris, 5) =!Telepon.MoveNext Loop End With Private Sub GridData_DblClick() Dim b As Byte b = GridData.Row If GridData.Rows <> 1 Then With frmpembelian.txtkdsupp. = GridData.Matrix(b, 1).txtNmSupp. = GridData.Matrix(b, 2).txtKdBrg.SetFocus End With Exit Sub Unload Me Private Sub txtcari_change() If txtcari. <> Empty Then Set Rs_Supplier = New ADODB.Recordset Rs_Supplier.Open "SELECT * FROM Supplier WHERE Kode_Supp LIKE '%" & txtcari. & "%' OR Nama_Supp LIKE'%" & txtcari. & "%'", KonekDB, adopendynamic, adlockbatchoptimistic If Rs_Supplier.BOF Then MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbinformation + vbokonly, "Informasi" txtcari. = "" txtcari.setfocus Call TampilGridData 28. Simpan form tersebut dengan nama frmcarisupplier 20
29. Tambahkan form baru dan rancanglah form Pencarian Barang dengan menambahkan 1 Frame, 1 Box, 1 CommandButton dan 1 MsFlexGrid seperti contoh berikut ini : 30. Atur properti masing-masing seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmcaribarang Caption Pencarian Frame1 Caption Kata Kunci 1 Name txtcari (Kosongkan) Command1 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 31. Sehingga tampilan akhirnya menjadi seperti berikut ini : 32. Tambahkan kode program seperti contoh berikut ini : Private Sub cmdtutup_click() Unload Me Private Sub Form_Load() Call BukaDatabase Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang", KonekDB, adopendynamic, adlockoptimistic Call TampilGridData GridData.Cols = 4 Sub AktifGridData() With GridData.Cols = 4.RowHeightMin = 300.Col = 0. = "No".ColWidth(0) = 400 21
.Col = 1. = "Kode Barang".ColWidth(1) = 2000.Col = 2. = "Nama Barang".ColWidth(2) = 2000.Col = 3. = "Stok".ColWidth(3) = 1500 End With Sub TampilGridData() Dim baris As Byte GridData.Clear Call AktifGridData GridData.Rows = 2 baris = 0 If Rs_Barang.BOF Then MsgBox "Data Barang Masih Kosong..", vbinformation + vbokonly, "Informasi" Exit Sub With Rs_Barang.MoveFirst Do While Not.EOF baris = baris + 1 GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = baris GridData.Matrix(baris, 1) =!Kode_Brg GridData.Matrix(baris, 2) =!Nama_Brg GridData.Matrix(baris, 3) =!Stok.MoveNext Loop End With Private Sub GridData_DblClick() Dim b As Byte b = GridData.Row If GridData.Rows <> 1 Then With frmpembelian.txtkdbrg. = GridData.Matrix(b, 1).txtNmBrg. = GridData.Matrix(b, 2).txtJumlah.SetFocus End With Exit Sub Unload Me Private Sub txtcari_change() If txtcari. = Empty Then ' Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg LIKE '%" & txtcari. & "%' OR Nama_Brg LIKE'%" & txtcari. & "%'", KonekDB, adopendynamic, adlockbatchoptimistic 22
If Rs_Barang.BOF Then MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbinformation + vbokonly, "Informasi" txtcari. = "" txtcari.setfocus Call TampilGridData 33. Simpan form tersebut dengan nama frmcaribarang 34. Tambahkan form baru dan rancanglah form Data Pengeluaran dengan menambahkan 7 Label, 6 Box, 1 DTPicker, 1 Frame, 5 CommandButton, dan MsFlexGrid seperti contoh berikut ini : 35. Aturlah properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmpengeluaran Caption Data Pengeluaran Label1 Caption No. Keluar Label2 Caption Tanggal Label3 Alignment Center BackColor (Pilih Warna) Caption Kode Barang Label4 Alignment Center BackColor (Pilih Warna) Caption Nama Barang Label5 Alignment Center BackColor (Pilih Warna) Caption Stok Label6 Alignment Center BackColor (Pilih Warna) Caption Qty Minta Label7 Caption Total Minta 1 Name txtno Kosongkan 2 Name txtkdbrg Kosongkan 3 Name txtnmbrg Kosongkan 4 Name txtstok Kosongkan 5 Name txtjumlah Kosongkan 23
6 Name txttotal Kosongkan DTPicker1 Name dttanggal Frame1 Caption Proses Command1 Name cmdcaribrg Caption... Command2 Name cmdok Caption &OK Command3 Name cmdsimpan Caption &Simpan Command4 Name cmdbatal Caption &Batal Command5 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 36. Sehingga tampilan akhirnya menjadi seperti berikut ini : 37. Tambahkan kode program seperti contoh berikut ini ; Dim i, baris As Integer Private Sub cmdbatal_click() Kosong Private Sub cmdcaribrg_click() frmcaribarang2.show Private Sub Kosong() txtno. = "" dttanggal.value = Format(Now, "dd-mm-yyyy") txtkdbrg. = "" txtnmbrg. = "" txtjumlah. = "" txttotal. = "" baris = 1 GridData.Clear GridData.Rows = 2 AktifGridData 24
Private Sub cmdok_click() On Error Resume Next Dim cekkode As String If txtkdbrg = "" Then MsgBox "Kode Barang tidak boleh kosong..!!", vbinformation + vbokonly, "Informasi" txtkdbrg.setfocus If txtnmbrg = "" Then MsgBox "Kode Barang tidak terdaftar..!", vbinformation + vbokonly, "Informasi" txtkdbrg = "" txtjumlah = "" txtkdbrg.setfocus If txtjumlah = "" Then MsgBox "Jumlah tidak boleh kosong..!!", vbinformation + vbokonly, "Informasi" txtjumlah.setfocus If Not IsNumeric(txtJumlah) Then MsgBox "Jumlah harus diisi dengan tipe Number!", vbinformation + vbokonly, "Informasi" txtjumlah = "" txtjumlah.setfocus If Val(txtJumlah.) > Val(txtStok.) Then MsgBox "Stok barang tidak mencukupi!", vbinformation + vbokonly, "Informasi" txtjumlah = "" txtjumlah.setfocus GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = txtkdbrg. GridData.Matrix(baris, 1) = txtnmbrg. GridData.Matrix(baris, 2) = txtstok. GridData.Matrix(baris, 3) = txtjumlah. txttotal. = Val(txtTotal.) + Val(txtJumlah.) baris = baris + 1 txtkdbrg = "" txtnmbrg = "" txtstok = "" txtjumlah = "" txtkdbrg.setfocus Rs_Barang.Requery Private Sub AktifGridData() With GridData.Cols = 4.RowHeightMin = 300.Col = 0. = "Kode Barang".ColWidth(0) = 1500.Col = 1. = "Nama Barang".ColWidth(1) = 3500.Col = 2. = "Stok".ColWidth(2) = 1000.Col = 3. = "Qty Minta".ColWidth(2) = 1200 End With 25
Private Sub cmdsimpan_click() If baris <> 1 Then If txtno = "" Then MsgBox "No. Keluar tidak boleh kosong!", vbokonly + vbinformation, "Informasi" txtno.setfocus 'Proses penyimpanan ke Pengeluaran SQL = "" SQL = "INSERT INTO Pengeluaran(No_Keluar,Tanggal,Total) VALUES('" & txtno. & "','" & dttanggal.value & "','" & txttotal. & "')" KonekDB.Execute SQL,, adcmd 'Proses penyimpanan ke Detail_Keluar For i = 1 To baris - 1 SQL = "" SQL = "INSERT INTO Detail_Keluar(No_Keluar,Kode_Brg,Nama_Brg,Stok,Jumlah) VALUES('" & txtno. & "','" & GridData.Matrix(i, 0) & "','" & GridData.Matrix(i, 1) & "','" & GridData.Matrix(i, 2) & "','" & GridData.Matrix(i, 3) & "')" KonekDB.Execute SQL,, adcmd Dim JumKeluar As Integer Dim Kode As String JumKeluar = Val(GridData.Matrix(i, 3)) Kode = GridData.Matrix(i, 0) SQL = "" SQL = "UPDATE Barang SET Stok=Stok - " & JumKeluar & " WHERE Kode_Brg='" & Kode & "'" KonekDB.Execute SQL,, adcmd Next i MsgBox "Informasi" "Data Pengeluaran telah tersimpan.", vbinformation + vbokonly, Kosong MsgBox "Maaf! Data Pengeluaran barang masih kosong.", vbokonly + vbinformation, "Informasi" Private Sub cmdtutup_click() If MsgBox("Apakah Anda mau menutup form ini?", vbyesno + vbquestion, "Konfirmasi") = vbyes Then Unload Me Private Sub Form_Load() Call BukaDatabase Call Kosong Private Sub TampilBarang() If txtkdbrg <> "" Then SQL = "" SQL = "SELECT * FROM Barang WHERE Kode_Brg='" & txtkdbrg. & "'" Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open SQL, KonekDB, adopendynamic, adlockoptimistic If Not Rs_Barang.BOF Then txtnmbrg = Rs_Barang.Fields!Nama_Brg txtjumlah.setfocus Private Sub txtkdbrg_change() TampilBarang 38. Simpan form tersebut dengan nama frmpengeluaran 26
39. Tambahkan form baru dan rancanglah form Pencarian Barang dengan menambahkan 1 Frame, 1 Box, 1 CommandButton dan 1 MsFlexGrid seperti contoh berikut ini : 40. Atur properti masing-masing seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmcaribarang2 Caption Pencarian Frame1 Caption Kata Kunci 1 Name txtcari (Kosongkan) Command1 Name cmdtutup Caption &Tutup MsFlexGrid1 Name GridData 41. Sehingga tampilan akhirnya menjadi seperti berikut ini : 42. Tambahkan kode program seperti contoh berikut ini : Private Sub cmdtutup_click() Unload Me Private Sub Form_Load() Call BukaDatabase Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang", KonekDB, adopendynamic, adlockoptimistic Call TampilGridData GridData.Cols = 4 Sub AktifGridData() With GridData.Cols = 4.RowHeightMin = 300.Col = 0. = "No".ColWidth(0) = 400 27
.Col = 1. = "Kode Barang".ColWidth(1) = 2000.Col = 2. = "Nama Barang".ColWidth(2) = 2000.Col = 3. = "Stok".ColWidth(3) = 1500 End With Sub TampilGridData() Dim baris As Byte GridData.Clear Call AktifGridData GridData.Rows = 2 baris = 0 If Rs_Barang.BOF Then MsgBox "Data Barang Masih Kosong..", vbinformation + vbokonly, "Informasi" Exit Sub With Rs_Barang.MoveFirst Do While Not.EOF baris = baris + 1 GridData.Rows = baris + 1 GridData.Matrix(baris, 0) = baris GridData.Matrix(baris, 1) =!Kode_Brg GridData.Matrix(baris, 2) =!Nama_Brg GridData.Matrix(baris, 3) =!Stok.MoveNext Loop End With Private Sub GridData_DblClick() Dim b As Byte b = GridData.Row If GridData.Rows <> 1 Then With frmpengeluaran.txtkdbrg. = GridData.Matrix(b, 1).txtNmBrg. = GridData.Matrix(b, 2).txtStok. = GridData.Matrix(b, 3).txtJumlah.SetFocus End With Exit Sub Unload Me Private Sub txtcari_change() If txtcari. = Empty Then ' Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg LIKE '%" & txtcari. & "%' OR Nama_Brg LIKE'%" & txtcari. & "%'", KonekDB, adopendynamic, adlockbatchoptimistic 28
If Rs_Barang.BOF Then MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbinformation + vbokonly, "Informasi" txtcari. = "" txtcari.setfocus Call TampilGridData 43. Simpan form tersebut dengan nama frmcaribarang2 44. Tambahkan form baru untuk membuat form Login seperti contoh berikut ini : 45. Aturlah properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmlogin Caption Login Label1 Caption Username Label2 Caption Password 1 Name txtuser (Kosongkan) 2 Name txtpassword PasswordChar * (Kosongkan) Command1 Name cmdok Caption &OK Command1 Name cmdbatal Caption &Batal 46. Sehingga tampilan akhirnya menjadi seperti berikut ini : 47. Tambahkan kode program seperti contoh berikut ini : Dim db As ADODB.Connection Dim rs As ADODB.Recordset Dim SQL As String Dim salah As Byte Sub koneksi() Set db = New ADODB.Connection Set rs = New ADODB.Recordset db.open "Provider=Microsoft.Jet.OLEDB.4.0;Data "\database.mdb;persist Security Info=False" Source=" & App.Path & Private Sub cmdbatal_click() End Private Sub cmdok_click() If txtuser = "" Then MsgBox "Nama user tidak boleh kosong..!!", vbokonly + vbinformation, "Login" txtuser.setfocus 29
If txtpassword = "" Then MsgBox "Password tidak boleh kosong..!!", vbokonly + vbinformation, "Login" txtpassword.setfocus koneksi SQL = "SELECT * FROM admin WHERE username='" & txtuser. & "' AND password='" & txtpassword. & "'" Set rs = db.execute(sql) 'Jika data user ditemukan If Not rs.bof Then frmutama.show Unload Me If salah < 2 Then MsgBox "Nama user atau Password Salah..!! Silakan ulangi lagi..", vbcritical + vbokonly, "Login" txtuser. = "" txtpassword. = "" txtuser.setfocus salah = salah + 1 MsgBox "Kesalahan Password 3 kali berturut-turut.., Silakan Login ulang..", vbcritical + vbokonly, "Login" salah = 0 End Private Sub txtpassword_keypress(keyascii As Integer) If KeyAscii = 13 Then cmdok_click Private Sub txtuser_keypress(keyascii As Integer) If KeyAscii = 13 Then txtpassword.setfocus Private Sub txtuser_change() txtpassword. = "" 48. Simpan form tersebut dengan nama frmlogin 49. Tambahkan form baru sebagai form utama Program Aplikasi Stok Barang, kemudian tambahkan menu dan submenu menggunakan Menu Editor sesuai dengan ketentuan berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmutama Caption Aplikasi Persediaan Barang WindowState Maximized Menu Editor Caption &Master Name mnumaster Caption Data &Barang Name mnubarang Caption Data &Supplier Name mnusupplier Caption - Name mnugaris Caption &Keluar Name mnukeluar Caption &Transaksi Name mnutransaksi Caption Pembelian Name mnupembelian Caption Pengeluaran Name mnupengeluaran Caption Laporan Name mnulaporan 30
Caption Barang Name mnulapbarang Caption Supplier Name mnulapsupplier Caption - Name mnugaris2 Caption Pembelian Name mnulapbeli Caption Pengeluaran Name mnulapkeluar Keterangan : Untuk membuat sub menu seperti Data Barang yaitu dengan klik ikon panah arah ke kanan ( ) 50. Tambahkan kode program seperti contoh berikut ini : Private Sub Form_Unload(Cancel As Integer) If MsgBox("Apakah Anda yakin mau keluar dari aplikasi ini???", vbyesno + vbquestion, "Konfirmasi") = vbyes Then End Cancel = 1 Private Sub mnubarang_click() frmbarang.show Private Sub mnukeluar_click() If MsgBox("Apakah Anda yakin mau keluar dari aplikasi ini???", vbyesno + vbquestion, "Konfirmasi") = vbyes Then End Private Sub mnulapbarang_click() lapbarang.refresh lapbarang.show Private Sub mnulapbeli_click() frmlapbeli.show Private Sub mnulapkeluar_click() frmlapkeluar.show 31
Private Sub mnulapsupplier_click() LapSupplier.Refresh LapSupplier.Show Private Sub mnupembelian_click() frmpembelian.show Private Sub mnupengeluaran_click() frmpengeluaran.show Private Sub mnusupp_click() frmsupplier.show 51. Simpan form tersebut dengan nama frmutama 52. Tambahkan form baru dan rancanglah form Laporan Pembelian dengan menambahkan 1 Label, 1 Frame, 4 OptionButton, 1 ComboBox, 3 DTPicker, dan 2 CommandButton seperti contoh berikut ini: 53. Aturlah properti masing-masing objek seperti tertera pada tabel berikut ini : Nama Objek Properti Nilai Pengaturan Form1 Name frmlapbeli Caption Laporan Label1 Alignment 2 - Center Caption Laporan Pembelian Barang Font (Size) 14 Frame1 Caption Kategori Option1 Name opt1 Caption No. Faktur Tab Index 1 Option2 Name opt2 Caption Tanggal Tab Index 2 Option3 Name opt3 Caption Per Periode Tab Index 3 Option4 Name opt4 Caption Seluruh Tab Index 0 Combo1 Name cbno (Kosongkan) DTPicker1 Name dttanggal DTPicker2 Name dtawal DTPicker3 Name dtakhir Command1 Name cmdtampilkan Caption Tampilkan 32
Command2 Name cmdtutup Caption Tutup 54. Sehingga tampilan akhirnya menjadi seperti berikut ini : 55. Tambahkan kode seperti contoh berikut ini : Private Sub NonAktif() cbno.clear dttanggal = Format(Date, "dd-mm-yyyy") dtawal = Format(Date, "dd-mm-yyyy") dtakhir = Format(Date, "dd-mm-yyyy") cbno.enabled = False dttanggal.enabled = False dtawal.enabled = False dtakhir.enabled = False NoFaktur Private Sub NoFaktur() Set Rs1 = New ADODB.Recordset Rs1.Open "SELECT No_Faktur FROM Pembelian ORDER BY No_Faktur", KonekDB, adopendynamic, adlockoptimistic cbno.clear Do While Not Rs1.EOF cbno.additem Rs1!No_Faktur Rs1.MoveNext Loop Private Sub Lap_PembelianNo() If cbno = "" Then MsgBox "Pilihan No. Faktur tidak boleh kosong..!!", vbokonly + vbinformation, "Informasi" cbno.setfocus DELaporan.rsPembelian.Filter = "No_Faktur='" & cbno. & "'" LapBeli.Refresh LapBeli.Show Private Sub Lap_PembelianTanggal() DELaporan.rsPembelian.Filter = "Tanggal='" & dttanggal.value & "'" LapBeli.Refresh LapBeli.Show Private Sub Lap_PembelianPeriode() If dtawal > dtakhir Then MsgBox "Tanggal Awal vbinformation, "Informasi" lebih besar dari Tanggal Akhir..!!", vbokonly + dtawal.setfocus DELaporan.rsPembelian.Filter = "Tanggal>='" & dtawal.value & "' AND Tanggal<='" & dtakhir.value & "'" LapBeli.Refresh LapBeli.Show 33
Private Sub LapPembelianAll() DELaporan.rsPembelian.Filter = "" LapBeli.Refresh LapBeli.Show Private Sub cmdtampil_click() If opt1 Then 'menampilkan laporan per No. Faktur Lap_PembelianNo If opt2 Then 'menampilkan laporan per Tanggal Lap_PembelianTanggal If opt3 Then 'menampilkan laporan per Periode Lap_PembelianPeriode 'menampilkan laporan seluruh data NonAktif LapPembelianAll Private Sub cmdtutup_click() Unload Me Private Sub Form_Load() BukaDatabase NonAktif Private Sub opt1_click() NonAktif cbno.enabled = True cbno.setfocus Private Sub opt2_click() NonAktif dttanggal.enabled = True dttanggal.setfocus Private Sub opt3_click() NonAktif dtawal.enabled = True dtakhir.enabled = True dtawal.setfocus Private Sub opt4_click() NonAktif 56. Simpan form dengan nama frmlapbeli 57. Tambahkan form baru untuk frmlapkeluar yang secara keseluruhan objek yang digunakannya hampir sama dengan frmlapbeli 58. Pengaturan properti objeknya pun sama dengan frmlapbeli pada halaman sebelumnya 34
59. Hingga tampilan akhirnya menjadi seperti berikut ini : 60. Tambahkan kode seperti berikut ini : Private Sub NonAktif() cbno.clear dttanggal = Format(Date, "dd-mm-yyyy") dtawal = Format(Date, "dd-mm-yyyy") dtakhir = Format(Date, "dd-mm-yyyy") cbno.enabled = False dttanggal.enabled = False dtawal.enabled = False dtakhir.enabled = False NoKeluar Private Sub NoKeluar() Set Rs1 = New ADODB.Recordset Rs1.Open "SELECT No_Keluar FROM Pengeluaran ORDER BY No_Keluar", KonekDB, adopendynamic, adlockoptimistic cbno.clear Do While Not Rs1.EOF cbno.additem Rs1!No_Keluar Rs1.MoveNext Loop Private Sub Lap_PengeluaranNo() If cbno = "" Then MsgBox "Pilihan No. Keluar tidak boleh kosong..!!", vbokonly + vbinformation, "Informasi" cbno.setfocus DELaporan.rsPengeluaran.Filter = "No_Keluar='" & cbno. & "'" LapKeluar.Refresh LapKeluar.Show Private Sub Lap_PengeluaranTanggal() DELaporan.rsPengeluaran.Filter = "Tanggal='" & dttanggal.value & "'" LapKeluar.Refresh LapKeluar.Show Private Sub Lap_PengeluaranPeriode() If dtawal > dtakhir Then MsgBox "Tanggal Awal vbinformation, "Informasi" lebih besar dari Tanggal Akhir..!!", vbokonly + dtawal.setfocus DELaporan.rsPengeluaran.Filter Tanggal<='" & dtakhir.value & "'" = "Tanggal>='" & dtawal.value & "' AND LapKeluar.Refresh LapKeluar.Show 35
Private Sub LapPengeluaranAll() DELaporan.rsPengeluaran.Filter = "" LapKeluar.Refresh LapKeluar.Show Private Sub cmdtampil_click() If opt1 Then 'menampilkan laporan per No. Keluar Lap_PengeluaranNo If opt2 Then 'menampilkan laporan per Tanggal Lap_PengeluaranTanggal If opt3 Then 'menampilkan laporan per Periode Lap_PengeluaranPeriode 'menampilkan laporan seluruh data NonAktif LapPengeluaranAll Private Sub cmdtutup_click() Unload Me Private Sub Form_Load() BukaDatabase NonAktif Private Sub opt1_click() NonAktif cbno.enabled = True cbno.setfocus Private Sub opt2_click() NonAktif dttanggal.enabled = True dttanggal.setfocus Private Sub opt3_click() NonAktif dtawal.enabled = True dtakhir.enabled = True dtawal.setfocus Private Sub opt4_click() NonAktif 61. Simpan form dengan nama frmlapkeluar 36
Langkah selanjutnya adalah membuat laporan menggunakan Data Report dengan cara sebagai berikut : 1. Klik Project More ActiveX Designers Data Environment 2. Sehingga muncul tampilan berikut ini : 3. Atur properti name DataEnvironment1 menjadi DELaporan dan Connection1 menjadi Conn 4. Selanjutnya klik kanan pada Conn kemudian klik Properties 37
5. Pilih Microsoft Jet 4.0 OLE DB Provider, kemudian klik Next 6. Pilih database yang akan dikoneksikan dengan cara klik tombol browse dan pilih database.mdb atau dengan mengetik nama database yaitu database.mdb pada bagian Select or enter a database name. Tetapi dengan catatan penyimpanan database.mdb harus satu folder/direktori dengan project VB yang kita buat. 38
7. Untuk memastikan koneksi, Anda bisa menekan tombol Test Connection. Jika ada pesan sukses, berarti kita sukses untuk membuat koneksi ke database. Selanjutnya klik OK Sebelum dilanjutkan, kita buka file database.mdb pada program aplikasi Microsoft Access 2007 untuk menambahkan 2 buah query yang digunakan untuk laporan Pembelian dan laporan Pengeluaran dengan langkah-langkah berikut ini : 1. Buka file database.mdb 2. Klik tombol Create, kemudian klik Query Design pada Ribbon 3. Pilih tabel Pembelian dan Detail_Beli kemudian klik Add lalu klik Close 4. Tambahkan field No_Faktur, Tanggal dan Nama_Supp dari tabel Pembelian dengan cara double klik pada masing-masing nama field 39
5. Tambahkan pula field Kode_Brg, Nama_Brg dan Jumlah dari tabel Detail_Beli 6. Sehingga menjadi seperti contoh berikut ini : 7. Simpan dengan nama QBeli 8. Buat 1 buah query lagi dengan cara klik Create Query Design 9. Tambahkan tabel Pengeluaran dan Detail_Keluar kemudian klik Add lalu klik Close 10. Tambahkan field No_Keluar dan Tanggal dari tabel Pengeluaran dan field Kode_Brg, Nama_Brg dan Jumlah dari tabel Detail_Keluar 11. Sehingga menjadi seperti contoh berikut ini : 12. Simpan dengan nama QKeluar 40
Setelah selesai membuat 2 buah query pada Microsoft Access, kita kembali lagi ke Data Environment pada project Visual Basic. Kemudian ikuti langkah-langkah berikut ini : 1. Klik kanan pada Conn kemudian klik Add Command 2. Klik kanan pada Command1 kemudian klik Properties 3. Atur sesuai dengan contoh berikut ini : 41
4. Tambahkan command baru pada bagian Conn, kemudian atur sesuai contoh berikut ini : 5. Tambahkan command baru pada bagian Conn, kemudian atur sesuai contoh berikut ini : 42
6. Terakhir tambahkan command baru pada bagian Conn, kemudian atur sesuai contoh berikut ini : 7. Sehingga tampilan akhir dari Data Environment menjadi seperti berikut ini : 8. Selanjutnya menambahkan Data Report dengan cara klik Project Add Data Report 9. Kemudian atur propertiesnya sesuai dengan ketentuan berikut ini : Nama Objek Properti Nilai Pengaturan DataReport1 Name LapBarang Caption Laporan Barang DataSource DELaporan DataMember Barang GridX 10 GridY 10 WindowState 2 - vbmaximized 43
10. Klik tahan (drag) command Barang pada Data Environment ke bagian Detail (Section1) pada Data Report 11. Sehingga tampilannya menjadi seperti berikut ini : 44
12. Modifikasi report dengan memindahkan objek Label ke bagian Page Header (Section2) dan mengatur lebar masing-masing label sehingga menjadi seperti berikut ini : 13. Kita juga dapat menambahkan label pada bagian Report Header (Section4), mengatur Alignment label, kita juga dapat menambahkan RptShape dan RptLine untuk membuat bingkai pada report yang telah kita buat. Sehingga hasil akhirnya menjadi seperti berikut ini : 14. Beralih ke bagian Code, kemudian tambahkan kode berikut ini : Private Sub DataReport_Terminate() DELaporan.rsBarang.Close 15. Simpan dengan nama LapBarang 16. Tambahkan Data Report baru dengan cara klik Project Data Report 17. Kemudian atur propertiesnya sesuai dengan ketentuan berikut ini : Nama Objek Properti Nilai Pengaturan DataReport1 Name LapSupplier Caption Laporan Supplier DataSource DELaporan DataMember Supplier GridX 10 GridY 10 WindowState 2 - vbmaximized 18. Desain report hingga tampilan akhirnya menjadi seperti berikut ini : 45
19. Pada bagian code, tambahkan kode berikut ini : Private Sub DataReport_Terminate() DELaporan.rsSupplier.Close 20. Simpan dengan nama LapSupplier 21. Tambahkan pula Data Report baru untuk membuat laporan Pembelian Barang 22. Atur propertiesnya sesuai ketentuan berikut ini : Nama Objek Properti Nilai Pengaturan DataReport1 Name LapBeli Caption Laporan Pembelian Barang DataSource DELaporan DataMember Pembelian GridX 10 GridY 10 WindowState 2 - vbmaximized 23. Desain report hingga tampilan akhirnya menjadi seperti berikut ini : 24. Tambahkan kode berikut ini : Private Sub DataReport_Terminate() DELaporan.rsPembelian.Close 25. Simpan dengan nama LapBeli 26. Terakhir tambahkan Data Report baru untuk membuat laporan Pengeluaran Barang 27. Atur propertiesnya sesuai ketentuan berikut ini : Nama Objek Properti Nilai Pengaturan DataReport1 Name LapKeluar Caption Laporan Pengeluaran Barang DataSource DELaporan DataMember Pengeluaran GridX 10 GridY 10 WindowState 2 - vbmaximized 28. Desain report hingga tampilan akhirnya menjadi seperti berikut ini : 46
29. Tambahkan kode berikut ini : Private Sub DataReport_Terminate() DELaporan.rsPengeluaran.Close 30. Simpan dengan nama LapKeluar Dan langkah terakhir adalah mengatur frmlogin sebagai Startup Project pada Project Properties sebagai form awal yang tampil pada Program Aplikasi Persediaan Barang dengan cara klik Project Project (StokBarang) Properties kemudian atur seperti contoh berikut ini : Dan untuk menjalankan program aplikasi kita bisa menekan tombol F5 dengan catatan tabel admin untuk field username dan password sudah diisi dengan username dan password yang digunakan untuk proses Login. Pada contoh Tutorial ini username dan password adalah admin..: Semoga Bermanfaat :. TERIMA KASIH 47