Anda di halaman 1dari 51

Program Aplikasi Persediaan Barang

Oleh : Eko Sugiharto, S.Kom.

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 Data Type (Length)
*Kode_Brg Text(10)
Nama_Brg Text(30)
Satuan Text(20)
Stok Number(Integer)

2. Nama Tabel : Supplier


Field Name Data Type (Length)
*Kode_Supp Text(10)
Nama_Supp Text(30)
Alamat Text(150)
Kota Text(30)
Telepon Text(20)

3. Nama Tabel : Pembelian


Field Name Data Type (Length)
*No_Faktur Text(10)
Tanggal Date
Kode_Supp Text(10)
Nama_Supp Text(30)
Total Number(Integer)

4. Nama Tabel : Detail_Beli


Field Name Data Type (Length)
No_Faktur Text(10)
Kode_Brg Text(10)
Nama_Brg Text(30)
Jumlah Number(Integer)
Keterangan : Tanpa Primary Key

5. Nama Tabel : Pengeluaran


Field Name Data Type (Length)
*No_Keluar Text(10)
Tanggal Date
Total Number(Integer)

6. Nama Tabel : Detail_Keluar


Field Name Data Type (Length)
No_Keluar Text(10)
Kode_Brg Text(10)
Nama_Brg Text(30)
Stok Number(Integer)
Jumlah Number(Integer)
Keterangan : Tanpa Primary Key

7. Nama Tabel : Admin


Field Name Data Type (Length)
*Username Text(16)
Password Text(16)

1
Eko Sugiharto, S.Kom
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

Eko Sugiharto,
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
Else
KonekDB.Open strKonekDB
End If

'Periksa status koneksi


If Err.Number <> 0 Then
MsgBox "Koneksi Database Gagal, Silakan Periksa Kembali..!!", vbOKOnly +
vbInformation, "Informasi"
End
Else
'Koneksi Database Sukses
End If
End Sub
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
Eko Sugiharto,
8. Rancanglah form Data Barang dengan menambahkan 4 Label, 3 TextBox, 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
Text1 Name txtKode
Text (Kosongkan)
Text2 Name txtNama
Text (Kosongkan)
Text3 Name txtStok
Text (Kosongkan)
Combo1 Name cbSatuan
Text 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
Eko Sugiharto,
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"
End Sub

Sub Aktif()
txtKode.Enabled = True
txtNama.Enabled = True
cbSatuan.Enabled = True
txtStok.Enabled = True
End Sub

Sub Kosong()
txtKode.Text = ""
txtNama.Text = ""
cbSatuan.Text = ""
txtStok.Text = ""
End Sub

Private Sub cmdEdit_Click()


If MsgBox("Apakah Anda yakin mau mengedit data ini?", vbYesNo + vbQuestion,
"Konfirmasi") = vbYes Then
If txtNama.Text = "" Then
MsgBox "Nama Barang tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtNama.SetFocus
ElseIf cbSatuan.Text = "" Then
MsgBox "Satuan tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
cbSatuan.SetFocus
ElseIf txtStok.Text = "" Then
MsgBox "Stok tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtStok.SetFocus
ElseIf Not IsNumeric(txtStok.Text) Then
MsgBox "Stok harus diisi dengan tipe number!", vbInformation + vbOKOnly,
"Informasi"

5
txtStok.SetFocus

Eko Sugiharto,
Else
SQL = ""
SQL = "SELECT * FROM Barang WHERE Kode_Brg = '" & txtKode.Text & "'"
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.Text)
.Fields!Nama_Brg = Trim(txtNama.Text)
.Fields!Satuan = Trim(cbSatuan.Text)
.Fields!Stok = Trim(txtStok.Text)
.Update
End With
Rs_Barang.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil diedit", vbOKOnly + vbInformation, "Informasi"
Else
MsgBox "Data gagal diedit", vbOKOnly + vbInformation, "Informasi"
End If
End If
End If
End Sub

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.Text & "'"
KonekDB.Execute SQL, , adCmdText
Rs_Barang.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil dihapus", vbOKOnly + vbInformation, "Informasi"
End If
End Sub

Private Sub cmdInput_Click()


If cmdInput.Caption = "&Input" Then
Call Aktif
cmdInput.Caption = "&Simpan"
cmdTutup.Caption = "&Batal"
txtKode.SetFocus
Else
If txtKode.Text = "" Then
MsgBox "Kode Barang tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtKode.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama Barang tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtNama.SetFocus
ElseIf cbSatuan.Text = "" Then
MsgBox "Satuan tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
cbSatuan.SetFocus
ElseIf txtStok.Text = "" Then
MsgBox "Stok tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtStok.SetFocus
ElseIf Not IsNumeric(txtStok.Text) Then
MsgBox "Stok harus diisi dengan tipe number!", vbInformation + vbOKOnly,
"Informasi"
txtStok.Text = ""
txtStok.SetFocus
Else
SQL = ""
SQL = "SELECT * FROM Barang WHERE Kode_Brg = '" & txtKode.Text & "'"
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.Text)
.Fields!Nama_Brg = Trim(txtNama.Text)
.Fields!Satuan = Trim(cbSatuan.Text)
.Fields!Stok = Trim(txtStok.Text)
.Update

6
End With

