• Tidak ada hasil yang ditemukan

Pembahasan Pada Asistensi Mengenai, Pada Bab: 1 Pengajuan Proposal

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pembahasan Pada Asistensi Mengenai, Pada Bab: 1 Pengajuan Proposal"

Copied!
56
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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 = ""

(9)

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"

(10)

.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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

.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

(16)

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

(17)

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 & "'"

(18)

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

(19)

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

(20)

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

(21)

.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

(22)

.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

(23)

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"

(24)

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

(25)

.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

(26)

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()

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

.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

(36)

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 & "'"

(37)

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

(38)

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

(39)

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

(40)

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

(41)

.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"

(42)

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)

(43)

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 & "' ", _

(44)

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

(45)

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

(46)

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

Referensi

Dokumen terkait

Rapat Umum Pemegang Saham (RUPS) merupakan instansi tertinggi dalam Perseroan, wadah para pemegang saham untuk bertindak secara setara dalam mengambil

Sai Apparel Industries Semarang menunjukan bahwa tidak ada hubungan sikap kerja duduk dengan kelelahan pada tenaga kerja bagian penjahitan di PT. Sai Apparel

Tujuan penelitian ini adalah untuk mengetahui perbedaan tingkat kepuasan pasien BPJS dan non BPJS pada mutu pelayanan bagian Pendaftaran Rumah Sakit Pusat Angkatan Udara

terkadang dapat digunakan untuk memperluas kemampuan HTML, sebagai contoh, kode HTML murni tidak memungkinkan untuk untuk mengatur ukuran font yang diterapkan pada

berkaitan dengan pajak penghasilan pasal 21 misalnya pembayaran gaji, upah dan lain sebagainya yang dilakukan oleh perusahaan dan bertujuan untuk menentukan jumlah penghasilan kena

Tujuan dari penelitian ini adalah untuk mengetahui dan mendapatkan kajian tentang pengaruh service recovery, perceived value dan brand image terhadap

Peneliti menyarankan pada responden (remaja) agar dapat memanfaatkan teknik relaksasi nafas dalam ataupun kompres hangat untuk mengurangi nyeri menstruasi

Hasil analisa Efektifitas pemberian posisi menyusui Cradle Hold terhadap penurunan nyeri episiotomi pada ibu post partum di Ruang Camar I RSUD Arifin Achmad