KEMENERIAN PENDIDIKAN NASIONAL
UNIVERSITAS SUMATERA UTARA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
Jl. Bioteknologi No. 1 Kampus USU
Telp. (061) 8214290, 8211212, 8211414 Fax. (061) 8214290 Medan 20155
Kartu Bimbingan Tugas Akhir Mahasiswa
Nama
:
SITI KHOLILAH PULUNGAN
Nomor Induk Mahasiswa
:
112406085
Judul Tugas Akhir
:
PERANCANGAN APLIKASI SISTEM INVENTORI TOKO
DAN POS (POINT OF SALE) DENGAN VISUAL BASIC 6.0
DAN MYSQL
Dosen Pembimbing
:
Dr. Pasukat Sembiring, M.Si.
Tanggal Mulai Bimbingan
:
...
Tanggal Selesai Bimbingan :
...
No
Tanggal Asistensi
Bimbingan
Pembahasan Pada Asistensi
Mengenai, Pada Bab:
Paraf Dosen
Pembimbing
Keterangan
1
Pengajuan Proposal
2
Bab 1
3
Bab 2
4
Bab 3
5
Bab 4
6
Bab 5
Diketahui,
Disetujui,
Program Studi D3 TeknikInormatika
FMIPA USU
Pembimbing Utama/
Ketua,
Penanggung Jawab
Dr.EllyRosmaini, M.Si.
Dr. Pasukat Sembiring, M.Si
SURAT KETERANGAN
Hasil Uji Program Tugas Akhir
Yang bertanda tangan dibawah ini, menerangkan bahwa Mahasiswa Tugas Akhir
Program Diploma 3 Teknik Informatika:
Nama
:
SITI KHOLILAH PULUNGAN
NIM
:
112406085
Program Studi
:
DIPLOMA 3 TEKNIK INFORMATIKA
Judul Tugas Akhir :
PERANCANGAN SISTEM APLIKASI INVENTORI TOKO
DAN POS (POINT OF SALE) DENGAN VISUAL BASIC 6.0
DAN MYSQL
Telah melaksanakan test program Tugas Akhir Mahasiswa tersebut diatas pada tanggal
...
Dengan Hasil: Sukses / Gagal
Demikian diterangkan untuk digunakan melengkapi syarat pendaftaran Ujian Meja
Hijau Tugas Akhir Mahasiswa bersangkutan di Departemen Matematika FMIPA USU
Medan.
Medan, ...
Dosen Pembimbing
Program Studi D3 Teknik Informatika,
Dr. Pasukat Sembiring, M.Si.
NIP. 195311131985031002
BAHASA PEMROGRAMAN (LISTING PROGRAM)
1.
Listing Program untuk Form Login
Private Sub cmdLogin_Click() If txtUser.Text = "" Then
MsgBox "User ID masih kosong !", vbInformation + vbOKOnly, "Information"
txtUser.SetFocus
ElseIf txtPwd.Text = "" Then
MsgBox "Password masih kosong !", vbInformation + vbOKOnly, "Information"
txtPwd.SetFocus Else
SQL = ""
SQL = "SELECT * FROM user WHERE user_login ='" & txtUser.Text & "' " _
& " AND pass_login ='" & txtPwd.Text & "'" Set Rs_user = Koneksi.Execute(SQL)
If Not Rs_user.BOF Then 'TUTUP FORM LOGIN
Unload Me frmutama.Show
If Rs_user!Level = "Admin" Then
' PENGATURAN MENU JIKA YANG LOGIN ADMIN ' ENABLED= TRUE (Menu Aktif)
' ENABLED= False (Menu Mati)
frmutama.menuLogout.Enabled = True frmutama.muMaster.Enabled = True frmutama.muTransaksi.Enabled = True frmutama.muLaporan.Enabled = True frmutama.menuBuku.Enabled = True frmutama.menuKategori.Enabled = True frmutama.menuUser.Enabled = True frmutama.menuTransJual.Enabled = True frmutama.menuTransBeli.Enabled = True frmutama.menuPenerbit.Enabled = True frmutama.menuLapPenjualanPTransaksi.Enabled = True frmutama.menuLapPenjualanPPeriode.Enabled = True frmutama.menuLapPenjualan.Enabled = True frmutama.menuLapPembelian.Enabled = True frmutama.menuLapPembelianPPeriode.Enabled = True frmutama.menuLapPembelianPTransaksi.Enabled = True frmutama.menuLapPenerbit.Enabled = True frmutama.Enabled = True frmutama.Show Else
'PENGATURAN MENU JIKA YANG LOGIN KASIR frmutama.muMaster.Enabled = True
frmutama.muTransaksi.Enabled = True frmutama.muLaporan.Enabled = True frmutama.menuLapBuku.Enabled = True
frmutama.menuKategori.Enabled = True frmutama.menuKategori.Enabled = True frmutama.menuLapPenjualan.Enabled = False frmutama.menuLapPenjualanPTransaksi.Enabled = False frmutama.menuLapPenjualanPPeriode.Enabled = False frmutama.menuBuku.Enabled = False frmutama.menuKategori.Enabled = False frmutama.menuLapPembelian.Enabled = True frmutama.menuLapPembelianPPeriode.Enabled = True frmutama.menuLapPembelianPTransaksi.Enabled = True frmutama.menuLapPenerbit.Enabled = False frmutama.menuUser.Enabled = False frmutama.menuTransBeli.Enabled = False frmutama.menuTransJual.Enabled = True frmutama.menuPenerbit.Enabled = False frmutama.Enabled = True frmutama.Show End If
'SIMPAN DATA LOGIN KE userID dan userNm
'DATA DIATAS AKAN DIBACA DI FORM UTAMA, DAN FORM TRANSAKSI userID = Rs_user!id_user
userNm = Rs_user!nama
frmutama.StatusBar1.Panels(1).Text = Rs_user!nama
frmutama.StatusBar1.Panels(2).Text = "[" & Rs_user!Level & "]" frmutama.menuLogin.Enabled = False
Unload Me Else
MsgBox "ANDA BUKAN USER YANG BERHAK!", vbCritical + vbOKOnly, "Error" End If txtUser.Text = "" txtPwd.Text = "" End If End Sub
Private Sub Form_Load() Call BukaDatabase
Skin1.ApplySkin Me.hWnd End Sub
Private Sub txtPwd_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
Private Sub txtUser_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
Private Sub cmdKeluar_Click() Unload Me
2.
Listing Program untuk Form Utama
Private Sub Form_Load()
StatusBar1.Panels.Item(3).Text = Format(Now, " dd mm yyyy ") frmLogin.Show 1
frmutama.Enabled = True
Me.Picture = LoadPicture("")
Skin1.ApplySkin Me.hWnd End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Yakin Akan Menutup Aplikasi Ini?", vbYesNo + vbQuestion, "Konfirmasi") = vbNo Then
Cancel = 1 Else
End End If End Sub
Private Sub menuBuku_Click() frmBarang.Show 1
End Sub
Private Sub menuBukuKategori_Click() frmLapBarangKategori.Show 1
End Sub
Private Sub menuDataUser_Click() rptUser.Show 1
End Sub
Private Sub menuKategori_Click() frmKategori.Show 1
End Sub
Private Sub menuLapBuku_Click() rptBarang.Show 1
End Sub
Private Sub menuLapKategori_Click() rptKategori.Show 1
End Sub
Private Sub menuLapPembelian_Click() rptLapPembelian.Show 1
End Sub
Private Sub menuLapPembelianPPeriode_Click() frmLaporanPembelianPeriode.Show 1
End Sub
Private Sub menuLapPembelianPTransaksi_Click() frmLaporanPembelianTransaksi.Show 1
End Sub
rptPenerbit.Show 1 End Sub
Private Sub menuLapPenjualan_Click()
rptLapPenjualan.Sections("Section4").Controls("labelTanggal").Capt ion = Format(Date, "dd MMMM yyyy")
rptLapPenjualan.Show 1 End Sub
Private Sub menuLapPenjualanBkTerlaris_Click()
rptLapPenjualanTerlaris.Sections("Section4").Controls("labelTangga l").Caption = Format(Date, "dd MMMM yyyy")
rptLapPenjualanTerlaris.Show 1 End Sub
Private Sub menuLapPenjualanPPeriode_Click() frmLaporanPenjualanPeriode.Show 1
End Sub
Private Sub menuLapPenjualanPTransaksi_Click() frmLaporanPenjualanTransaksi.Show
End Sub
Private Sub menuLogin_Click() frmLogin.Show 1
End Sub
Private Sub menuLogout_Click() muMaster.Enabled = False muTransaksi.Enabled = False muLaporan.Enabled = False menuLogin.Enabled = True menuLogout.Enabled = False End Sub
Private Sub menuExit_Click() Unload Me
End Sub
Private Sub menuPenerbit_Click() frmPenerbit.Show 1
End Sub
Private Sub menuTransBeli_Click() frmPembelian.Show
End Sub
Private Sub menuTransJual_Click() frmPenjualan.Show
End Sub
Private Sub menuUser_Click() frmUser.Show 1
3.
Listing Program untuk Form User
Option Explicit
Dim GridObjIndex As Byte
Private Sub cmbLevel_KeyPress(KeyAscii As MSForms.ReturnInteger) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
Private Sub cmdHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan menghapus pesan ini?", vbYesNo + vbQuestion, "informasi")
If Konfirmasi = vbYes Then
strSQL = "DELETE FROM user WHERE id_user='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText Rs_user.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub
Private Sub cmdKeluar_Click()
If cmdKeluar.Caption = "&Keluar" Then Unload Me
Else
Call FormNormal End If
End Sub
Private Sub cmdSimpan_Click() If txtNama.Text = "" Then
MsgBox "Nama user tidak boleh kosong!", vbCritical, "Error" txtPassword.SetFocus
ElseIf txtPassword.Text = "" Then
MsgBox "pass_login tidak boleh kosong!", vbCritical, "Error" Else
'SAAT TOMBOL SIMPAN DIKLIK, BUAT KODE TERBARU Rs_user.Requery
Call KodeOtomatis
strSQL = "INSERT INTO user " _
& " (id_user,nama,user_login,pass_login,level)" _
& " VALUES('" & KodeBaru & "','" & txtNama.Text & "','" _
& txtUsername.Text & "','" & txtPassword.Text & "','" & cmbLevel.Text & "')"
Koneksi.Execute strSQL, , adCmdText Rs_user.Requery
Call FormNormal Call Form_Load
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
End If End Sub
Private Sub cmdTambah_Click() Call FormHidup
'SAAT TOMBOL TAMBAH DIKLIK, BUAT KODE BARU Call KodeOtomatis
txtKode.Text = KodeBaru txtKode.Enabled = False txtNama.SetFocus
'PENGATURAN KEADAAN TOMBOL cmdTambah.Enabled = False cmdSimpan.Enabled = True cmdHapus.Enabled = False cmdUbah.Enabled = False cmdKeluar.Caption = "&Batal" End Sub
Private Sub cmdUbah_Click() If txtNama.Text = "" Then
MsgBox "Nama user tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf txtPassword.Text = "" Then
MsgBox "pass_login user tidak boleh kosong!", vbCritical, "Error" txtPassword.SetFocus
Else
strSQL = "UPDATE user" _
& " SET nama='" & txtNama.Text & "', " _
& " user_login='" & txtUsername.Text & "', " _ & " pass_login='" & txtPassword.Text & "', " _ & " level='" & cmbLevel.Text & "'" _
& " WHERE id_user='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText
Rs_user.Requery Call FormNormal Call Form_Load
MsgBox "Data telah ter_update dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
End If End Sub
Private Sub Form_Load()
'MEMBUKA KONEKSI DATABASE MYSQL Call BukaDatabase
'MEMATIKAN FORM MASUKAN Call FormMati
'MENAMPILKAN DATA USER KE GRID Call TampilGridUser
cmdUbah.Enabled = False cmdSimpan.Enabled = False cmdHapus.Enabled = False 'MENGISI DATA DI COMBOBOX cmbLevel.AddItem ("Kasir") cmbLevel.AddItem ("Admin") End Sub Sub FormKosong() txtKode.Text = "" txtNama.Text = "" txtUsername.Text = "" txtPassword.Text = "" cmbLevel.Text = ""
End Sub Sub FormMati() txtKode.Enabled = False txtNama.Enabled = False txtUsername.Enabled = False txtPassword.Enabled = False cmbLevel.Enabled = False End Sub Sub FormHidup() txtKode.Enabled = True txtNama.Enabled = True txtUsername.Enabled = True txtPassword.Enabled = True cmbLevel.Enabled = True End Sub Sub FormNormal() Call FormKosong Call FormMati cmdTambah.Enabled = True cmdHapus.Enabled = False cmdUbah.Enabled = False cmdSimpan.Enabled = False cmdKeluar.Caption = "&Keluar" End Sub Sub KodeOtomatis() Rs_user.Requery
Set Rs_user = New ADODB.Recordset
strSQL = "SELECT id_user FROM user ORDER BY id_user"
Rs_user.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_user.BOF Then KodeBaru = "A001" Exit Sub Else Rs_user.MoveLast KodeBaru = Rs_user!id_user KodeBaru = Right(KodeBaru, 3) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 5 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "A" & Format(KodeBaru, "000") End Sub
Sub AktifGridUser() With gridUser
.Cols = 5 'JUMLAH 5 KOLOM 'PENGATURAN KOLOM KE-1 .RowHeightMin = 300 .Col = 0
.Row = 0 .Text = "NO"
.ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 750 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0
.Text = "NAMA USER" .CellFontBold = True .ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4
.Col = 3 .Row = 0 .Text = "USERNAME" .CellFontBold = True .ColWidth(3) = 1600 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5
.Col = 4 .Row = 0 .Text = "LEVEL" .CellFontBold = True .ColWidth(4) = 3000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridUser() Dim Baris As Integer gridUser.Clear
Call AktifGridUser gridUser.Rows = 2 Baris = 0
'BUKA KONEKSI MYSQL Call BukaDatabase
'BUAT RECORDSET BARU, MASUKKAN DATA USER KE RECORDSET Set Rs_user = New ADODB.Recordset
Rs_user.Open "SELECT * FROM user", Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_user.BOF Then
MsgBox "Tabel user masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
'JIKA RECORDSET ADA DATA, TAMPILKAN KE GRID With Rs_user
Do While Not .EOF On Error Resume Next Baris = Baris + 1 gridUser.Rows = Baris + 1 gridUser.TextMatrix(Baris, 0) = Baris gridUser.TextMatrix(Baris, 1) = !id_user gridUser.TextMatrix(Baris, 2) = !nama gridUser.TextMatrix(Baris, 3) = !user_login gridUser.TextMatrix(Baris, 4) = !Level .MoveNext Loop End With End If End Sub
Private Sub gridUser_Click() cmdHapus.Enabled = True cmdUbah.Enabled = True cmdSimpan.Enabled = False cmdKeluar.Caption = "&Batal" cmdTambah.Enabled = False Call FormHidup txtKode.Enabled = False txtNama.SetFocus
'MEMBACA NOMOR BARIS GRID YANG DIKLIK GridObjIndex = gridUser.Row
Set Rs_user = New ADODB.Recordset 'MEMBACA KODE DARI GRID YANG DIKLIK
Kode = gridUser.TextMatrix(GridObjIndex, 1)
'MEMBACA DATA USER DARI ID YANG DIDAPAT DARI GRID
strSQL = "SELECT * FROM user WHERE id_user='" & Kode & "'"
Rs_user.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_user.BOF Then
MsgBox "Tabel user masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
Rs_user.MoveFirst
Do While Not Rs_user.EOF On Error Resume Next
txtKode.Text = Rs_user!id_user txtNama.Text = Rs_user!nama txtUsername.Text = Rs_user!user_login txtPassword.Text = Rs_user!Level Rs_user.MoveNext Loop End If End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
Private Sub txtUsername_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
End If End Sub
Private Sub txtPassword_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
4.
Listing Program untuk Form Barang
Option Explicit
Dim GridObjIndex As Byte Dim kode_kategori As String
Private Sub Form_Load() Call BukaDatabase Call ComboKategori Call FormMati Call TampilGridBarang cmdHapus.Enabled = False cmdSimpan.Enabled = False cmdUbah.Enabled = False txtKode.Enabled = False End Sub Sub FormKosong() txtKode.Text = "" txtNama.Text = "" cmbKategori.Text = "" txtKategori.Text = "" txtKeterangan.Text = "" txtHargaBeli.Text = "0" txtHargaJual.Text = "0" txtDiskon.Text = "0" txtStok.Text = "0" End Sub Sub FormMati() cmbKategori.Enabled = False txtKategori.Enabled = False txtNama.Enabled = False txtKeterangan.Enabled = False txtHargaBeli.Enabled = False txtHargaJual.Enabled = False txtDiskon.Enabled = False txtStok.Enabled = False End Sub Sub FormHidup() cmbKategori.Enabled = True txtKategori.Enabled = True txtNama.Enabled = True txtKeterangan.Enabled = True txtHargaBeli.Enabled = True txtHargaJual.Enabled = True
txtDiskon.Enabled = True txtStok.Enabled = True End Sub Sub FormNormal() Call FormKosong Call FormMati cmdTambah.Enabled = True cmdHapus.Enabled = False cmdSimpan.Enabled = False cmdUbah.Enabled = False cmdKeluar.Caption = "&Keluar" End Sub Sub KodeOtomatis() Rs_barang.Requery
Set Rs_barang = New ADODB.Recordset
strSQL = "SELECT * FROM barang ORDER BY kode_buku"
Rs_barang.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_barang.BOF Then KodeBaru = "B001" Exit Sub Else Rs_barang.MoveLast KodeBaru = Rs_barang!kode_buku KodeBaru = Right(KodeBaru, 3) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 3 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 99999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "B" & Format(KodeBaru, "000") End Sub
Sub ComboKategori()
Set Rs_kategori = New ADODB.Recordset
Rs_kategori.Open "SELECT * FROM kategori ORDER BY kode_kategori", _
Koneksi, adOpenDynamic, adLockBatchOptimistic Rs_kategori.Requery
With Rs_kategori If .EOF And .BOF Then
MsgBox "Data Kategori Tidak Ada", vbOKOnly + vbCritical, "Error" Else
'MENGISI SEMUA DATA KE DALAM COMBOBOX cmbKategori.Clear
Do Until .EOF
cmbKategori.AddItem ![kode_kategori] + " | " + ![nama_kategori] .MoveNext Loop .MoveFirst End If End With End Sub
Dim cmbTerpilih As String Dim PanjangKanan As Integer cmbTerpilih = cmbKategori.Text
PanjangKanan = Len(cmbKategori.Text) - 6 cmbKategori.Text = Left(cmbKategori.Text, 4)
txtKategori.Text = Right(cmbTerpilih, PanjangKanan) End Sub
Sub AktifGridBarang() With gridBarang
.Cols = 7 'JUMLAH KOLOM GRID 'PENGATURAN KOLOM KE-1
.RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 750 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0 .Text = "KATEGORI" .CellFontBold = True .ColWidth(2) = 1900 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4
.Col = 3 .Row = 0
.Text = "NAMA BUKU" .CellFontBold = True .ColWidth(3) = 3300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5
.Col = 4 .Row = 0
.Text = "HARGA JUAL(Rp)" .CellFontBold = True .ColWidth(4) = 2000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-6
.Col = 5 .Row = 0
.Text = "STOK"
.CellFontBold = True .ColWidth(5) = 1400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-7
.Col = 6 .Row = 0 .Text = "DISKON" .CellFontBold = True .ColWidth(6) = 1400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridBarang() Dim Baris As Integer gridBarang.Clear Call AktifGridBarang gridBarang.Rows = 2 Baris = 0
'BUKA KONEKSI DATABASE Call BukaDatabase
'AMBIL DATA BARANG KE RECORDSET (Rs_Barang) Set Rs_barang = New ADODB.Recordset
Rs_barang.Open "SELECT barang.*, kategori.nama_kategori FROM barang, kategori " _
& " WHERE kategori.kode_kategori=barang.kode_kategori ORDER BY barang.kode_buku", _
Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_barang.BOF Then
MsgBox "Tabel barang masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
With Rs_barang .MoveFirst
Do While Not .EOF On Error Resume Next Baris = Baris + 1 gridBarang.Rows = Baris + 1 gridBarang.TextMatrix(Baris, 0) = Baris gridBarang.TextMatrix(Baris, 1) = !kode_buku gridBarang.TextMatrix(Baris, 2) = !nama_kategori gridBarang.TextMatrix(Baris, 3) = !nama_buku gridBarang.TextMatrix(Baris, 4) = !harga_jual gridBarang.TextMatrix(Baris, 5) = !stok gridBarang.TextMatrix(Baris, 6) = !diskon .MoveNext Loop End With End If End Sub
Private Sub GridBarang_Click() cmdHapus.Enabled = True cmdSimpan.Enabled = False cmdUbah.Enabled = True cmdKeluar.Caption = "&Batal" cmdTambah.Enabled = False 'MENGHIDUPKAN FORM
Call FormHidup
cmbKategori.SetFocus
'MENDAPATKAN BARIS DATA GRID YANG DI KLIK GridObjIndex = gridBarang.Row
'MEMBACA KODE BARANG PADA BARIS YANG DI KLIK Kode = gridBarang.TextMatrix(GridObjIndex, 1)
'QUERY MENGAMBIL DATA DARI TABEL BARANG DAN KATEGORI Set Rs_barang = New ADODB.Recordset
Rs_barang.Open "SELECT barang.*, kategori.nama_kategori " _ & " FROM barang, kategori " _
& " WHERE kategori.kode_kategori=barang.kode_kategori " _ & " AND kode_buku='" & Kode & "' ", _
Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_barang.BOF Then
MsgBox "Tabel barang masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub
Call FormNormal Else
Rs_barang.MoveFirst
Do While Not Rs_barang.EOF On Error Resume Next
txtKode.Text = Rs_barang!kode_buku txtNama.Text = Rs_barang!nama_buku cmbKategori.Text = Rs_barang!kode_kategori txtKategori.Text = Rs_barang!nama_kategori txtKeterangan.Text = Rs_barang!keterangan txtHargaBeli.Text = Rs_barang!harga_beli txtHargaJual.Text = Rs_barang!harga_jual txtDiskon.Text = Rs_barang!diskon txtStok.Text = Rs_barang!stok Rs_barang.MoveNext Loop End If End Sub
Private Sub cmdTambah_Click() Call FormHidup Call KodeOtomatis txtKode.Text = KodeBaru txtKode.Enabled = False cmdSimpan.Enabled = True cmdTambah.Enabled = False cmdUbah.Enabled = False cmdHapus.Enabled = False cmdKeluar.Caption = "&Batal" cmbKategori.SetFocus End Sub
Private Sub cmdSimpan_Click() If cmbKategori.Text = "" Then
MsgBox "Kategori tidak boleh kosong!", vbCritical, "Error" cmbKategori.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama barang tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf txtHargaJual.Text = "0" Then
MsgBox "Harga jual tidak boleh kosong!", vbCritical, "Error" txtHargaJual.SetFocus
Else
'JALANKAN FUNGSI BUAT KODE OTOMATIS Rs_barang.Requery
Call KodeOtomatis
strSQL = "INSERT INTO barang (kode_buku,kode_kategori,nama_buku,keterangan, " _
& " harga_beli,harga_jual,stok,diskon)" _
& " VALUES('" & KodeBaru & "','" & cmbKategori.Text & "','" _ & txtNama.Text & "','" & txtKeterangan.Text & "','" _
& txtHargaBeli.Text & "','" & txtHargaJual.Text & "','" _ & txtStok.Text & "','" & txtDiskon.Text & "')"
'MENJALANKAN PERINTAH SQL DI ATAS Koneksi.Execute strSQL, , adCmdText Rs_barang.Requery
'ATUR ULANG FORM, KOSONGKAN DAN MATIKAN Call FormNormal
Call Form_Load
'INFORMASI SETELAH MENYIMPAN DATA
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
End If End Sub
Private Sub cmdUbah_Click() If cmbKategori.Text = "" Then
MsgBox "Kategori tidak boleh kosong!", vbCritical, "Error" cmbKategori.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama barang tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf txtHargaJual.Text = "0" Then
MsgBox "Harga jual tidak boleh kosong!", vbCritical, "Error" txtHargaJual.SetFocus
Else
strSQL = "UPDATE barang" _
& " SET kode_kategori='" & cmbKategori.Text & " ', " _ & " nama_buku='" & txtNama.Text & "', " _
& " keterangan='" & txtKeterangan.Text & "', " _ & " harga_beli='" & txtHargaBeli.Text & "', " _ & " harga_jual='" & txtHargaJual.Text & "', " _ & " diskon='" & txtDiskon.Text & "', " _
& " stok='" & txtStok.Text & "' " _
& " WHERE kode_buku='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText
Rs_barang.Requery Call FormNormal
MsgBox "Data telah ter_update dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
Call Form_Load End If
End Sub
Private Sub cmdHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan menghapus pesan ini?", vbYesNo + vbQuestion, "Konfirmasi")
If Konfirmasi = vbYes Then
strSQL = "DELETE FROM barang WHERE kode_buku='" & txtKode.Text & "'"
Rs_barang.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub
Private Sub cmdKeluar_Click()
If cmdKeluar.Caption = "&Keluar" Then Unload Me
Else
Call FormNormal End If
End Sub
Private Sub cmbKategori_KeyPress(KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyReturn Then SendKeys "{tab}"
End If End Sub
Private Sub txtKategori_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" KeyAscii = 0 End If
End Sub
Private Sub txtHargaBeli_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtHargaJual_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtDiskon_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}"
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
If KeyAscii = vbKeyReturn Then SendKeys "{tab}"
End If End Sub
Private Sub txtHargaBeli_GotFocus() If txtHargaBeli.Text = "0" Then txtHargaBeli.Text = ""
End If End Sub
Private Sub txtHargaBeli_LostFocus() If txtHargaBeli.Text = "" Then
txtHargaBeli.Text = "0" End If
End Sub
Private Sub txtHargaJual_GotFocus() If txtHargaJual.Text = "0" Then txtHargaJual.Text = ""
End If End Sub
Private Sub txtHargaJual_LostFocus() If txtHargaJual.Text = "" Then
txtHargaJual.Text = "0" End If
End Sub
Private Sub txtDiskon_GotFocus() If txtDiskon.Text = "0" Then txtDiskon.Text = ""
End If End Sub
Private Sub txtDiskon_LostFocus() If txtDiskon.Text = "" Then
txtDiskon.Text = "0" End If
End Sub
Private Sub txtStok_GotFocus() If txtStok.Text = "0" Then txtStok.Text = ""
End If End Sub
Private Sub txtStok_LostFocus() If txtStok.Text = "" Then
txtStok.Text = "0" End If
End Sub
5.
Listing Program untuk Form Cari Barang
Private Sub Form_Load() 'BUKA DATABASE
Call BukaDatabase
'AMBIL DATA BARANG KE RECORDSET (Rs_barang) Set Rs_barang = New ADODB.Recordset
Rs_barang.Open "SELECT barang.*, kategori.nama_kategori FROM barang, kategori " _
& " WHERE kategori.kode_kategori=barang.kode_kategori ORDER BY barang.kode_buku", _
Koneksi, adOpenDynamic, adLockBatchOptimistic Call TampilGridData
End Sub
Sub AktifGridBarang() With gridBarang
'JUMLAH KOLOM GRID = 6 .Cols = 7
'PENGATURAN KOLOM KE-1 .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0 .Text = "KATEGORI" .CellFontBold = True .ColWidth(2) = 2000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4
.Col = 3 .Row = 0
.Text = "NAMA BUKU" .CellFontBold = True .ColWidth(3) = 5000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5
.Col = 4 .Row = 0
.Text = "HARGA JUAL (Rp)" .CellFontBold = True .ColWidth(4) = 2000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-6
.Col = 5 .Row = 0
.Text = "HARGA BELI (Rp)" .CellFontBold = True
.ColWidth(5) = 2000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-7
.Col = 6 .Row = 0 .Text = "DISKON" .CellFontBold = True .ColWidth(6) = 2000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridData() Dim Baris As Integer gridBarang.Clear AktifGridBarang gridBarang.Rows = 2 Baris = 0
If Rs_barang.BOF Then
MsgBox "Tabel barang masih kosong!", vbInformation + vbOKOnly, "Informasi"
Exit Sub Else
With Rs_barang .MoveFirst
Do While Not .EOF Baris = Baris + 1 gridBarang.Rows = Baris + 1 gridBarang.TextMatrix(Baris, 0) = Baris gridBarang.TextMatrix(Baris, 1) = !kode_buku gridBarang.TextMatrix(Baris, 2) = !nama_kategori gridBarang.TextMatrix(Baris, 3) = !nama_buku gridBarang.TextMatrix(Baris, 4) = !harga_jual gridBarang.TextMatrix(Baris, 5) = !harga_beli gridBarang.TextMatrix(Baris, 6) = !diskon .MoveNext Loop End With End If End Sub
Private Sub GridBarang_DblClick() Dim barisGrid As String
barisGrid = gridBarang.Row If gridBarang.Rows <> 1 Then
'JIKA YANG MENGAKSES FORM PENJUALAN If namaForm = "penjualan" Then With frmPenjualan .txtKode.Text = UCase(gridBarang.TextMatrix(barisGrid, 1)) .txtNama.Text = UCase(gridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = UCase(gridBarang.TextMatrix(barisGrid, 4)) .txtDiskon.Text = UCase(gridBarang.TextMatrix(barisGrid, 6)) .txtJumlah.SetFocus End With
'JIKA YANG MENGAKSES FORM PEMBELIAN ElseIf namaForm = "pembelian" Then With frmPembelian
.txtKode.Text = UCase(gridBarang.TextMatrix(barisGrid, 1)) .txtNama.Text = UCase(gridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = UCase(gridBarang.TextMatrix(barisGrid, 5)) .txtJumlah.SetFocus End With Else
'TIDAK ADA FORM LAIN End If 'UNLOAD ME Me.Hide Else Exit Sub End If End Sub
Private Sub Gridbarang_KeyUp(KeyCode As Integer, Shift As Integer) Dim barisGrid
If KeyCode = vbKeyReturn Then barisGrid = gridBarang.Row If gridBarang.Rows > 2 Then If namaForm = "penjualan" Then With frmPenjualan .txtKode.Text = UCase(gridBarang.TextMatrix(barisGrid, 1)) .txtNama.Text = UCase(gridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = UCase(gridBarang.TextMatrix(barisGrid, 4)) .txtDiskon.Text = UCase(gridBarang.TextMatrix(barisGrid, 6)) End With
ElseIf namaForm = "pembelian" Then With frmPembelian .txtKode.Text = UCase(gridBarang.TextMatrix(barisGrid, 1)) .txtNama.Text = UCase(gridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = UCase(gridBarang.TextMatrix(barisGrid, 5)) End With Else
'TIDAK ADA FORM LAIN End If Unload Me Else Exit Sub End If End If End Sub
Private Sub txtCari_Change()
Set Rs_barang = New ADODB.Recordset
strSQL = "SELECT barang.*, kategori.nama_kategori FROM barang, kategori " _
& " WHERE kategori.kode_kategori=barang.kode_kategori " _ & " AND (barang.kode_buku LIKE '%" & txtCari.Text & "%'" _ & " OR barang.nama_buku LIKE '%" & txtCari.Text & "%' )"
Rs_barang.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_barang.BOF Then
MsgBox "Tidak menemukan kode barang! " & " - " & txtCari.Text & " - dalam tabel", _
vbInformation, "Informasi" txtCari.Text = ""
txtCari.SetFocus Else
Call TampilGridData End If
End Sub
6.
Listing Program untuk Form Penerbit
Option Explicit
Dim GridObjIndex As Byte
Private Sub Form_Load() Call BukaDatabase Call FormMati Call TampilGridPenerbit cmdUbah.Enabled = False cmdSimpan.Enabled = False cmdHapus.Enabled = False End Sub Sub FormKosong() txtKode.Text = "" txtNama.Text = "" txtTelepon.Text = "" txtAlamat.Text = "" End Sub Sub FormMati() txtKode.Enabled = False txtNama.Enabled = False txtTelepon.Enabled = False txtAlamat.Enabled = False End Sub Sub FormHidup() txtKode.Enabled = True txtNama.Enabled = True txtTelepon.Enabled = True txtAlamat.Enabled = True End Sub Sub FormNormal() Call FormKosong Call FormMati cmdTambah.Enabled = True cmdHapus.Enabled = False cmdUbah.Enabled = False cmdSimpan.Enabled = False cmdKeluar.Caption = "&Keluar" End Sub Sub KodeOtomatis() Rs_penerbit.Requery
Set Rs_penerbit = New ADODB.Recordset
strSQL = "SELECT * FROM penerbit ORDER BY kode_penerbit"
Rs_penerbit.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_penerbit.BOF Then KodeBaru = "P001"
Exit Sub Else Rs_penerbit.MoveLast KodeBaru = Rs_penerbit!kode_penerbit KodeBaru = Right(KodeBaru, 3) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 5 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "P" & Format(KodeBaru, "000") End Sub
Sub AktifGridPenerbit() With gridPenerbit
.Cols = 5 'JUMLAH KOLOM GRID 'PENGATURAN KOLOM PERTAMA (col 0) .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2 (col 1)
.RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 750 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3 (col 2)
.Col = 2 .Row = 0
.Text = "NAMA PENERBIT" .CellFontBold = True .ColWidth(2) = 2000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4 (col 3)
.Col = 3 .Row = 0
.Text = "NO. TELEPON" .CellFontBold = True .ColWidth(3) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5 (col 4)
.Col = 4 .Row = 0 .Text = "ALAMAT" .CellFontBold = True .ColWidth(4) = 3000 .AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter End With
End Sub
Sub TampilGridPenerbit() Dim Baris As Integer gridPenerbit.Clear Call AktifGridPenerbit gridPenerbit.Rows = 2 Baris = 0
'BUKA KONEKSI DATABASE Call BukaDatabase
'MEMBUAT RECORDSET BARU, BERISI DATA DARI TABEL PENERBIT Set Rs_penerbit = New ADODB.Recordset
strSQL = "SELECT * FROM penerbit ORDER BY kode_penerbit"
Rs_penerbit.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_penerbit.BOF Then
MsgBox "Tabel penerbit masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
With Rs_penerbit .MoveFirst
Do While Not .EOF On Error Resume Next Baris = Baris + 1 gridPenerbit.Rows = Baris + 1 gridPenerbit.TextMatrix(Baris, 0) = Baris gridPenerbit.TextMatrix(Baris, 1) = !kode_penerbit gridPenerbit.TextMatrix(Baris, 2) = !nama_penerbit gridPenerbit.TextMatrix(Baris, 3) = !no_telepon gridPenerbit.TextMatrix(Baris, 4) = !alamat .MoveNext Loop End With End If End Sub
Private Sub cmdTambah_Click() Call FormHidup
'MEMBUAT KODE OTOMATIS Call KodeOtomatis
txtKode.Text = KodeBaru 'MATIKAN KOTAK KODE txtKode.Enabled = False
'AKTIFKAN KURSOR PADA KOTAK NAMA txtNama.SetFocus cmdTambah.Enabled = False cmdSimpan.Enabled = True cmdHapus.Enabled = False cmdUbah.Enabled = False cmdKeluar.Caption = "&Batal" End Sub
Private Sub cmdSimpan_Click() If txtNama.Text = "" Then
MsgBox "Nama penerbit tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf txtAlamat.Text = "" Then
MsgBox "Alamat penerbit tidak boleh kosong!", vbCritical, "Error" txtAlamat.SetFocus
Else
Rs_penerbit.Requery Call KodeOtomatis
strSQL = "INSERT INTO penerbit " _
& " (kode_penerbit,nama_penerbit,no_telepon,alamat)" _ & " VALUES('" & KodeBaru & "','" & txtNama.Text & "','" _ & txtTelepon.Text & "','" & txtAlamat.Text & "')"
Koneksi.Execute strSQL, , adCmdText Rs_penerbit.Requery
Call FormNormal Call Form_Load
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmnasi"
End If End Sub
Private Sub cmdUbah_Click() If txtNama.Text = "" Then
MsgBox "Nama penerbit tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf txtAlamat.Text = "" Then
MsgBox "Alamat penerbit tidak boleh kosong!", vbCritical, "Error" txtAlamat.SetFocus
Else
strSQL = "UPDATE penerbit" _
& " SET nama_penerbit='" & txtNama.Text & "', " _ & " no_telepon='" & txtTelepon.Text & "', " _ & " alamat='" & txtAlamat.Text & "' " _
& " WHERE kode_penerbit='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText
Rs_penerbit.Requery Call FormNormal Call Form_Load
MsgBox "Data telah ter_update dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
End If End Sub
Private Sub cmdHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan menghapus pesan ini?", vbYesNo + vbQuestion, "Informasi")
If Konfirmasi = vbYes Then
strSQL = "DELETE FROM penerbit WHERE kode_penerbit='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText Rs_penerbit.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub
Private Sub cmdKeluar_Click()
Unload Me Else
FormNormal End If End Sub
Private Sub gridPenerbit_Click() cmdHapus.Enabled = True cmdUbah.Enabled = True cmdSimpan.Enabled = False cmdKeluar.Caption = "&Batal" cmdTambah.Enabled = False Call FormHidup txtKode.Enabled = False txtNama.SetFocus
'MEMBACA BARIS GRID YANG DIPILIH GridObjIndex = gridPenerbit.Row 'MEMBACA KODE
Kode = gridPenerbit.TextMatrix(GridObjIndex, 1) Set Rs_penerbit = New ADODB.Recordset
strSQL = "SELECT * FROM penerbit WHERE kode_penerbit='" & Kode & "'"
Rs_penerbit.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_penerbit.BOF Then
MsgBox "Tabel penerbit masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
Rs_penerbit.MoveFirst
Do While Not Rs_penerbit.EOF On Error Resume Next
txtKode.Text = Rs_penerbit!kode_penerbit txtNama.Text = Rs_penerbit!nama_penerbit txtTelepon.Text = Rs_penerbit!no_telepon txtAlamat.Text = Rs_penerbit!alamat Rs_penerbit.MoveNext Loop End If End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtAlamat_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtTelepeon_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}"
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
7.
Listing Program untuk Form Kategori
Option Explicit
Dim GridObjIndex As Byte
Private Sub cmdHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan menghapus data ini?", vbYesNo + vbQuestion, "Konfirmasi")
If Konfirmasi = vbYes Then
strSQL = "DELETE FROM kategori WHERE kode_kategori='" & txtKode.Text & "'" Koneksi.Execute strSQL, , adCmdText Rs_kategori.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub
Private Sub cmdKeluar_Click()
If cmdKeluar.Caption = "&Keluar" Then Unload Me
Else
FormNormal End If End Sub
Private Sub cmdSimpan_Click()
Dim Rs_kategori As New ADODB.Recordset
strSQL = "SELECT * FROM kategori WHERE nama_kategori='" & txtNama.Text & "' "
Set Rs_kategori = Koneksi.Execute(strSQL) If txtNama.Text = "" Then
MsgBox "Nama kategori tidak boleh kosong!", vbCritical, "Error" txtNama.SetFocus
ElseIf Not Rs_kategori.BOF Then
MsgBox "Maaf, nama kategori produk " & UCase(txtNama.Text) & " sudah tersedia!", _
vbInformation + vbOKOnly, "Information" txtNama.Text = "" txtNama.SetFocus Exit Sub Else Rs_kategori.Requery Call KodeOtomatis
strSQL = "INSERT INTO kategori (kode_kategori,nama_kategori)" & _ " VALUES('" & KodeBaru & "','" & txtNama.Text & "')"
Koneksi.Execute strSQL, , adCmdText Rs_kategori.Requery
Call FormNormal Call Form_Load
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
End If End Sub
Private Sub cmdTambah_Click() Call KodeOtomatis txtKode.Text = KodeBaru txtKode.Enabled = False txtNama.Enabled = True cmdSimpan.Enabled = True cmdTambah.Enabled = False cmdUbah.Enabled = False cmdHapus.Enabled = False cmdKeluar.Caption = "&Batal" txtNama.SetFocus Call TampilGridKategori End Sub
Private Sub cmdUbah_Click() If txtNama.Text = "" Then
MsgBox "Nama kategori produk tidak boleh kosong!", vbInformation + vbOKOnly, "Perhatian"
txtNama.SetFocus Else
strSQL = "UPDATE kategori" _
& " SET nama_kategori='" & txtNama.Text & "' " _ & " WHERE kode_kategori='" & txtKode.Text & "'"
Koneksi.Execute strSQL, , adCmdText Rs_kategori.Requery
Call FormNormal
MsgBox "Data telah ter_update dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
Call Form_Load End If
End Sub
Private Sub Form_Load() Call BukaDatabase Call TampilGridKategori cmdHapus.Enabled = False cmdSimpan.Enabled = False cmdUbah.Enabled = False txtKode.Enabled = False txtNama.Enabled = False End Sub Sub FormKosong() txtKode.Text = "" txtNama.Text = "" End Sub Sub FormNormal() FormKosong txtNama.Enabled = False cmdTambah.Enabled = True cmdHapus.Enabled = False cmdSimpan.Enabled = False
cmdUbah.Enabled = False
cmdKeluar.Caption = "&Keluar" End Sub
Sub KodeOtomatis() Rs_kategori.Requery
Set Rs_kategori = New ADODB.Recordset
strSQL = "SELECT * FROM kategori ORDER BY kode_kategori"
Rs_kategori.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_kategori.BOF Then KodeBaru = "K001" Exit Sub Else Rs_kategori.MoveLast KodeBaru = Rs_kategori!kode_kategori KodeBaru = Right(KodeBaru, 3) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 5 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "K" & Format(KodeBaru, "000") End Sub
Sub AktifGridKategori() With gridKategori
.Cols = 3 'JUMLAH KOLOM ADA 3 'PENGATURAN KOLOM PERTAMA (col 0) .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0
.Text = "NAMA KATEGORI" .CellFontBold = True .ColWidth(2) = 6000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub
Sub TampilGridKategori() Dim Baris As Integer gridKategori.Clear Call AktifGridKategori gridKategori.Rows = 2 Baris = 0
'BUKA KONEKSI DATABASE Call BukaDatabase
'MEMBUAT RECORDSET BARU, DATANYA DARI TABEL KATEGORI Set Rs_kategori = New ADODB.Recordset
Rs_kategori.Open "SELECT * FROM kategori ORDER BY kode_kategori", Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_kategori.BOF Then
MsgBox "Tabel kategori masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
'DATA KATEGORI DITAMPILKAN SEMUA KE GRID With Rs_kategori
.MoveFirst
Do While Not .EOF On Error Resume Next Baris = Baris + 1 gridKategori.Rows = Baris + 1 gridKategori.TextMatrix(Baris, 0) = Baris gridKategori.TextMatrix(Baris, 1) = !kode_kategori gridKategori.TextMatrix(Baris, 2) = !nama_kategori .MoveNext Loop End With End If End Sub
Private Sub GridKategori_DblClick() cmdHapus.Enabled = True cmdSimpan.Enabled = False cmdUbah.Enabled = True cmdKeluar.Caption = "&Batal" cmdTambah.Enabled = False txtNama.Enabled = True txtNama.SetFocus GridObjIndex = gridKategori.Row
Set Rs_kategori = New ADODB.Recordset
Kode = gridKategori.TextMatrix(GridObjIndex, 1)
strSQL = "SELECT * FROM kategori WHERE kode_kategori='" & Kode & "' "
Rs_kategori.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic
If Rs_kategori.BOF Then
MsgBox "Tabel kategori produk masih kosong!", vbOKOnly + vbInformation, "Perhatian"
Exit Sub
Call FormNormal Else
Rs_kategori.MoveFirst
Do While Not Rs_kategori.EOF On Error Resume Next
txtKode.Text = Rs_kategori!kode_kategori txtNama.Text = Rs_kategori!nama_kategori
Rs_kategori.MoveNext Loop
End If End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
cmdSimpan.SetFocus KeyAscii = 0
End If End Sub
8.
Listing Program untuk Form Pembelian
Option Explicit Dim Baris As Integer Dim i, qty As Integer
Dim kode_penerbit As String Dim TotalBelanja As Currency
Private Sub Form_Load() Call BukaDatabase Call FormNormal Call ComboPenerbit cmdSimpan.Enabled = False cmdCari.Enabled = False cmdMasuk.Enabled = False txtNoTransaksi.Enabled = False
dtpTanggal.Value = Format(Now, "dd-MM-yyyy") TotalBelanja = 0 End Sub Sub FormKosong() txtNoTransaksi.Text = "" txtRefNota.Text = "" cmbPenerbit.Text = "" txtPenerbit.Text = "" txtKode.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtJumlah.Text = "0" labelTotalBelanja.Caption = "0" Baris = 1 gridBeli.Clear gridBeli.Rows = 2 Call AktifGridBeli End Sub Sub BersihBarang() txtKode.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtJumlah.Text = "" End Sub Sub FormMati() txtRefNota.Enabled = False
cmbPenerbit.Enabled = False txtPenerbit.Enabled = False txtKode.Enabled = False txtNama.Enabled = False txtHarga.Enabled = False txtJumlah.Enabled = False End Sub Sub FormHidup() txtRefNota.Enabled = True cmbPenerbit.Enabled = True txtPenerbit.Enabled = True txtKode.Enabled = True txtNama.Enabled = True txtHarga.Enabled = True txtJumlah.Enabled = True End Sub Sub FormNormal() Call FormMati Call FormKosong TotalBelanja = 0 cmdKeluar.Caption = "&Keluar" cmdSimpan.Enabled = False cmdBaru.Enabled = True cmdCari.Enabled = False cmdMasuk.Enabled = False End Sub Sub KodeOtomatis()
Set Rs_transaksi_beli = New ADODB.Recordset
strSQL = "SELECT no_pembelian FROM transaksi_beli ORDER BY no_pembelian"
Rs_transaksi_beli.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_transaksi_beli.BOF Then KodeBaru = "BL000001" Exit Sub Else Rs_transaksi_beli.MoveLast KodeBaru = Rs_transaksi_beli!no_pembelian KodeBaru = Right(KodeBaru, 6) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 5 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 999999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "BL" & Format(KodeBaru, "000000") End Sub
Sub ComboPenerbit()
Set Rs_penerbit = New ADODB.Recordset
Rs_penerbit.Open "SELECT * FROM penerbit ORDER BY kode_penerbit", _
Koneksi, adOpenDynamic, adLockBatchOptimistic Rs_penerbit.Requery
If .EOF And .BOF Then
MsgBox "Data penerbit tidak ada", vbOKOnly + vbCritical, "Error" Else
'MENGISI SEMUA DATA KE DALAM COMBOBOX cmbPenerbit.Clear
Do Until .EOF
cmbPenerbit.AddItem ![kode_penerbit] + " | " + ![nama_penerbit] .MoveNext Loop .MoveFirst End If End With End Sub
Private Sub cmbPenerbit_Click() Dim cmbTerpilih As String
Dim PanjangKanan As Integer cmbTerpilih = cmbPenerbit.Text
PanjangKanan = Len(cmbPenerbit.Text) - 6 cmbPenerbit.Text = Left(cmbPenerbit.Text, 4)
txtPenerbit.Text = Right(cmbTerpilih, PanjangKanan) txtKode.SetFocus End Sub Sub AktifGridBeli() With gridBeli 'JUMLAH KOLOM 5 (0,1,2,3,4,5) .Cols = 6
'PENGATURAN KOLOM KE-1 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0
.Text = "NAMA BUKU" .CellFontBold = True .ColWidth(2) = 4500
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4
.Col = 3 .Row = 0 .Text = "HARGA (Rp)" .CellFontBold = True .ColWidth(3) = 1800 .AllowUserResizing = flexResizeColumns
.CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5
.Col = 4 .Row = 0 .Text = "JUMLAH" .CellFontBold = True .ColWidth(4) = 1200 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-6
.Col = 5 .Row = 0 .Text = "SUBTOTAL (Rp)" .CellFontBold = True .ColWidth(5) = 1800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub
Private Sub cmdBaru_Click()
dtpTanggal.Value = Format(Now, "dd-MM-yyyy") Call FormHidup
Call AktifGridBeli
'BUAT KODE TRANSAKSI OTOMATIS Call KodeOtomatis txtNoTransaksi.Text = KodeBaru cmdBaru.Enabled = False cmdCari.Enabled = True cmdKeluar.Caption = "&Batal" cmdSimpan.Enabled = True cmdMasuk.Enabled = True cmbPenerbit.SetFocus
'NILAI BARIS DATA DALAM GRID = 1 Baris = 1
End Sub
Private Sub cmdCari_Click() namaForm = "pembelian" frmCaribarang.Show End Sub
Private Sub cmdMasuk_Click() If txtKode.Text = "" Then
MsgBox "Tidak ada barang yang hendak dibeli! ", vbOKOnly + vbCritical, "Konfirmasi"
txtKode.SetFocus
ElseIf txtJumlah.Text = "" Or txtJumlah.Text = "0" Then
MsgBox "Jumlah barang masih kosong!", vbOKOnly + vbCritical, "Konfirmasi"
txtJumlah.SetFocus Else
'MENJUMLAH TOTAL HARGA (HARGA * JUMLAH YANG DIBELI) Dim subTotal As Currency
subTotal = Val(txtHarga.Text) * Val(txtJumlah.Text) TotalBelanja = TotalBelanja + subTotal
gridBeli.Rows = Baris + 1
gridBeli.TextMatrix(Baris, 0) = Baris
gridBeli.TextMatrix(Baris, 2) = txtNama.Text gridBeli.TextMatrix(Baris, 3) = txtHarga.Text gridBeli.TextMatrix(Baris, 4) = txtJumlah.Text gridBeli.TextMatrix(Baris, 5) = subTotal labelTotalBelanja.Caption = Format(TotalBelanja, "##,##") Baris = Baris + 1 Call BersihBarang End If End Sub
Private Sub cmdSimpan_Click() Dim i As Integer
If cmbPenerbit.Text = "" Then
MsgBox "Penerbit belum dipilih!", vbOKOnly + vbCritical, "Perhatian"
cmbPenerbit.SetFocus
ElseIf txtRefNota.Text = "" Then
MsgBox "Refrensi No Nota Pembelian belum di isi !", vbOKOnly + vbCritical, "Perhatian"
txtRefNota.SetFocus ElseIf Baris = 1 Then
MsgBox "Belum ada barang yang masuk!, Grid masih kosong!", vbOKOnly + vbCritical, "Information"
cmdCari.SetFocus Else
'BUAT KODE OTOMATIS
Rs_transaksi_beli.Requery Call KodeOtomatis
'SIMPAN DATA TRANSAKSI strSQL = ""
strSQL = "INSERT INTO transaksi_beli" _ &
"(no_pembelian,ref_nota,tgl_transaksi,keterangan,kode_penerbit,id_ user)" _
& "VALUES ('" & KodeBaru & "','" & txtRefNota.Text & "','" & Format(dtpTanggal.Value, "yyyy-MM-dd") & "','" _
& txtKeterangan.Text & "','" & cmbPenerbit.Text & "','" & userID & "')"
Koneksi.Execute strSQL, , adCmdText Rs_transaksi_beli.Requery
'PINDAH DATA DARI GRID KE TABEL ITEM TRANSAKSI (pembelian_item) For i = 1 To Baris - 1
strSQL = ""
strSQL = "INSERT INTO pembelian_item" _
& "(no_pembelian,kode_buku,harga_beli,jumlah)" _ & " VALUES ('" & KodeBaru & "','" _
& gridBeli.TextMatrix(i, 1) & "','" _ & gridBeli.TextMatrix(i, 3) & "','" _ & gridBeli.TextMatrix(i, 4) & "')" Koneksi.Execute strSQL, , adCmdText 'KODE BARANG
Kode = gridBeli.TextMatrix(i, 1) 'JUMLAH TERJUAL
qty = Val(gridBeli.TextMatrix(i, 4))
'UPDATE DATA STOK DI TABEL MASTER STOK BARANG strSQL = ""
strSQL = "UPDATE barang SET stok=stok + " & qty & " WHERE kode_buku='" & Kode & "'"
Next i
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
Call FormNormal End If
End Sub
Private Sub cmdKeluar_Click()
If cmdKeluar.Caption = "&Keluar" Then frmutama.Enabled = True Unload Me Else Call FormNormal End If End Sub
Private Sub txtRefNota_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub dtpTanggal_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtKeterangan_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub cmbPenerbit_KeyPress(KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyReturn Then SendKeys "{tab}"
End If End Sub
Private Sub txtPenerbit_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtKode_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase((Chr(KeyAscii))))
If KeyAscii = vbKeyReturn Then Set Rs_barang = New ADODB.Recordset
Rs_barang.Open "SELECT * FROM barang WHERE kode_buku='" & txtKode.Text & "' ", _
Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_barang.BOF Then
MsgBox "Kode buku tidak dikenali", vbInformation, "Info" Else
txtNama.Text = Rs_barang!nama_buku txtHarga.SetFocus
End If End If End Sub
Private Sub txtHarga_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtJumlah.SetFocus
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
Private Sub txtJumlah_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
cmdMasuk.SetFocus
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
Private Sub txtHarga_GotFocus() If txtHarga.Text = "0" Then txtHarga.Text = ""
End If End Sub
Private Sub txtHarga_LostFocus() If txtHarga.Text = "" Then
txtHarga.Text = "0" End If
End Sub
Private Sub txtJumlah_GotFocus() If txtJumlah.Text = "0" Then txtJumlah.Text = ""
End If End Sub
Private Sub txtJumlah_LostFocus() If txtJumlah.Text = "" Then
txtJumlah.Text = "0" End If
End Sub
9.
Listing Program untuk Form Penjualan
Option Explicit Dim Baris As Integer Dim i, qty As Integer
Dim kode_penerbit As String
Dim TotalBelanja, UangBayar, UangKembali As Currency
Private Sub Form_Load() Call BukaDatabase
cmdSimpan.Enabled = False cmdCari.Enabled = False cmdMasuk.Enabled = False
txtNoTransaksi.Enabled = False
dtpTanggal.Value = Format(Now, "dd-MM-yyyy") TotalBelanja = 0 End Sub Sub FormKosong() txtNoTransaksi.Text = "" txtPelanggan.Text = "Pelanggan" txtKode.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtJumlah.Text = "0" txtDiskon.Text = "0" labelTotalBelanja.Caption = "0" Baris = 1 gridJual.Clear gridJual.Rows = 2 AktifGridJual End Sub Sub BersihBarang() txtKode.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtDiskon.Text = "0" txtJumlah.Text = "0" End Sub Sub BersihUang() txtUTotal.Text = "0" txtUBayar.Text = "0" txtUKembali.Text = "0" End Sub Sub FormMati() txtPelanggan.Enabled = False txtKode.Enabled = False txtNama.Enabled = False txtHarga.Enabled = False txtJumlah.Enabled = False End Sub Sub FormHidup() txtPelanggan.Enabled = True txtKode.Enabled = True txtJumlah.Enabled = True End Sub Sub FormNormal() Call FormMati Call FormKosong Call BersihUang TotalBelanja = 0 cmdKeluar.Caption = "&Keluar" cmdSimpan.Enabled = False cmdBaru.Enabled = True
cmdCari.Enabled = False cmdMasuk.Enabled = False End Sub
Sub KodeOtomatis()
Set Rs_transaksi_jual = New ADODB.Recordset
strSQL = "select no_penjualan from transaksi_jual ORDER BY no_penjualan"
Rs_transaksi_jual.Open strSQL, Koneksi, adOpenDynamic, adLockBatchOptimistic If Rs_transaksi_jual.BOF Then KodeBaru = "JL000001" Exit Sub Else Rs_transaksi_jual.MoveLast KodeBaru = Rs_transaksi_jual!no_penjualan KodeBaru = Right(KodeBaru, 6) KodeBaru = Val(KodeBaru) + 1 If Len(KodeBaru) > 5 Then
MsgBox "Kode baru melewati batas, belum bisa lebih dari 999999", vbCritical, "Error"
Exit Sub End If End If
KodeBaru = "JL" & Format(KodeBaru, "000000") End Sub
Sub AktifGridJual() With gridJual
.Cols = 7 'JUMLAH KOLOM 7 (0,1,2,3,4,5,6) 'PENGATURAN KOLOM KE-1
.Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-2
.Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-3
.Col = 2 .Row = 0
.Text = "NAMA BARANG" .CellFontBold = True .ColWidth(2) = 4500
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-4
.Col = 3 .Row = 0
.Text = "HARGA (Rp)" .CellFontBold = True
.ColWidth(3) = 1800
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-5
.Col = 4 .Row = 0 .Text = "DISKON (%)" .CellFontBold = True .ColWidth(4) = 1400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-6
.Col = 5 .Row = 0 .Text = "JUMLAH" .CellFontBold = True .ColWidth(5) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter 'PENGATURAN KOLOM KE-7
.Col = 6 .Row = 0 .Text = "SUBTOTAL (Rp)" .CellFontBold = True .ColWidth(6) = 1800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub
Private Sub cmdBaru_Click()
dtpTanggal.Value = Format(Now, "dd-MM-yyyy") Call FormHidup
Call AktifGridJual 'BUAT KODE OTOMATIS Call KodeOtomatis txtNoTransaksi.Text = KodeBaru cmdBaru.Enabled = False cmdCari.Enabled = True cmdKeluar.Caption = "&Batal" cmdSimpan.Enabled = True cmdMasuk.Enabled = True txtKode.SetFocus Baris = 1 End Sub
Private Sub cmdCari_Click() namaForm = "PENJUALAN" frmCaribarang.Show End Sub
Private Sub cmdMasuk_Click() If txtKode.Text = "" Then
MsgBox "Tidak ada barang yang hendak dibeli! ", vbOKOnly + vbCritical, "Konfirmasi"
txtKode.SetFocus
ElseIf txtJumlah.Text = "" Or txtJumlah.Text = "0" Then
MsgBox "Jumlah barang masih kosong!", vbOKOnly + vbCritical, "Konfirmasi"
txtJumlah.SetFocus Else
Dim subTotal As Currency Dim HargaDiskon As Currency 'HITUNG HARGA DISKON
HargaDiskon = Val(txtHarga.Text) - (Val(txtHarga.Text) * Val(txtDiskon.Text) / 100)
'MENJUMLAH TOTAL HARGA HARGA DISKON * JUMLAH YANG DIBELI) subTotal = HargaDiskon * Val(txtJumlah.Text)
'HITUNG TOTAL BELANJA
TotalBelanja = TotalBelanja + subTotal gridJual.Rows = Baris + 1 gridJual.TextMatrix(Baris, 0) = Baris gridJual.TextMatrix(Baris, 1) = txtKode.Text gridJual.TextMatrix(Baris, 2) = txtNama.Text gridJual.TextMatrix(Baris, 3) = txtHarga.Text gridJual.TextMatrix(Baris, 4) = txtDiskon.Text gridJual.TextMatrix(Baris, 5) = txtJumlah.Text gridJual.TextMatrix(Baris, 6) = subTotal labelTotalBelanja.Caption = Format(TotalBelanja, "##,##") txtUTotal.Text = TotalBelanja Baris = Baris + 1 Call BersihBarang End If End Sub
Private Sub cmdSimpan_Click() Dim i As Integer
If txtPelanggan.Text = "" Then
MsgBox "Pelanggan penjualan belum diisi!", vbOKOnly + vbCritical, "Perhatian"
txtPelanggan.SetFocus
ElseIf Val(txtUTotal.Text) > Val(txtUBayar.Text) Then
MsgBox "Uang Pembayaran Kurang!", vbOKOnly + vbCritical, "Perhatian"
txtUBayar.SetFocus ElseIf Baris = 1 Then
MsgBox "Belum ada barang yang masuk!, Grid masih kosong!", vbOKOnly + vbCritical, "Information"
frmCaribarang.Show Else
'BUAT KODE OTOMATIS
Rs_transaksi_jual.Requery Call KodeOtomatis
'SIMPAN DATA TRANSAKSI strSQL = ""
strSQL = "INSERT INTO transaksi_jual" _
& "(no_penjualan,tgl_transaksi,pelanggan,uang_bayar,id_user)" _ & "VALUES ('" & KodeBaru & "','" & Format(dtpTanggal.Value, "yyyy-MM-dd") & "','" _
& txtPelanggan.Text & "','" & txtUBayar.Text & "','" & userID & "')"
Koneksi.Execute strSQL, , adCmdText Rs_transaksi_jual.Requery
'PINDAH DATA DARI GRID KE TABEL ITEM TRANSAKSI (penjualan_item) For i = 1 To Baris - 1
'HITUNG HARGA DISKON
Dim HargaAsli, HargaDiskon, diskon As Currency HargaAsli = gridJual.TextMatrix(i, 3)
diskon = gridJual.TextMatrix(i, 4)
HargaDiskon = Val(HargaAsli) - (Val(HargaAsli) * Val(diskon) / 100)
strSQL = ""
strSQL = "INSERT INTO penjualan_item" _
& "(no_penjualan,kode_buku,harga_jual,jumlah)" _ & " VALUES ('" & KodeBaru & "','" _
& gridJual.TextMatrix(i, 1) & "','" _ & HargaDiskon & "','" _
& gridJual.TextMatrix(i, 5) & "')" Koneksi.Execute strSQL, , adCmdText 'KODE BARANG
Kode = gridJual.TextMatrix(i, 1) 'JUMLAH TERJUAL
qty = Val(gridJual.TextMatrix(i, 5))
'UPDATE DATA STOK DI TABEL MASTER STOK BARANG strSQL = ""
strSQL = "UPDATE barang SET stok=stok - " & qty & " WHERE kode_buku='" & Kode & "'"
Koneksi.Execute strSQL, , adCmdText Next i
MsgBox "Data telah tersimpan dalam database!", vbOKOnly + vbInformation, "Konfirmasi"
'LAKUKAN CETAK STRUK noNota = KodeBaru Call StrukJualPreview Call StrukJualPrint Call FormNormal End If End Sub
Private Sub cmdKeluar_Click()
If cmdKeluar.Caption = "&Keluar" Then frmutama.Enabled = True Unload Me Else Call FormNormal End If End Sub
Private Sub dtpTanggal_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtPelanggan_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
SendKeys "{tab}" End If
End Sub
Private Sub txtKode_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase((Chr(KeyAscii))))
If KeyAscii = vbKeyReturn Then Set Rs_barang = New ADODB.Recordset
Rs_barang.Open "SELECT * FROM barang WHERE kode_buku='" & txtKode.Text & "' ", _
If Rs_barang.BOF Then
MsgBox "Kode barang tidak dikenali", vbInformation, "Info" Else With Rs_barang txtNama.Text = !nama_buku txtJumlah.Text = 0 txtHarga.Text = !harga_jual End With txtJumlah.SetFocus End If End If End Sub
Private Sub txtJumlah_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
cmdMasuk.SetFocus
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
Private Sub txtUBayar_Change() On Error Resume Next
If txtUBayar.Text = "0" Or txtUTotal.Text = "0" Then txtUKembali.Text = "0"
Exit Sub Else
UangBayar = Val(Replace(txtUBayar.Text, ".", "")) UangKembali = Val(UangBayar) - Val(txtUTotal.Text) txtUKembali.Text = Format(UangKembali, "##,##0") End If
End Sub
Private Sub txtUBayar_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
'SAAT ENTER LAKUKAN SIMPAN OTOMATIS (KLIK SIMPAN) Call cmdSimpan_Click
ElseIf Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0 End If
End Sub
Private Sub txtUBayar_GotFocus() If txtUBayar.Text = "0" Then txtUBayar.Text = ""
End If End Sub
Private Sub txtUBayar_LostFocus() If txtUBayar.Text = "" Then
txtUBayar.Text = "0" End If
End Sub
Private Sub txtJumlah_GotFocus() If txtJumlah.Text = "0" Then
txtJumlah.Text = "" End If
End Sub
Private Sub txtJumlah_LostFocus() If txtJumlah.Text = "" Then
txtJumlah.Text = "0" End If
End Sub
Private Sub txtDiskon_GotFocus() If txtDiskon.Text = "0" Then txtDiskon.Text = ""
End If End Sub
Private Sub txtDiskon_LostFocus() If txtDiskon.Text = "" Then
txtDiskon.Text = "0" End If
End Sub
10.
Listing Program untuk Form StrukJual
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then
'SAAT TEKAN ENTER, MAKA FORM DITUTUP Unload Me
ElseIf KeyCode = 28 Then
'SAAT TEKAN ESC, MAKA FORM DITUTUP Unload Me
ElseIf KeyCode = 32 Or KeyCode = vbKeyF12 Then 'SAAT TEKAN SPASI / F12 = cetak ke printer Call StrukJualPrint
Unload Me End If End Sub
11.
Listing Program untuk Form Laporan Barang per Kategori
Private Sub Form_Load() Call BukaDatabase
Call ComboKategori End Sub
Sub ComboKategori()
Set Rs_kategori = New ADODB.Recordset
Rs_kategori.Open "SELECT * FROM kategori ORDER BY kode_kategori", Koneksi, adOpenDynamic, adLockBatchOptimistic
Rs_kategori.Requery With Rs_kategori If .EOF And .BOF Then
MsgBox "Data Kategori tidak ada", vbOKOnly + vbCritical, "Error" Else
'MENGISI SEMUA DATA KE DALAM COMBOBOX cmbKategori.Clear
cmbKategori.AddItem ![kode_kategori] + " | " + ![nama_kategori] .MoveNext Loop .MoveFirst End If End With End Sub
Private Sub cmbKategori_Click() Dim cmbTerpilih As String
Dim PanjangKanan As Integer cmbTerpilih = cmbKategori.Text
PanjangKanan = Len(cmbKategori.Text) - 6 cmbKategori.Text = Left(cmbKategori.Text, 4)
txtKategori.Text = Right(cmbTerpilih, PanjangKanan) End Sub
Private Sub cmdKeluar_Click() Unload Me
End Sub
Private Sub cmdTampil_Click() Dim SQL As String
Dim Rs_Tampil As New ADODB.Recordset Set Rs_Tampil = New ADODB.Recordset strSQL = ""
strSQL = " SELECT * FROM barang WHERE kode_kategori='" & cmbKategori.Text & "'"
Set Rs_Tampil = Koneksi.Execute(strSQL) If Rs_Tampil.BOF Then
MsgBox "Barang untuk kategori bersangkutan belum ada!", vbInformation + vbOKOnly, "Informasi"
Else DELaporan.Commands(5).CommandText = strSQL With rptLapBarangKategori .Sections("Section4").Controls("labelKategori").Caption = txtKategori.Text .Refresh .WindowState = 2 .Show 1 End With End If End Sub
12.
Listing Program untuk Form Laporan Pembelian per Periode
Private Sub Form_Load() Call BukaDatabase
DTPicker1.Value = Format(Date, "dd MMMM yyyy") DTPicker2.Value = Format(Date, "dd MMMM yyyy") End Sub
Private Sub cmdKeluar_Click() Unload Me
End Sub