Eko Sugiharto,
Rs_Barang.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil tersimpan", vbOKOnly + vbInformation, "Informasi"
Else
MsgBox "Data tidak tersimpan", vbOKOnly + vbInformation, "Informasi"
End If
End If
End If
End Sub

Private Sub cmdTutup_Click()


If cmdTutup.Caption = "&Tutup" Then
If MsgBox("Apakah Anda mau menutup form ini?", vbYesNo + vbQuestion,
"Konfirmasi") = vbYes Then
Unload Me
End If
Else
Call Kosong
Call NonAktif
End If
End Sub

Private Sub Form_Load()


Call BukaDatabase
Call TampilGrid
Call NonAktif
End Sub

Sub AktifGrid()
With GridData
.Cols = 5
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "No"
.CellFontBold = True
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.RowHeightMin = 300
.Col = 1
.Row = 0
.Text = "Kode Barang"
.CellFontBold = True
.ColWidth(1) = 1750
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Nama Barang"
.CellFontBold = True
.ColWidth(2) = 2500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Satuan"
.CellFontBold = True
.ColWidth(3) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 4
.Row = 0
.Text = "Stok"
.CellFontBold = True
.ColWidth(4) = 1000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

7
Eko Sugiharto,
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
Else
With Rs_Barang
.MoveFirst
Do While Not .EOF
On Error Resume Next
baris = baris + 1
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = baris
GridData.TextMatrix(baris, 1) = !Kode_Brg
GridData.TextMatrix(baris, 2) = !Nama_Brg
GridData.TextMatrix(baris, 3) = !Satuan
GridData.TextMatrix(baris, 4) = !Stok
.MoveNext
Loop
End With
End If
End Sub

Private Sub GridData_DblClick()


GridBaris = GridData.Row
Set Rs_Barang = New ADODB.Recordset
Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg='" &
GridData.TextMatrix(GridBaris, 1) & "'", KonekDB, adOpenDynamic, adLockOptimistic

If Rs_Barang.BOF Then
MsgBox "TABEL MASIH KOSONG!", vbOKOnly + vbInformation, "Error"
Exit Sub
Else
Rs_Barang.MoveFirst
Do While Not Rs_Barang.EOF
On Error Resume Next
txtKode.Text = Rs_Barang!Kode_Brg
txtNama.Text = Rs_Barang!Nama_Brg
cbSatuan.Text = Rs_Barang!Satuan
txtStok.Text = 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
End If
End Sub

12. Simpan form tersebut dengan nama frmBarang

8
Eko Sugiharto,
13. Tambahkan form baru dan rancanglah form Data Supplier dengan menambahkan 5 Label, 5 TextBox,
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
Text1 Name txtKode
Text (Kosongkan)
Text2 Name txtNama
Text (Kosongkan)
Text3 Name txtAlamat
Text (Kosongkan)
Text4 Name txtKota
Text (Kosongkan)
Text5 Name txtTelepon
Text (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
Eko Sugiharto,
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"
End Sub

Sub Aktif()
txtKode.Enabled = True
txtNama.Enabled = True
txtAlamat.Enabled = True
txtKota.Enabled = True
txtTelepon.Enabled = True
End Sub

Sub Kosong()
txtKode.Text = ""
txtNama.Text = ""
txtAlamat.Text = ""
txtKota.Text = ""
txtTelepon.Text = ""
End Sub

Private Sub cmdEdit_Click()


If MsgBox("Apakah Anda yakin mau mengedit data ini?", vbYesNo + vbQuestion,
"Konfirmasi") = vbYes Then
If txtNama.Text = "" Then
MsgBox "Nama Supplier tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtNama.SetFocus
ElseIf txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtAlamat.SetFocus
ElseIf txtKota.Text = "" Then
MsgBox "Kota tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtKota.SetFocus
ElseIf txtTelepon.Text = "" Then
MsgBox "No. Telepon tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"

Eko Sugiharto,
txtTelepon.S
etFocus

Eko Sugiharto,
Else
SQL = ""
SQL = "SELECT * FROM Supplier WHERE Kode_Supp = '" & txtKode.Text & "'"
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.Text)
.Fields!Nama_Supp = Trim(txtNama.Text)
.Fields!Alamat = Trim(txtAlamat.Text)
.Fields!Kota = Trim(txtKota.Text)
.Fields!Telepon = Trim(txtTelepon.Text)
.Update
End With
Rs_Supplier.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil diedit", vbOKOnly + vbInformation, "Informasi"
Else
MsgBox "Data gagal diedit", vbOKOnly + vbInformation, "Informasi"
End If
End If
End If
End Sub

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.Text & "'"
KonekDB.Execute SQL, , adCmdText
Rs_Supplier.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil dihapus", vbOKOnly + vbInformation, "Informasi"
End If
End Sub

Private Sub cmdInput_Click()


If cmdInput.Caption = "&Input" Then
Call Aktif
cmdInput.Caption = "&Simpan"
cmdTutup.Caption = "&Batal"
txtKode.SetFocus
Else
If txtKode.Text = "" Then
MsgBox "Kode Supplier tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtKode.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama Supplier tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtNama.SetFocus
ElseIf txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtAlamat.SetFocus
ElseIf txtKota.Text = "" Then
MsgBox "Kota tidak boleh kosong!", vbInformation + vbOKOnly, "Informasi"
txtKota.SetFocus
ElseIf txtTelepon.Text = "" Then
MsgBox "No. Telepon tidak boleh kosong!", vbInformation + vbOKOnly,
"Informasi"
txtTelepon.SetFocus
ElseIf Not IsNumeric(txtTelepon.Text) Then
MsgBox "No. Telepon harus diisi dengan tipe Number!", vbInformation +
vbOKOnly, "Informasi"
txtTelepon.Text = ""
txtTelepon.SetFocus
Else
SQL = ""
SQL = "SELECT * FROM Supplier WHERE Kode_Supp = '" & txtKode.Text & "'"
Set Rs_Supplier = New ADODB.Recordset
Rs_Supplier.Open SQL, KonekDB, adOpenDynamic, adLockOptimistic
If Rs_Supplier.BOF Then
With Rs_Supplier
.AddNew

1
.Fields!Kode_Supp = Trim(txtKode.Text)

Eko Sugiharto,
.Fields!Nama_Supp = Trim(txtNama.Text)
.Fields!Alamat = Trim(txtAlamat.Text)
.Fields!Kota = Trim(txtKota.Text)
.Fields!Telepon = Trim(txtTelepon.Text)
.Update
End With
Rs_Supplier.Requery
Call Kosong
Call NonAktif
Call TampilGrid
MsgBox "Data berhasil tersimpan", vbOKOnly + vbInformation, "Informasi"
Else
MsgBox "Data tidak tersimpan", vbOKOnly + vbInformation, "Informasi"
End If
End If
End If
End Sub

Private Sub cmdTutup_Click()


If cmdTutup.Caption = "&Tutup" Then
If MsgBox("Apakah Anda mau menutup form ini?", vbYesNo + vbQuestion,
"Konfirmasi") = vbYes Then
Unload Me
End If
Else
Call Kosong
Call NonAktif
End If
End Sub

Private Sub Form_Load()


Call BukaDatabase
Call TampilGrid
Call NonAktif
End Sub

Sub AktifGrid()
With GridData
.Cols = 6
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "No"
.CellFontBold = True
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.RowHeightMin = 300
.Col = 1
.Row = 0
.Text = "Kode Supplier"
.CellFontBold = True
.ColWidth(1) = 1750
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Nama Supplier"
.CellFontBold = True
.ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Alamat"
.CellFontBold = True
.ColWidth(3) = 3000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 4
.Row = 0
.Text = "Kota"
.CellFontBold = True
.ColWidth(4) = 1500

1
.AllowUserResizing = flexResizeColumns

Eko Sugiharto,
.CellAlignment = flexAlignCenterCenter

.Col = 5
.Row = 0
.Text = "Telepon"
.CellFontBold = True
.ColWidth(5) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

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
Else
With Rs_Supplier
.MoveFirst
Do While Not .EOF
On Error Resume Next
baris = baris + 1
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = baris
GridData.TextMatrix(baris, 1) = !Kode_Supp
GridData.TextMatrix(baris, 2) = !Nama_Supp
GridData.TextMatrix(baris, 3) = !Alamat
GridData.TextMatrix(baris, 4) = !Kota
GridData.TextMatrix(baris, 5) = !Telepon
.MoveNext
Loop
End With
End If
End Sub

Private Sub GridData_DblClick()


GridBaris = GridData.Row
Set Rs_Supplier = New ADODB.Recordset
Rs_Supplier.Open " SELECT * FROM Supplier WHERE Kode_Supp='" &
GridData.TextMatrix(GridBaris, 1) & "'", KonekDB, adOpenDynamic, adLockOptimistic

If Rs_Supplier.BOF Then
MsgBox "TABEL MASIH KOSONG!", vbOKOnly + vbInformation, "Error"
Exit Sub
Else
Rs_Supplier.MoveFirst
Do While Not Rs_Supplier.EOF
On Error Resume Next
txtKode.Text = Rs_Supplier!Kode_Supp
txtNama.Text = Rs_Supplier!Nama_Supp
txtAlamat.Text = Rs_Supplier!Alamat
txtKota.Text = Rs_Supplier!Kota
txtTelepon.Text = 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
End If
End Sub

17. Simpan form tersebut dengan nama frmSupplier

13
Eko Sugiharto,
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 TextBox, 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
Eko Sugiharto,
Label7 Alignment Center
BackColor (Pilih Warna)
Caption Jumlah
Label8 Caption Total
Text1 Name txtNoFak
Text Kosongkan
Text2 Name txtKdSupp
Text Kosongkan
Text3 Name txtNmSupp
Text Kosongkan
Text4 Name txtKdBrg
Text Kosongkan
Text5 Name txtNmBrg
Text Kosongkan
Text6 Name txtJumlah
Text Kosongkan
Text7 Name txtTotal
Text 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
Eko Sugiharto,
22. Kemudian tambahkan kode program seperti contoh berikut ini :

Dim i, baris As Integer


Private Sub cmdBatal_Click()
Kosong
End Sub

Private Sub cmdCariSupp_Click()


frmCariSupplier.Show
End Sub

Private Sub cmdCariBrg_Click()


frmCariBarang.Show
End Sub

Private Sub Kosong()


txtNoFak.Text = ""
dtTanggal.Value = Format(Now, "dd-mm-yyyy")
txtKdSupp.Text = ""
txtNmSupp.Text = ""
txtKdBrg.Text = ""
txtNmBrg.Text = ""
txtJumlah.Text = ""
txtTotal.Text = ""

baris = 1
GridData.Clear
GridData.Rows = 2
AktifGridData
End Sub

Private Sub cmdOK_Click()


On Error Resume Next
If txtKdBrg = "" Then
MsgBox "Kode Barang tidak boleh kosong..!!", vbInformation + vbOKOnly,
"Informasi"
txtKdBrg.SetFocus
ElseIf txtNmBrg = "" Then
MsgBox "Kode Barang tidak terdaftar..!", vbInformation + vbOKOnly, "Informasi"
txtKdBrg = ""
txtJumlah = ""
txtKdBrg.SetFocus
ElseIf txtJumlah = "" Then
MsgBox "Jumlah tidak boleh kosong..!!", vbInformation + vbOKOnly, "Informasi"
txtJumlah.SetFocus
ElseIf Not IsNumeric(txtJumlah) Then
MsgBox "Jumlah harus diisi dengan tipe Number!", vbInformation + vbOKOnly,
"Informasi"
txtJumlah = ""
txtJumlah.SetFocus
Else
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = txtKdBrg.Text
GridData.TextMatrix(baris, 1) = txtNmBrg.Text
GridData.TextMatrix(baris, 2) = txtJumlah.Text
txtTotal.Text = Val(txtTotal.Text) + Val(txtJumlah.Text)
baris = baris + 1
txtKdBrg = ""
txtNmBrg = ""
txtJumlah = ""
txtKdBrg.SetFocus
End If
Rs_Barang.Requery
End Sub

Private Sub AktifGridData()


With GridData
.Cols = 3
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "Kode Barang"
.CellFontBold = True
.ColWidth(0) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter

Eko Sugiharto,
16
.Col = 1
.Row = 0
.Text = "Nama Barang"
.CellFontBold = True
.ColWidth(1) = 4000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Jumlah"
.CellFontBold = True
.ColWidth(2) = 1000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

Private Sub cmdSimpan_Click()


If baris <> 1 Then
If txtNoFak = "" Then
MsgBox "No. Faktur tidak boleh kosong!", vbOKOnly + vbInformation, "Informasi"
txtNoFak.SetFocus
ElseIf txtKdSupp = "" Then
MsgBox "Kode Supplier tidak boleh kosong!", vbOKOnly + vbInformation,
"Informasi"
txtKdSupp.SetFocus
Else
'Proses penyimpanan ke Pembelian
SQL = ""
SQL = "INSERT INTO Pembelian(No_Faktur,Tanggal,Kode_Supp,Nama_Supp,Total)
VALUES('" & txtNoFak.Text & "','" & dtTanggal.Value & "','" & txtKdSupp.Text & "','" &
txtNmSupp.Text & "','" & txtTotal.Text & "')"
KonekDB.Execute SQL, , adCmdText
'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.Text & "','" & GridData.TextMatrix(i, 0) & "','" & GridData.TextMatrix(i, 1)
& "','" & GridData.TextMatrix(i, 2) & "')"
KonekDB.Execute SQL, , adCmdText
Dim StokBaru As Integer
Dim Kode As String
StokBaru = Val(GridData.TextMatrix(i, 2))
Kode = GridData.TextMatrix(i, 0)

SQL = ""
SQL = "UPDATE Barang SET Stok=Stok + " & StokBaru & " WHERE Kode_Brg='" &
Kode & "'"
KonekDB.Execute SQL, , adCmdText
Next i
MsgBox "Data Pembelian telah tersimpan.", vbInformation + vbOKOnly, "Informasi"
Kosong
End If
Else
MsgBox "Maaf! Data pembelian barang masih kosong.", vbOKOnly + vbInformation,
"Informasi"
End If
End Sub

Private Sub cmdTutup_Click()


If MsgBox("Apakah Anda mau menutup form ini?", vbYesNo + vbQuestion, "Konfirmasi") =
vbYes Then
Unload Me
End If
End Sub

Private Sub Form_Load()


Call BukaDatabase
Call Kosong
End Sub

Private Sub TampilBarang()


If txtKdBrg <> "" Then
SQL = ""
SQL = "SELECT * FROM Barang WHERE Kode_Brg='" & txtKdBrg.Text & "'"
Set Rs_Barang = New ADODB.Recordset

1
Rs_Barang.Open SQL, KonekDB, adOpenDynamic, adLockOptimistic

Eko Sugiharto,
If Not Rs_Barang.BOF Then
txtNmBrg = Rs_Barang.Fields!Nama_Brg
txtJumlah.SetFocus
End If
End If
End Sub

Private Sub TampilSupplier()


If txtKdSupp <> "" Then
SQL = ""
SQL = "SELECT * FROM Supplier WHERE Kode_Supp='" & txtKdSupp.Text & "'"
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
End If
End If
End Sub

Private Sub txtKdBrg_Change()


TampilBarang
End Sub

Private Sub txtKdSupp_Change()


TampilSupplier
End Sub

23. Simpan form tersebut dengan nama frmPembelian


24. Tambahkan form baru dan rancanglah form Pencarian Supplier dengan menambahkan 1 Frame, 1
TextBox, 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
Text1 Name txtCari
Text (Kosongkan)
Command1 Name cmdTutup
Caption &Tutup
MsFlexGrid1 Name GridData

18
Eko Sugiharto,
26. Sehingga tampilan akhirnya menjadi seperti berikut ini :

27. Tambahkan kode program seperti contoh berikut ini :


Private Sub cmdTutup_Click()
Unload Me
End Sub

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
End Sub

Sub AktifGridData()
With GridData
.Cols = 6
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "No"
.CellFontBold = True
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 1
.Row = 0
.Text = "Kode Supplier"
.CellFontBold = True
.ColWidth(1) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Nama Supplier"
.CellFontBold = True
.ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Alamat"
.CellFontBold = True
.ColWidth(3) = 3500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 4
.Row = 0
.Text = "Kota"
.CellFontBold = True
.ColWidth(4) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter

19
Eko Sugiharto,
.Col = 5
.Row = 0
.Text = "Telepon"
.CellFontBold = True
.ColWidth(5) = 1800
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

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
Else
With Rs_Supplier
.MoveFirst
Do While Not .EOF
baris = baris + 1
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = baris
GridData.TextMatrix(baris, 1) = !Kode_Supp
GridData.TextMatrix(baris, 2) = !Nama_Supp
GridData.TextMatrix(baris, 3) = !Alamat
GridData.TextMatrix(baris, 4) = !Kota
GridData.TextMatrix(baris, 5) = !Telepon
.MoveNext
Loop
End With
End If
End Sub

Private Sub GridData_DblClick()


Dim b As Byte
b = GridData.Row
If GridData.Rows <> 1 Then
With frmPembelian
.txtKdSupp.Text = GridData.TextMatrix(b, 1)
.txtNmSupp.Text = GridData.TextMatrix(b, 2)
.txtKdBrg.SetFocus
End With
Else
Exit Sub
End If
Unload Me
End Sub

Private Sub txtCari_Change()


If txtCari.Text <> Empty Then
Set Rs_Supplier = New ADODB.Recordset
Rs_Supplier.Open "SELECT * FROM Supplier WHERE Kode_Supp LIKE '%" & txtCari.Text
& "%' OR Nama_Supp LIKE'%" & txtCari.Text & "%'", KonekDB, adOpenDynamic,
adLockBatchOptimistic

If Rs_Supplier.BOF Then
MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbInformation + vbOKOnly,
"Informasi"
txtCari.Text = ""
txtCari.SetFocus
Else
Call TampilGridData
End If
End If
End Sub

28. Simpan form tersebut dengan nama frmCariSupplier

Eko Sugiharto,
20
29. Tambahkan form baru dan rancanglah form Pencarian Barang dengan menambahkan 1 Frame, 1
TextBox, 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
Text1 Name txtCari
Text (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
End Sub

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
End Sub

Sub AktifGridData()
With GridData
.Cols = 4
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "No"
.CellFontBold = True
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns

2
.CellAlignment = flexAlignCenterCenter

Eko Sugiharto,
.Col = 1
.Row = 0
.Text = "Kode Barang"
.CellFontBold = True
.ColWidth(1) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Nama Barang"
.CellFontBold = True
.ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Stok"
.CellFontBold = True
.ColWidth(3) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

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
Else
With Rs_Barang
.MoveFirst
Do While Not .EOF
baris = baris + 1
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = baris
GridData.TextMatrix(baris, 1) = !Kode_Brg
GridData.TextMatrix(baris, 2) = !Nama_Brg
GridData.TextMatrix(baris, 3) = !Stok
.MoveNext
Loop
End With
End If
End Sub

Private Sub GridData_DblClick()


Dim b As Byte
b = GridData.Row
If GridData.Rows <> 1 Then
With frmPembelian
.txtKdBrg.Text = GridData.TextMatrix(b, 1)
.txtNmBrg.Text = GridData.TextMatrix(b, 2)
.txtJumlah.SetFocus
End With
Else
Exit Sub
End If
Unload Me
End Sub

Private Sub txtCari_Change()


If txtCari.Text = Empty Then
'
Else
Set Rs_Barang = New ADODB.Recordset
Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg LIKE '%" & txtCari.Text &
"%' OR Nama_Brg LIKE'%" & txtCari.Text & "%'", KonekDB, adOpenDynamic,

adLockBatchOptimistic
Eko Sugiharto,
22
If Rs_Barang.BOF Then
MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbInformation + vbOKOnly,
"Informasi"
txtCari.Text = ""
txtCari.SetFocus
Else
Call TampilGridData
End If
End If
End Sub

33. Simpan form tersebut dengan nama frmCariBarang


34. Tambahkan form baru dan rancanglah form Data Pengeluaran dengan menambahkan 7 Label, 6
TextBox, 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
Text1 Name txtNo
Text Kosongkan
Text2 Name txtKdBrg
Text Kosongkan
Text3 Name txtNmBrg
Text Kosongkan
Text4 Name txtStok
Text Kosongkan
Text5 Name txtJumlah
Text Kosongkan

23
Eko Sugiharto,
Text6 Name txtTotal
Text 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
End Sub
Private Sub cmdCariBrg_Click()
frmCariBarang2.Show
End Sub

Private Sub Kosong()


txtNo.Text = ""
dtTanggal.Value = Format(Now, "dd-mm-yyyy")
txtKdBrg.Text = ""
txtNmBrg.Text = ""
txtJumlah.Text = ""
txtTotal.Text = ""

baris = 1
GridData.Clear
GridData.Rows = 2
AktifGridData
End Sub

24
Eko Sugiharto,
Eko Sugiharto,
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
ElseIf txtNmBrg = "" Then
MsgBox "Kode Barang tidak terdaftar..!", vbInformation + vbOKOnly, "Informasi"
txtKdBrg = ""
txtJumlah = ""
txtKdBrg.SetFocus
ElseIf txtJumlah = "" Then
MsgBox "Jumlah tidak boleh kosong..!!", vbInformation + vbOKOnly, "Informasi"
txtJumlah.SetFocus
ElseIf Not IsNumeric(txtJumlah) Then
MsgBox "Jumlah harus diisi dengan tipe Number!", vbInformation + vbOKOnly,
"Informasi"
txtJumlah = ""
txtJumlah.SetFocus
ElseIf Val(txtJumlah.Text) > Val(txtStok.Text) Then
MsgBox "Stok barang tidak mencukupi!", vbInformation + vbOKOnly, "Informasi"
txtJumlah = ""
txtJumlah.SetFocus
Else
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = txtKdBrg.Text
GridData.TextMatrix(baris, 1) = txtNmBrg.Text
GridData.TextMatrix(baris, 2) = txtStok.Text
GridData.TextMatrix(baris, 3) = txtJumlah.Text
txtTotal.Text = Val(txtTotal.Text) + Val(txtJumlah.Text)
baris = baris + 1
txtKdBrg = ""
txtNmBrg = ""
txtStok = ""
txtJumlah = ""
txtKdBrg.SetFocus
End If
Rs_Barang.Requery
End Sub

Private Sub AktifGridData()


With GridData
.Cols = 4
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "Kode Barang"
.CellFontBold = True
.ColWidth(0) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 1
.Row = 0
.Text = "Nama Barang"
.CellFontBold = True
.ColWidth(1) = 3500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Stok"
.CellFontBold = True
.ColWidth(2) = 1000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Qty Minta"
.CellFontBold = True
.ColWidth(2) = 1200
.AllowUserResizing = flexResizeColumns
End .CellAlignment
With = flexAlignCenterCenter

25
End Sub
Eko Sugiharto,
Private Sub cmdSimpan_Click()
If baris <> 1 Then
If txtNo = "" Then
MsgBox "No. Keluar tidak boleh kosong!", vbOKOnly + vbInformation, "Informasi"
txtNo.SetFocus
Else
'Proses penyimpanan ke Pengeluaran
SQL = ""
SQL = "INSERT INTO Pengeluaran(No_Keluar,Tanggal,Total) VALUES('" & txtNo.Text &
"','" & dtTanggal.Value & "','" & txtTotal.Text & "')"
KonekDB.Execute SQL, , adCmdText
'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.Text & "','" & GridData.TextMatrix(i, 0) & "','" &
GridData.TextMatrix(i, 1) & "','" & GridData.TextMatrix(i, 2) & "','" &
GridData.TextMatrix(i, 3) & "')"
KonekDB.Execute SQL, , adCmdText
Dim JumKeluar As Integer
Dim Kode As String
JumKeluar = Val(GridData.TextMatrix(i, 3))
Kode = GridData.TextMatrix(i, 0)

SQL = ""
SQL = "UPDATE Barang SET Stok=Stok - " & JumKeluar & " WHERE Kode_Brg='" &
Kode & "'"
KonekDB.Execute SQL, , adCmdText
Next i
MsgBox "Data Pengeluaran telah tersimpan.", vbInformation + vbOKOnly,
"Informasi"
Kosong
End If
Else
MsgBox "Maaf! Data Pengeluaran barang masih kosong.", vbOKOnly + vbInformation,
"Informasi"
End If
End Sub

Private Sub cmdTutup_Click()


If MsgBox("Apakah Anda mau menutup form ini?", vbYesNo + vbQuestion, "Konfirmasi") =
vbYes Then
Unload Me
End If
End Sub

Private Sub Form_Load()


Call BukaDatabase
Call Kosong
End Sub

Private Sub TampilBarang()


If txtKdBrg <> "" Then
SQL = ""
SQL = "SELECT * FROM Barang WHERE Kode_Brg='" & txtKdBrg.Text & "'"
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
End If
End If
End Sub

Private Sub txtKdBrg_Change()


TampilBarang
End Sub

38. Simpan form tersebut dengan nama frmPengeluaran

Eko Sugiharto,
26
39. Tambahkan form baru dan rancanglah form Pencarian Barang dengan menambahkan 1 Frame, 1
TextBox, 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
Text1 Name txtCari
Text (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
End Sub

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
End Sub

Sub AktifGridData()
With GridData
.Cols = 4
.RowHeightMin = 300
.Col = 0
.Row = 0
.Text = "No"
.CellFontBold = True
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns

2
.CellAlignment = flexAlignCenterCenter

Eko Sugiharto,
.Col = 1
.Row = 0
.Text = "Kode Barang"
.CellFontBold = True
.ColWidth(1) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 2
.Row = 0
.Text = "Nama Barang"
.CellFontBold = True
.ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
.Col = 3
.Row = 0
.Text = "Stok"
.CellFontBold = True
.ColWidth(3) = 1500
.AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter
End With
End Sub

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
Else
With Rs_Barang
.MoveFirst
Do While Not .EOF
baris = baris + 1
GridData.Rows = baris + 1
GridData.TextMatrix(baris, 0) = baris
GridData.TextMatrix(baris, 1) = !Kode_Brg
GridData.TextMatrix(baris, 2) = !Nama_Brg
GridData.TextMatrix(baris, 3) = !Stok
.MoveNext
Loop
End With
End If
End Sub

Private Sub GridData_DblClick()


Dim b As Byte
b = GridData.Row
If GridData.Rows <> 1 Then
With frmPengeluaran
.txtKdBrg.Text = GridData.TextMatrix(b, 1)
.txtNmBrg.Text = GridData.TextMatrix(b, 2)
.txtStok.Text = GridData.TextMatrix(b, 3)
.txtJumlah.SetFocus
End With
Else
Exit Sub
End If
Unload Me
End Sub

Private Sub txtCari_Change()


If txtCari.Text = Empty Then
'
Else
Set Rs_Barang = New ADODB.Recordset
Rs_Barang.Open "SELECT * FROM Barang WHERE Kode_Brg LIKE '%" & txtCari.Text &
"%' OR Nama_Brg LIKE'%" & txtCari.Text & "%'", KonekDB, adOpenDynamic,

2
adLockBatchOptimistic

Eko Sugiharto,
If Rs_Barang.BOF Then
MsgBox "Data Yang Anda Cari Tidak Ditemukan..!", vbInformation + vbOKOnly,
"Informasi"
txtCari.Text = ""
txtCari.SetFocus
Else
Call TampilGridData
End If
End If
End Sub

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
Text1 Name txtUser
Text (Kosongkan)
Text2 Name txtPassword
PasswordChar *
Text (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 Source=" & App.Path &
"\database.mdb;Persist Security Info=False"
End Sub

Private Sub cmdBatal_Click()


End
End Sub

Private Sub cmdOK_Click()


If txtUser = "" Then
MsgBox "Nama user tidak boleh kosong..!!", vbOKOnly + vbInformation, "Login"

txtUser.SetFocus

Eko Sugiharto, 29
ElseIf txtPassword = "" Then
MsgBox "Password tidak boleh kosong..!!", vbOKOnly + vbInformation, "Login"
txtPassword.SetFocus
Else
koneksi
SQL = "SELECT * FROM admin WHERE username='" & txtUser.Text & "' AND password='"
& txtPassword.Text & "'"
Set rs = db.Execute(SQL)
'Jika data user ditemukan
If Not rs.BOF Then
frmUtama.Show
Unload Me
Else
If salah < 2 Then
MsgBox "Nama user atau Password Salah..!! Silakan ulangi lagi..",
vbCritical + vbOKOnly, "Login"
txtUser.Text = ""
txtPassword.Text = ""
txtUser.SetFocus
salah = salah + 1
Else
MsgBox "Kesalahan Password 3 kali berturut-turut.., Silakan Login
ulang..", vbCritical + vbOKOnly, "Login"
salah = 0
End
End If
End If
End If
End Sub

Private Sub txtPassword_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
cmdOK_Click
End If
End Sub

Private Sub txtUser_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
txtPassword.SetFocus
End If
End Sub

Private Sub txtUser_Change()


txtPassword.Text = ""
End Sub

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
Eko Sugiharto,
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
Else
Cancel = 1
End If
End Sub

Private Sub mnuBarang_Click()


frmBarang.Show
End Sub

Private Sub mnuKeluar_Click()


If MsgBox("Apakah Anda yakin mau keluar dari aplikasi ini???", vbYesNo + vbQuestion,
"Konfirmasi") = vbYes Then
End
End If
End Sub

Private Sub mnuLapBarang_Click()


lapBarang.Refresh
lapBarang.Show
End Sub

Private Sub mnuLapBeli_Click()


frmLapBeli.Show
End Sub

Private Sub mnuLapKeluar_Click()


frmLapKeluar.Show
End Sub

31
Eko Sugiharto,
32
Eko Sugiharto,
Private Sub mnuLapSupplier_Click()
LapSupplier.Refresh
LapSupplier.Show
End Sub

Private Sub mnuPembelian_Click()


frmPembelian.Show
End Sub

Private Sub mnuPengeluaran_Click()


frmPengeluaran.Show
End Sub

Private Sub mnuSupp_Click()


frmSupplier.Show
End Sub

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
Text (Kosongkan)
DTPicker1 Name dtTanggal
DTPicker2 Name dtAwal
DTPicker3 Name dtAkhir
Command1 Name cmdTampilkan

32
Caption Tampilkan

Eko Sugiharto,
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
End Sub

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
End Sub

Private Sub Lap_PembelianNo()


If cbNo = "" Then
MsgBox "Pilihan No. Faktur tidak boleh kosong..!!", vbOKOnly + vbInformation,
"Informasi"
cbNo.SetFocus
Else
DELaporan.rsPembelian.Filter = "No_Faktur='" & cbNo.Text & "'"
LapBeli.Refresh
LapBeli.Show
End If
End Sub

Private Sub Lap_PembelianTanggal()


DELaporan.rsPembelian.Filter = "Tanggal='" & dtTanggal.Value & "'"
LapBeli.Refresh
LapBeli.Show
End Sub

Private Sub Lap_PembelianPeriode()


If dtAwal > dtAkhir Then
MsgBox "Tanggal Awal lebih besar dari Tanggal Akhir..!!", vbOKOnly +
vbInformation, "Informasi"
dtAwal.SetFocus
Else
DELaporan.rsPembelian.Filter = "Tanggal>='" & dtAwal.Value & "' AND Tanggal<='"
& dtAkhir.Value & "'"
LapBeli.Refresh

33
LapBeli.Show
Eko Sugiharto,
Eko Sugiharto,
End If
End Sub

Private Sub LapPembelianAll()


DELaporan.rsPembelian.Filter = ""
LapBeli.Refresh
LapBeli.Show
End Sub

Private Sub cmdTampil_Click()


If opt1 Then
'menampilkan laporan per No. Faktur
Lap_PembelianNo
ElseIf opt2 Then
'menampilkan laporan per Tanggal
Lap_PembelianTanggal
ElseIf opt3 Then
'menampilkan laporan per Periode
Lap_PembelianPeriode
Else
'menampilkan laporan seluruh data
NonAktif
LapPembelianAll
End If
End Sub

Private Sub cmdTutup_Click()


Unload Me
End Sub

Private Sub Form_Load()


BukaDatabase
NonAktif
End Sub

Private Sub opt1_Click()


NonAktif
cbNo.Enabled = True
cbNo.SetFocus
End Sub

Private Sub opt2_Click()


NonAktif
dtTanggal.Enabled = True
dtTanggal.SetFocus
End Sub

Private Sub opt3_Click()


NonAktif
dtAwal.Enabled = True
dtAkhir.Enabled = True
dtAwal.SetFocus
End Sub

Private Sub opt4_Click()


NonAktif
End Sub

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

Eko Sugiharto,
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
End Sub

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
End Sub

Private Sub Lap_PengeluaranNo()


If cbNo = "" Then
MsgBox "Pilihan No. Keluar tidak boleh kosong..!!", vbOKOnly + vbInformation,
"Informasi"
cbNo.SetFocus
Else
DELaporan.rsPengeluaran.Filter = "No_Keluar='" & cbNo.Text & "'"
LapKeluar.Refresh
LapKeluar.Show
End If
End Sub

Private Sub Lap_PengeluaranTanggal()


DELaporan.rsPengeluaran.Filter = "Tanggal='" & dtTanggal.Value & "'"
LapKeluar.Refresh
LapKeluar.Show
End Sub

Private Sub Lap_PengeluaranPeriode()


If dtAwal > dtAkhir Then
MsgBox "Tanggal Awal lebih besar dari Tanggal Akhir..!!", vbOKOnly +
vbInformation, "Informasi"
dtAwal.SetFocus
Else
DELaporan.rsPengeluaran.Filter = "Tanggal>='" & dtAwal.Value & "' AND
Tanggal<='" & dtAkhir.Value & "'"
LapKeluar.Refresh
LapKeluar.Show
End If

End Sub
Eko Sugiharto,
35
Private Sub LapPengeluaranAll()
DELaporan.rsPengeluaran.Filter = ""
LapKeluar.Refresh
LapKeluar.Show
End Sub

Private Sub cmdTampil_Click()


If opt1 Then
'menampilkan laporan per No. Keluar
Lap_PengeluaranNo
ElseIf opt2 Then
'menampilkan laporan per Tanggal
Lap_PengeluaranTanggal
ElseIf opt3 Then
'menampilkan laporan per Periode
Lap_PengeluaranPeriode
Else
'menampilkan laporan seluruh data
NonAktif
LapPengeluaranAll
End If
End Sub

Private Sub cmdTutup_Click()


Unload Me
End Sub

Private Sub Form_Load()


BukaDatabase
NonAktif
End Sub

Private Sub opt1_Click()


NonAktif
cbNo.Enabled = True
cbNo.SetFocus
End Sub

Private Sub opt2_Click()


NonAktif
dtTanggal.Enabled = True
dtTanggal.SetFocus
End Sub

Private Sub opt3_Click()


NonAktif
dtAwal.Enabled = True
dtAkhir.Enabled = True
dtAwal.SetFocus
End Sub

Private Sub opt4_Click()


NonAktif
End Sub

61. Simpan form dengan nama frmLapKeluar

36
Eko Sugiharto,
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

Eko Sugiharto,
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.

Eko Sugiharto,
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

39
pada masing-masing nama field
Eko Sugiharto,
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

Eko Sugiharto,
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
Eko Sugiharto,
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
Eko Sugiharto,
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
Eko Sugiharto,
10. Klik tahan (drag) command Barang pada Data Environment ke bagian Detail (Section1) pada Data
Report

11. Sehingga tampilannya menjadi seperti berikut ini :

Eko Sugiharto,
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
End Sub
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 :

Eko Sugiharto,
45
19. Pada bagian code, tambahkan kode berikut ini :
Private Sub DataReport_Terminate()
DELaporan.rsSupplier.Close
End Sub
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
End Sub
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
Eko Sugiharto,
29. Tambahkan kode berikut ini :
Private Sub DataReport_Terminate()
DELaporan.rsPengeluaran.Close
End Sub
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

Eko Sugiharto,
47

Anda mungkin juga menyukai