LAMPIRAN
Modul Utama
Option Explicit
Public KoneksiDB As New ADODB.Connection Public Rs_Jenis As ADODB.Recordset
Public Rs_Barang As ADODB.Recordset Public Rs_StokBarang As ADODB.Recordset Public Rs_Pengguna As ADODB.Recordset Public Rs_Penjualan As ADODB.Recordset Public Rs_CetakPenjualan As ADODB.Recordset Public Rs_PreviewPenjualan As ADODB.Recordset Public Rs As ADODB.Recordset
Public StrAkses As String Public SqlInsert As String Public SqlDelete As String Public SqlUpdate As String
Public PenggunaID, PenggunaNm As String Public SQL As String
Public Konfirmasi As String Public Status As String
Public Sub BukaDatabase()
StrAkses = "Provider=Microsoft.Jet.OLEDB.4.0;Persist " _ & "Security Info=False;Data Source=" _
& App.Path + "\DbBarang.mdb"
On Error Resume Next
If KoneksiDB.State = adStateOpen Then KoneksiDB.Close
Set KoneksiDB = New ADODB.Connection KoneksiDB.Open StrAkses
Else
KoneksiDB.Open StrAkses End If
Set Rs_Jenis = New ADODB.Recordset
Rs_Jenis.Open "SELECT * FROM Jenis_Barang", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " ORDER BY Kode_Barang", _
KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic
Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Stok_Barang <> 0 " _
& " ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic
Set Rs_Pengguna = New ADODB.Recordset
Rs_Pengguna.Open "SELECT * FROM Pengguna", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic
Set Rs_Penjualan = New ADODB.Recordset
Rs_Penjualan.Open "SELECT * FROM Penjualan", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic End Sub
Public Function TglSkrg(tgl As Date) As String TglSkrg = Format(Day(tgl), "00") & "/" _ & Format(Month(tgl), "00") & "/" _ & Format(Year(tgl))
End Function
Modul Cetak
Public Type arrCetak KodeBarang As String NamaBarang As String TanggalTerima As Date Jumlah As Long
HargaSatuan As Long Total As Long
End Type
Public tabCetak() As arrCetak
'# Tulisan rata kiri
'RKiri = RKiri + Space(Len(CFormat) - Len(RKiri)) Else 'Jika NData merupakan string kosong
RKiri = Format(NData, CFormat) RKiri = "" + Space(Len(CFormat) - 1) End If
End Function
'# Tulisan rata kanan
Function RKanan(NData, CFormat) As String If NData > 0 Then 'Jika NData bilangan positif RKanan = Format(NData, CFormat)
RKanan = RKanan + Space(Len(CFormat) - Len(RKanan)) Else 'Jika NData merupakan bilangan nol
RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - 1) + "0" End If
End Function
Public Function IsPrinterInstalled() As Boolean On Error Resume Next
Dim strDummy As String
strDummy = Printer.DeviceName If Err.Number Then
IsPrinterInstalled = False Else
IsPrinterInstalled = True End If
End Function
Form Menu Utama
Option Explicit
Private Sub Form_Paint() Dim lebar As Single Dim tinggi As Single Dim x As Single Dim y As Single
lebar = Picture1.ScaleWidth tinggi = Picture1.ScaleHeight y = Toolbar1.Height
Do While y < ScaleHeight x = 0
Do While x < ScaleWidth
PaintPicture Picture1.Picture, _ x, y, lebar, tinggi
x = x + lebar Loop
Loop End Sub
Private Sub Form_Unload(Cancel As Integer) Dim Tanya
Tanya = MsgBox("Keluar dari Sistem?", vbQuestion + vbYesNo)
If Tanya = vbYes Then End
Else Exit Sub End If End Sub
Private Sub mnuGraJualBln_Click()
cr.ReportFileName = App.Path + "\rptGraJualBln.rpt" cr.DataFiles(0) = App.Path + "\DbBarang.mdb" cr.DiscardSavedData = True
cr.Destination = crptToWindow cr.WindowState = crptMaximized cr.Action = 28
End Sub
Private Sub mnuKeluar_Click() Dim Tanya
Tanya = MsgBox("Keluar Dari Program Ini?", vbQuestion + vbYesNo, "Keluar")
If Tanya = vbYes Then End
Else End If
End Sub
Private Sub mnuJualPeriode_Click() frmLapJualPeriode.Show 1 End Sub
Private Sub mnuJualTgl_Click() frmLapJualTgl.Show 1 End Sub
Private Sub mnuLapBrgJualAntrTgl_Click() frmLapBrgAntrTgl.Show 1
Private Sub mnuLapJlhBrgJualBln_Click() frmLapJlhBrgJualBln.Show 1
End Sub
Private Sub mnuLapJualAntrTgl_Click() frmLapJlAntrTgl.Show 1
End Sub
Private Sub mnuLapSelBrgJual_Click()
cr.ReportFileName = App.Path + "\rptGraSelJlhBrg.rpt" cr.DataFiles(0) = App.Path + "\DbBarang.mdb"
cr.DiscardSavedData = True cr.Destination = crptToWindow cr.WindowState = crptMaximized cr.Action = 28
End Sub
Private Sub mnuPengguna_Click() frmPengguna.Show 1
End Sub
Private Sub mnuJenis_Click() frmJenis.Show 1, FrmUtama End Sub
Private Sub mnuLapJual_Click() With rptLapPenjualan
.Sections("Section4").Controls("Label5").Caption = _ Format(Date, "dd MMMM yyyy")
.Show 1 End With End Sub
Private Sub mnuLapBarang_Click() With rptBarang
.Sections("Section4").Controls("Label5").Caption = _ Format(Date, "dd MMMM yyyy")
.Show 1 End With End Sub
Private Sub mnuLogin_Click()
If FrmUtama.mnuLogin.Caption = "Login" Then frmLogin.Show 1
Else
mnuJenis.Enabled = False mnuTamStok.Enabled = False mnuPengguna.Enabled = False mnuTransaksi.Enabled = False Toolbar1.Enabled = False
Me.mnuLogin.Caption = "Login" End If
End Sub
Private Sub mnuBarang_Click() frmBarang.Show 1, FrmUtama End Sub
Private Sub mnuBarangJenis_Click() frmLapBarangJenis.Show 1 End Sub
Private Sub mnuTamStok_Click() frmTambahStok.Show 1
End Sub
Private Sub mnuTransJual_Click() frmJual.Show 1, FrmUtama End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next
Select Case Button.Index Case 1:
frmJenis.Show 1 Case 2:
frmBarang.Show 1 Case 4:
frmTambahStok.Show 1 Case 5:
frmJual.Show 1 Case 7:
frmLogin.Show 1 End Select
End Sub
Form Menu Login
Option Explicit
Dim MaxLogin As Integer
Private Sub Form_Load()
Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase
cmbStatus.AddItem ("KASIR") cmbStatus.AddItem ("ADMIN") End Sub
Private Sub TbLogin_Click() If txtUser.Text = "" Then
MsgBox "USER ID MASIH KOSONG !", _ vbCritical + vbOKOnly, "Error"
txtUser.SetFocus
ElseIf txtPwd.Text = "" Then
MsgBox "PASSWORD MASIH KOSONG !", _ vbCritical + vbOKOnly, "Error"
txtPwd.SetFocus Else
SQL = ""
SQL = "SELECT * FROM Pengguna " _
& "WHERE UserID='" & txtUser.Text & "' " _ & " AND PassID='" & txtPwd.Text & "'" _ & " AND Status='" & cmbStatus.Text & "'" Set Rs_Pengguna = KoneksiDB.Execute(SQL)
If Not Rs_Pengguna.BOF Then
If Rs_Pengguna!Status = "ADMIN" Then Unload Me
FrmUtama.Enabled = True FrmUtama.Show
FrmUtama.mnuLaporan.Enabled = True FrmUtama.mnuBarang.Enabled = True FrmUtama.mnuJenis.Enabled = True FrmUtama.mnuPengguna.Enabled = True FrmUtama.mnuTransaksi.Enabled = True FrmUtama.mnuTamStok.Enabled = True FrmUtama.mnuTransJual.Enabled = True FrmUtama.mnuJualPeriode.Enabled = True FrmUtama.mnuLapJual.Enabled = True FrmUtama.mnuJualTgl.Enabled = True
Else
Unload Me
FrmUtama.Enabled = True FrmUtama.Show
FrmUtama.mnuLaporan.Enabled = True FrmUtama.mnuLapBarang.Enabled = True FrmUtama.mnuBarangJenis.Enabled = True FrmUtama.mnuTransJual.Enabled = True FrmUtama.mnuTamStok.Enabled = False FrmUtama.mnuJualPeriode.Enabled = False FrmUtama.mnuLapJual.Enabled = False FrmUtama.mnuJualTgl.Enabled = False FrmUtama.mnuBarang.Enabled = False FrmUtama.mnuJenis.Enabled = False FrmUtama.mnuPengguna.Enabled = False FrmUtama.mnuTransaksi.Enabled = True FrmUtama.mnuLapJualAntrTgl.Enabled = False FrmUtama.mnuLapBrgJualAntrTgl.Enabled = False FrmUtama.mnuLapSelBrgJual.Enabled = False FrmUtama.mnuLapJlhBrgJualBln.Enabled = False FrmUtama.mnuGraJualBln.Enabled = False FrmUtama.Toolbar1.Enabled = False End If
PenggunaID = Rs_Pengguna!UserId PenggunaNm = Rs_Pengguna!Nama
With FrmUtama
.StatusBar1.Panels(1).Text = Rs_Pengguna!Nama .StatusBar1.Panels(2).Text = "[" _
& Rs_Pengguna!Status & "]" .mnuLogin.Enabled = True .mnuLogin.Caption = "Logout" End With
Unload Me Else
' Periksa, login hanya 3 kali ' 3x gagal pesan error ditampilkan If MaxLogin < 3 Then
MsgBox "PASSWORD MASIH SALAH, SILAHKAN ULANGI LAGI!", _ vbCritical + vbOKOnly, "Error"
txtPwd.Text = "" txtPwd.SetFocus
MaxLogin = MaxLogin + 1 Else
MsgBox "ANDA BUKAN USER YANG BERHAK!", _ vbCritical + vbOKOnly, "Error"
End If End If End If End Sub
Private Sub TbTutup_Click() Dim pil As VbMsgBoxResult
pil = MsgBox("Anda Yakin untuk keluar?", vbQuestion + vbYesNo, "Exit") If (pil = vbYes) Then Unload Me
End Sub
Form Menu Data Jenis
Option Explicit
Dim GridObjIndex As Byte Dim KodeJenis As String
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase Call TampilGridData Call FormMati
TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False End Sub
Sub FormKosong() txtKode.Text = "" txtNama.Text = "" End Sub
Sub FormHidup()
txtKode.Enabled = True txtNama.Enabled = True End Sub
Sub FormMati()
txtKode.Enabled = False txtNama.Enabled = False End Sub
FormKosong FormMati
TbTambah.Enabled = True TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False TbKeluar.Caption = "Keluar" End Sub
Sub BuatKodeJenis() Rs_Jenis.Requery
Set Rs_Jenis = New ADODB.Recordset Set Rs_Jenis = New ADODB.Recordset
Rs_Jenis.Open "SELECT * FROM Jenis_Barang", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic
If Rs_Jenis.BOF Then KodeJenis = "K0001" Exit Sub
Else
Rs_Jenis.MoveLast
KodeJenis = Rs_Jenis!Kode_Jenis KodeJenis = Right(KodeJenis, 4) KodeJenis = Val(KodeJenis) + 1
If Len(KodeJenis) > 4 Then
MsgBox "Kode jenis baru melewati batas", _ vbCritical, "Error"
Exit Sub End If End If
KodeJenis = "K" & Format(KodeJenis, "0000") End Sub
Sub AktifGridJenis() With GridJenis
.RowHeightMin = 300 .Col = 0
.Row = 0 .Text = "NO"
.CellFontBold = True .ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Row = 0
.Text = "KODE" .CellFontBold = True .ColWidth(1) = 800
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 2 .Row = 0
.Text = "NAMA JENIS" .CellFontBold = True .ColWidth(2) = 6000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With
End Sub
Sub TampilGridData() Dim Baris As Integer GridJenis.Clear AktifGridJenis
GridJenis.Rows = 2 Baris = 0
Call BukaDatabase If Rs_Jenis.BOF Then
MsgBox "Tabel Jenis masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub
Else
With Rs_Jenis .MoveFirst
Do While Not .EOF On Error Resume Next Baris = Baris + 1
GridJenis.Rows = Baris + 1
GridJenis.TextMatrix(Baris, 0) = Baris
GridJenis.TextMatrix(Baris, 1) = !Kode_Jenis GridJenis.TextMatrix(Baris, 2) = !Nama_Jenis .MoveNext
Loop End With End If End Sub
TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbTambah.Enabled = False
Call FormHidup txtNama.SetFocus
GridObjIndex = GridJenis.Row
Set Rs_Jenis = New ADODB.Recordset
Rs_Jenis.Open " SELECT * FROM Jenis_Barang " _ & " WHERE Kode_Jenis='" _
& GridJenis.TextMatrix(GridObjIndex, 1) & "' " _ , KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Rs_Jenis.BOF Then
MsgBox "Tabel jenis Barang masih kosong!", _ vbOKOnly + vbInformation, "Perhatian"
Exit Sub
Call FormNormal Else
Rs_Jenis.MoveFirst
Do While Not Rs_Jenis.EOF On Error Resume Next
txtKode.Text = Rs_Jenis!Kode_Jenis txtNama.Text = Rs_Jenis!Nama_Jenis Rs_Jenis.MoveNext
Loop End If End Sub
'# TOMBOL TAMBAH DIKLIK Private Sub TbTambah_Click() Call FormHidup
Call BuatKodeJenis txtKode.Text = KodeJenis
TbSimpan.Enabled = True TbTambah.Enabled = False TbUbah.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal" txtNama.SetFocus
Call TampilGridData End Sub
Dim Rs_Jenis As New ADODB.Recordset
Set Rs_Jenis = KoneksiDB.Execute("SELECT * " _ & " FROM Jenis_Barang " _
& " WHERE Nama_Jenis='" & txtNama.Text & "' ")
If txtNama.Text = "" Then
MsgBox "Nama Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian"
txtNama.SetFocus
ElseIf Not Rs_Jenis.BOF Then
MsgBox "Maaf, Nama jenis Barang" _ & " " & UCase(txtNama.Text) _ & " sudah tersedia!!", _
vbInformation + vbOKOnly, "Information" txtNama.Text = ""
txtNama.SetFocus Exit Sub
Else
SqlInsert = "INSERT INTO Jenis_Barang " _ & " (Kode_Jenis,Nama_Jenis) " _
& " VALUES('" & txtKode.Text & "','" _ & txtNama.Text & "')"
KoneksiDB.Execute SqlInsert, , adCmdText Rs_Jenis.Requery
Call FormNormal Call Form_Load
MsgBox "Data telah tersimpan dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" End If
End Sub
'# TOMBOL UBAH DIKLIK Private Sub TbUbah_Click() If txtNama.Text = "" Then
MsgBox "Nama jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian"
txtNama.SetFocus Else
SqlUpdate = "UPDATE Jenis_Barang" _
& " SET Nama_Jenis='" & txtNama.Text & "' " _ & " WHERE Kode_Jenis='" & txtKode.Text & "'"
KoneksiDB.Execute SqlUpdate, , adCmdText Rs_Jenis.Requery
Call FormNormal
vbOKOnly + vbInformation, "Konfirmasi"
Call Form_Load End If
End Sub
'# TOMBOL HAPUS DIKLIK Private Sub TbHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan " _ & " menghapus pesan ini?", _
vbYesNo + vbQuestion, "Konfirmasi") If Konfirmasi = vbYes Then
SqlDelete = "DELETE FROM Jenis_Barang WHERE " _ & " Kode_Jenis='" & txtKode.Text & "'"
KoneksiDB.Execute SqlDelete, , adCmdText Rs_Jenis.Requery
Call FormNormal Call Form_Load Else
Call FormNormal End If
End Sub
'# TOMBOL KELUAR DIKLIK Private Sub TbKeluar_Click()
If TbKeluar.Caption = "Keluar" Then Unload Me
Else
Call FormNormal End If
End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase((Chr(KeyAscii))))
If KeyAscii = vbKeyReturn Then TbSimpan.SetFocus
KeyAscii = 0 End If
End Sub
Form Menu Data Barang
Option Explicit
Dim GridObjIndex As Byte Dim Kd_Jenis As String Dim KodeBarang As String Dim KeteranganBarang As String
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase Call TampilGridData Call FormMati
TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False
Call CmbJenis_Click Call cmbJenis_DropDown End Sub
Sub FormKosong() txtKode.Text = "" CmbJenis.ListIndex = -1 txtNama.Text = "" txtHarga.Text = "0" txtStok.Text = "0" txtKeterangan.Text = "" End Sub
Sub FormHidup()
txtKode.Enabled = True CmbJenis.Enabled = True txtNama.Enabled = True txtHarga.Enabled = True txtStok.Enabled = True txtKeterangan.Enabled = True End Sub
Sub FormMati()
txtKode.Enabled = False CmbJenis.Enabled = False txtNama.Enabled = False txtHarga.Enabled = False txtStok.Enabled = False txtKeterangan.Enabled = False End Sub
Sub FormNormal() Call FormKosong Call FormMati
TbTambah.Enabled = True TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False TbKeluar.Caption = "Keluar" End Sub
Private Sub CmbJenis_Click() Kd_Jenis = ""
Set Rs_Jenis = KoneksiDB.Execute("SELECT * FROM " _ & " Jenis_Barang WHERE " _
& " Nama_Jenis='" & CmbJenis.Text & "'") With Rs_Jenis
If .EOF And .BOF Then Exit Sub
Else
Kd_Jenis = Rs_Jenis!Kode_Jenis txtNama.SetFocus
End If End With End Sub
Private Sub cmbJenis_DropDown() CmbJenis.Clear
Set Rs_Jenis = KoneksiDB.Execute("SELECT * FROM " _ & " Jenis_Barang ORDER BY Nama_Jenis")
If Not Rs_Jenis.BOF Then While Not Rs_Jenis.EOF
CmbJenis.AddItem Rs_Jenis!Nama_Jenis Rs_Jenis.MoveNext
Wend End If End Sub
Sub BuatKodeBarang() Rs_Barang.Requery
Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " ORDER BY Kode_Barang ASC ", _
KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Rs_Barang.BOF Then KodeBarang = "B0001" Exit Sub
Rs_Barang.MoveLast
KodeBarang = Rs_Barang!Kode_Barang KodeBarang = Right(KodeBarang, 4) KodeBarang = Val(KodeBarang) + 1
If Len(KodeBarang) > 4 Then
MsgBox "Kode baru melewati batas", _ vbCritical, "Error"
Exit Sub End If End If
KodeBarang = "B" & Format(KodeBarang, "0000") End Sub
Sub AktifGridBarang() With GridBarang
.RowHeightMin = 300 .Col = 0
.Row = 0 .Text = "NO"
.CellFontBold = True .ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.RowHeightMin = 300 .Col = 1
.Row = 0
.Text = "KODE" .CellFontBold = True .ColWidth(1) = 750
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 2 .Row = 0
.Text = "JENIS" .CellFontBold = True .ColWidth(2) = 1900
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 3 .Row = 0
.Text = "NAMA BARANG" .CellFontBold = True
.ColWidth(3) = 3300
.CellAlignment = flexAlignCenterCenter
.Col = 4 .Row = 0
.Text = "HARGA [Rp.]" .CellFontBold = True .ColWidth(4) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 5 .Row = 0
.Text = "STOK" .CellFontBold = True .ColWidth(5) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 6 .Row = 0
.Text = "KETERANGAN" .CellFontBold = True .ColWidth(6) = 3000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
End With End Sub
Sub TampilGridData() Dim Baris As Integer GridBarang.Clear Call AktifGridBarang
GridBarang.Rows = 2 Baris = 0
Call BukaDatabase
If Rs_Barang.BOF Then
MsgBox "Tabel Barang masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub
Else
With Rs_Barang .MoveFirst
GridBarang.Rows = Baris + 1
GridBarang.TextMatrix(Baris, 0) = Baris
GridBarang.TextMatrix(Baris, 1) = !Kode_Barang GridBarang.TextMatrix(Baris, 2) = !Nama_Jenis GridBarang.TextMatrix(Baris, 3) = !Nm_Barang GridBarang.TextMatrix(Baris, 4) = !Hrg_Satuan GridBarang.TextMatrix(Baris, 5) = !Stok_Barang GridBarang.TextMatrix(Baris, 6) = !Keterangan .MoveNext
Loop End With End If End Sub
Private Sub GridBarang_DblClick() TbHapus.Enabled = True
TbSimpan.Enabled = False TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbTambah.Enabled = False txtStok.Locked = True
Call FormHidup CmbJenis.SetFocus
GridObjIndex = GridBarang.Row
Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Kode_Barang='" _
& GridBarang.TextMatrix(GridObjIndex, 1) _ & "' ORDER BY Kode_Barang ASC ", _
KoneksiDB, 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
txtHarga.Text = Rs_Barang!Hrg_Satuan txtStok.Text = Rs_Barang!Stok_Barang txtKeterangan.Text = Rs_Barang!Keterangan Rs_Barang.MoveNext
Loop End If End Sub
Private Sub Label1_Click()
End Sub
Private Sub TbTambah_Click() Call FormHidup
Call BuatKodeBarang txtKode.Text = KodeBarang
TbSimpan.Enabled = True TbTambah.Enabled = False TbUbah.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal" CmbJenis.SetFocus
Call TampilGridData End Sub
Private Sub TbSimpan_Click() If CmbJenis.ListIndex = -1 Then
MsgBox "Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" CmbJenis.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus
ElseIf txtHarga.Text = "" Or txtHarga.Text = "0" Then MsgBox "Harga Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtHarga.SetFocus
ElseIf txtStok.Text = "" Then
MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus
Else
If txtKeterangan = "" Then
KeteranganBarang = "Tidak ada keterangan" Else
End If
SqlInsert = "INSERT INTO Barang " _
& " (Kode_Barang,Kode_Jenis, Nm_Barang, " _ & " Hrg_Satuan,Stok_Barang, Keterangan)" _ & " VALUES('" & txtKode.Text & "','" _ & Kd_Jenis & "','" & txtNama.Text & "','" _ & txtHarga.Text & "','" & txtStok.Text & "','" _ & KeteranganBarang & "')"
KoneksiDB.Execute SqlInsert, , adCmdText Rs_Barang.Requery
Call FormNormal Call Form_Load
MsgBox "Data telah tersimpan dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" End If
End Sub
Private Sub TbUbah_Click() If CmbJenis.ListIndex = -1 Then
MsgBox "Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" CmbJenis.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "Nama Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus
ElseIf txtHarga.Text = "" Or txtHarga.Text = "0" Then MsgBox "Harga Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtHarga.SetFocus
ElseIf txtStok.Text = "" Then
MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus
Else
If txtKeterangan = "" Then
KeteranganBarang = "Tidak ada keterangan" Else
KeteranganBarang = txtKeterangan.Text End If
SqlUpdate = "UPDATE Barang" _
& " Keterangan='" & KeteranganBarang & "' " _ & " WHERE Kode_Barang='" & txtKode.Text & "'"
KoneksiDB.Execute SqlUpdate, , 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 TbHapus_Click()
Konfirmasi = MsgBox("Anda yakin akan " _ & " menghapus pesan ini?", _
vbYesNo + vbQuestion, "Konfirmasi") If Konfirmasi = vbYes Then
SqlDelete = "DELETE FROM Barang WHERE " _ & " Kode_Barang='" & txtKode.Text & "'"
KoneksiDB.Execute SqlDelete, , adCmdText Rs_Barang.Requery
Call FormNormal Call Form_Load Else
Call FormNormal End If
End Sub
Private Sub TbKeluar_Click()
If TbKeluar.Caption = "Keluar" Then Unload Me
Else
FormNormal End If
End Sub
Private Sub txtHarga_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtStok.SetFocus
ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep
KeyAscii = 0 End If
Private Sub txtKeterangan_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
TbSimpan.SetFocus KeyAscii = 0 End If
End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtHarga.SetFocus KeyAscii = 0 End If
End Sub
Private Sub txtStok_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtKeterangan.SetFocus
ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep
KeyAscii = 0 End If
End Sub
Form Menu Pengguna
Option Explicit
Dim GridBaris As Byte Dim TmpPassword As String Dim NewPassword As String Dim Tanya As String
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase Call TampilGridData
cmbStatus.Clear
cmbStatus.AddItem ("KASIR") cmbStatus.AddItem ("ADMIN")
TbSimpan.Enabled = False TbHapus.Enabled = False
Call FormMati End Sub
Sub FormKosong() txtUserId.Text = "" txtPassword.Text = "" txtNama.Text = "" cmbStatus.ListIndex = -1 End Sub
Sub FormHidup()
txtUserId.Enabled = True txtPassword.Enabled = True txtNama.Enabled = True cmbStatus.Enabled = True
txtUserId.BackColor = &HFFFFFF txtPassword.BackColor = &HFFFFFF txtNama.BackColor = &HFFFFFF cmbStatus.BackColor = &HFFFFFF End Sub
Sub FormMati()
txtUserId.Enabled = False txtPassword.Enabled = False txtNama.Enabled = False cmbStatus.Enabled = False
txtUserId.BackColor = &HC0FFFF txtPassword.BackColor = &HC0FFFF txtNama.BackColor = &HC0FFFF cmbStatus.BackColor = &HC0FFFF End Sub
Sub FormNormal() Call FormKosong Call FormMati
TbBaru.Enabled = True TbUbah.Enabled = False TbHapus.Enabled = False TbSimpan.Enabled = False TbKeluar.Caption = "Keluar" End Sub
With GridPengguna
.RowHeightMin = 300 .Col = 0
.Row = 0
.Text = "USER ID" .CellFontBold = True .ColWidth(0) = 1300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 1 .Row = 0
.Text = "PASSWORD" .CellFontBold = True .ColWidth(1) = 1300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 2 .Row = 0
.Text = "NAMA PEMILIK" .CellFontBold = True .ColWidth(2) = 3700
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 3 .Row = 0
.Text = "STATUS" .CellFontBold = True .ColWidth(3) = 1300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With
End Sub
Sub TampilGridData() Dim Baris As Integer GridPengguna.Clear Call AktifGridPengguna
GridPengguna.Rows = 2 Baris = 0
Set Rs_Pengguna = New ADODB.Recordset
If Rs_Pengguna.BOF Then
MsgBox "DATA Pengguna MASIH KOSONG!", _ vbOKOnly + vbInformation, "Perhatian"
Exit Sub Else
With Rs_Pengguna .MoveFirst
Do While Not .EOF On Error Resume Next Baris = Baris + 1
GridPengguna.Rows = Baris + 1
GridPengguna.TextMatrix(Baris, 0) = !UserId GridPengguna.TextMatrix(Baris, 1) = "xxxxxxx" GridPengguna.TextMatrix(Baris, 2) = !Nama GridPengguna.TextMatrix(Baris, 3) = !Status .MoveNext
Loop End With End If End Sub
Private Sub GridPengguna_DblClick() TbHapus.Enabled = True
TbSimpan.Enabled = False TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbBaru.Enabled = False txtUserId.Locked = True
Call FormHidup txtPassword.SetFocus
GridBaris = GridPengguna.Row
Set Rs_Pengguna = New ADODB.Recordset
Rs_Pengguna.Open "SELECT * FROM Pengguna " _ & " WHERE UserId='" _
& GridPengguna.TextMatrix(GridBaris, 0) & "'", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Rs_Pengguna.BOF Then
MsgBox "TABEL MASIH KOSONG", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub
Call FormNormal Else
Rs_Pengguna.MoveFirst
txtUserId.Text = Rs_Pengguna!UserId txtNama.Text = Rs_Pengguna!Nama cmbStatus.Text = Rs_Pengguna!Status
TmpPassword = Rs_Pengguna!PassId Rs_Pengguna.MoveNext
Loop End If End Sub
Private Sub TbBaru_Click() Call FormHidup
Call TampilGridData
TbSimpan.Enabled = True TbBaru.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal"
txtUserId.Locked = False txtUserId.SetFocus End Sub
Private Sub TbSimpan_Click()
Set Rs_Pengguna = New ADODB.Recordset
Rs_Pengguna.Open "SELECT * FROM Pengguna WHERE " _ & " UserId='" & Trim(txtUserId.Text) & "'", _
KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Len(txtUserId.Text) <= 4 Then
MsgBox "USER ID MINIMAL 4 DIGIT", _ vbOKOnly + vbCritical, "Error"
txtUserId.SetFocus
ElseIf txtNama.Text = "" Then
MsgBox "NAMA BELUM DIISI", _ vbOKOnly + vbCritical, "Error" txtNama.SetFocus
ElseIf Not Rs_Pengguna.BOF Then MsgBox "Maaf, UserId" _
& " " & UCase(txtUserId.Text) _ & " sudah tersedia!!", _
vbInformation + vbOKOnly, "Information" txtUserId.Text = ""
txtUserId.SetFocus Exit Sub
Else
SqlInsert = "INSERT INTO Pengguna " _ & " (UserId,PassId,Nama,Status) " _
& Trim(txtPassword.Text) & "','" _ & Trim(txtNama.Text) & "','" _ & Trim(cmbStatus.Text) & "')"
KoneksiDB.Execute SqlInsert, , adCmdText Rs_Pengguna.Requery
Call FormNormal Call Form_Load
MsgBox "DATA PENGGUNA BARU TELAH TERSIMPAN", _ vbOKOnly + vbInformation, "Sukses"
End If End Sub
Private Sub TbUbah_Click()
Set Rs_Pengguna = New ADODB.Recordset
Rs_Pengguna.Open "SELECT * FROM Pengguna WHERE " _ & " UserId='" & Trim(txtUserId.Text) & "'", _
KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If txtNama.Text = "" Then
MsgBox "NAMA BELUM DIISI", _ vbOKOnly + vbCritical, "Error" txtNama.SetFocus
Else
If Trim(txtPassword.Text) = "" Then NewPassword = TmpPassword Else
NewPassword = txtPassword.Text End If
Tanya = MsgBox("AKAN MERUBAH DATA PENGGUNA? DARI : " _ & vbCrLf & "" & "NAMA LAMA : " _
& Rs_Pengguna.Fields!Nama + vbCrLf & "" _
& "NAMA BARU : " & txtNama.Text + vbCrLf & "", _ vbYesNo + vbQuestion, "Awass")
If Tanya = vbYes Then
SqlUpdate = "UPDATE Pengguna" _
& " SET PassId='" & NewPassword & " ', " _ & " Nama='" & Trim(txtNama.Text) & "', " _ & " Status='" & Trim(cmbStatus.Text) & "' " _ & " WHERE UserId='" & Trim(txtUserId.Text) & "'"
KoneksiDB.Execute SqlUpdate, , adCmdText End If
Call Form_Load End If
End Sub
Private Sub TbHapus_Click()
Tanya = MsgBox("YAKIN AKAN MENGHAPUS DATA INI?" _ & vbCrLf & "" & "USER ID : " _
& txtUserId + vbCrLf & "" _
& "NAMA : " & txtNama.Text + vbCrLf & "", _ vbYesNo + vbQuestion, "Awass")
If Tanya = vbYes Then
SQL = "DELETE FROM Pengguna WHERE " _ & " UserId='" & txtUserId.Text & "'"
KoneksiDB.Execute SQL, , adCmdText
Rs_Pengguna.Requery Call FormNormal Call FormMati Call TampilGridData Else
Call FormNormal End If
End Sub
Private Sub TbKeluar_Click()
If TbKeluar.Caption = "Keluar" Then Unload Me
Else
Call FormNormal End If
End Sub
Private Sub txtUserId_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtPassword.SetFocus KeyAscii = 0
End If End Sub
Private Sub txtPassword_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
txtNama.SetFocus KeyAscii = 0 End If
End Sub
If KeyAscii = vbKeyReturn Then cmbStatus.SetFocus
KeyAscii = 0 End If
End Sub
Form Menu Tambah Stok Barang
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase Call FormMati
SkinLabel7.Visible = False txtStokLama.Visible = False
TbCari.Enabled = False TbSimpan.Enabled = False End Sub
Sub FormKosong() txtKode.Text = "" txtJenis.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtStok.Text = "0" txtStokLama.Text = "" txtKeterangan.Text = "" End Sub
Sub FormHidup()
txtKode.Enabled = True txtJenis.Enabled = True txtNama.Enabled = True txtHarga.Enabled = True txtStok.Enabled = True txtKeterangan.Enabled = True End Sub
Sub FormMati()
txtHarga.Enabled = False txtStok.Enabled = False txtKeterangan.Enabled = False End Sub
Sub FormNormal() Call FormKosong Call FormMati
txtStok.Locked = False SkinLabel7.Visible = False txtStokLama.Visible = False
TbCari.Enabled = False TbTambah.Enabled = True TbSimpan.Enabled = False TbKeluar.Caption = "Keluar" End Sub
Private Sub TbCari_Click() FrmUtama.Enabled = False frmTambahStok.Enabled = False frmCariBarang.Show 1
End Sub
Private Sub TbKeluar_Click()
If TbKeluar.Caption = "Keluar" Then FrmUtama.Enabled = True
Unload Me Else
FormNormal End If
End Sub
Private Sub TbSimpan_Click()
If txtStok.Text = "" Or txtStok.Text = "0" Then MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus
Else
SqlUpdate = ""
SqlUpdate = "UPDATE Barang" _
& " SET Stok_Barang=Stok_Barang + " _ & Val(txtStok.Text) & "" _
& " WHERE Kode_Barang='" & txtKode.Text & "'"
Rs_Barang.Requery Call FormNormal
MsgBox "Data telah ter_update dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi"
Call Form_Load End If
End Sub
Private Sub TbTambah_Click() Call FormHidup
TbCari.Enabled = True TbSimpan.Enabled = True TbTambah.Enabled = False TbKeluar.Caption = "Batal" txtKode.SetFocus
End Sub
Private Sub txtKode_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
If Len(txtKode.Text) < 5 Then
MsgBox "KODE BARANG HARUS 5 DIGIT", _ vbCritical, "Error"
Exit Sub End If
KeyAscii = 0
SkinLabel7.Visible = True txtStokLama.Visible = True
Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang='" _
& txtKode.Text & "' ", _
KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then
MsgBox "KODE BARANG TIDAK DIKENALI ..", _ vbInformation, "Info"
Else
With Rs_Barang
End With End If End If End Sub
Private Sub txtStok_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
TbSimpan.SetFocus
ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep
KeyAscii = 0 End If
End Sub
Form Menu Cari Daftar Barang
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 4
Call BukaDatabase Call TampilGridData End Sub
Sub AktifGridBarang() With GridBarang
.RowHeightMin = 300 .Col = 0
.Row = 0 .Text = "NO"
.CellFontBold = True .ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.RowHeightMin = 300 .Col = 1
.Row = 0
.Text = "KODE" .CellFontBold = True .ColWidth(1) = 750
.Col = 2 .Row = 0
.Text = "JENIS" .CellFontBold = True .ColWidth(2) = 1900
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 3 .Row = 0
.Text = "NAMA BARANG" .CellFontBold = True
.ColWidth(3) = 3300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 4 .Row = 0
.Text = "HARGA [Rp.]" .CellFontBold = True .ColWidth(4) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 5 .Row = 0
.Text = "STOK" .CellFontBold = True .ColWidth(5) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 6 .Row = 0
.Text = "KETERANGAN" .CellFontBold = True .ColWidth(6) = 3000
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
End With End Sub
Sub TampilGridData() Dim Baris As Integer
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_Barang GridBarang.TextMatrix(Baris, 2) = !Nama_Jenis GridBarang.TextMatrix(Baris, 3) = !Nm_Barang GridBarang.TextMatrix(Baris, 4) = !Hrg_Satuan GridBarang.TextMatrix(Baris, 5) = !Stok_Barang GridBarang.TextMatrix(Baris, 6) = UCase(!Keterangan) .MoveNext
Loop End With End If End Sub
Private Sub GridBarang_DblClick() Dim barisGrid As String
barisGrid = GridBarang.Row
frmTambahStok.SkinLabel7.Visible = True frmTambahStok.txtStokLama.Visible = True
If GridBarang.Rows <> 1 Then With frmTambahStok
.txtKode.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 1)) .txtJenis.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 2)) .txtNama.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 4)) .txtStokLama.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 5)) .txtKeterangan.Text = _
Else Exit Sub End If
FrmUtama.Enabled = False frmTambahStok.Enabled = True Unload Me
End Sub
Private Sub TbNormal_Click() Call Form_Load
txtCari.Text = "" txtCari.SetFocus End Sub
Private Sub TbTutup_Click() FrmUtama.Enabled = False frmTambahStok.Enabled = True Unload Me
End Sub
Private Sub txtCari_Change() If Option2.Value = True Then
Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Nm_Barang LIKE '%" _
& txtCari.Text & "%' " _
& " ORDER BY Kode_Barang", _
KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Rs_Barang.BOF Then
MsgBox "Tidak menemukan nama Barang! " _ & " - " & txtCari.Text & " - dalam tabel", _ vbInformation, "Informasi"
txtCari.Text = "" txtCari.SetFocus Else
Call TampilGridData End If
ElseIf Option1.Value = True Then
Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang LIKE '%" _
& txtCari.Text & "%' " _
& " ORDER BY Kode_Barang", _
KoneksiDB, 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 If End Sub
Form Menu Transaksi Penjualan
Option Explicit Dim Baris As Integer Dim i As Integer Dim Tanya As String Dim NoNota As String
Dim NaikHargaJual As String
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase Call FormMati
TbSimpan.Enabled = False TbCari.Enabled = False TbMasuk.Enabled = False End Sub
Sub FormKosong() txtNoNota.Text = "" txtTgl.Text = "__/__/____" txtKode.Text = ""
txtJumlah.Text = "" txtTotal.Text = "0" txtTotalHarga = "0" txtKembali.Text = "0" txtCash.Text = "0"
Baris = 1
GridPenjualan.Clear GridPenjualan.Rows = 2 Call AktifGridJual End Sub
Sub FormTransKosong() txtTotalHarga.Text = "0" txtCash.Text = ""
txtKembali.Text = "0" End Sub
Sub FormMati()
txtNoNota.Enabled = False txtTgl.Enabled = False txtKode.Enabled = False txtNama.Enabled = False txtStok.Enabled = False txtHarga.Enabled = False txtJumlah.Enabled = False txtTotal.Enabled = False txtTotalHarga.Enabled = False txtCash.Enabled = False txtKembali.Enabled = False End Sub
Sub FormHidup()
txtNoNota.Enabled = True txtTgl.Enabled = True txtKode.Enabled = True txtNama.Enabled = True txtStok.Enabled = True txtHarga.Enabled = True txtJumlah.Enabled = True txtTotal.Enabled = True txtTotalHarga.Enabled = True txtCash.Enabled = True txtKembali.Enabled = True End Sub
TbKeluar.Caption = "Keluar" TbSimpan.Enabled = False TbBaru.Enabled = True TbCari.Enabled = False TbMasuk.Enabled = False End Sub
Sub BuatNotaJual() Rs_Penjualan.Requery
Set Rs_Penjualan = New ADODB.Recordset Rs_Penjualan.Open " SELECT * FROM " _ & " Penjualan ORDER BY No_Nota ", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic
If Rs_Penjualan.BOF Then NoNota = "JL-00001" Exit Sub
Else
Rs_Penjualan.MoveLast
NoNota = Rs_Penjualan!No_Nota NoNota = Right(NoNota, 5) NoNota = Val(NoNota) + 1
If Len(NoNota) > 5 Then
MsgBox "Nomor nota baru melewati batas", _ vbCritical, "Error"
Exit Sub End If End If
NoNota = "JL-" & Format(NoNota, "00000") End Sub
Sub AktifGridJual() With GridPenjualan .Col = 0
.Row = 0
.Text = "KODE" .CellFontBold = True .ColWidth(0) = 1300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 1 .Row = 0
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 2 .Row = 0
.Text = "HARGA (Rp)" .CellFontBold = True .ColWidth(2) = 1800
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 3 .Row = 0
.Text = "JUMLAH" .CellFontBold = True .ColWidth(3) = 1300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 4 .Row = 0
.Text = "SUBTOTAL (Rp)" .CellFontBold = True .ColWidth(4) = 1800
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With
End Sub
Private Sub TbBaru_Click()
txtTgl.Text = Format(Date, "dd/MM/yyyy") Call FormHidup
Call AktifGridJual
Call BuatNotaJual
txtNoNota.Text = NoNota
TbBaru.Enabled = False TbCari.Enabled = True TbKeluar.Caption = "Batal" TbSimpan.Enabled = True TbMasuk.Enabled = True
Baris = 1 End Sub
frmJual.Enabled = False frmCariStok.Show 1 End Sub
Private Sub TbMasuk_Click() If txtKode.Text = "" Then
MsgBox "Barang masih kosong! ", _ vbOKOnly + vbCritical, "Konfirmasi" TbCari.SetFocus
ElseIf Val(txtJumlah.Text) > _ Val(txtStok.Text) Then
MsgBox "Maaf..! Stok tidak memadai .", _ vbOKOnly + vbCritical, "Konfirmasi" txtJumlah.Text = "0"
txtJumlah.SetFocus
ElseIf txtJumlah.Text = "0" _ Or txtJumlah.Text = "" Then
MsgBox "Jumlah barang masih kosong! ", _ vbOKOnly + vbCritical, "Konfirmasi" txtJumlah.SetFocus
ElseIf GridPenjualan.Rows = 1 Then
MsgBox "Belum ada barang yang akan dijual!", _ vbOKOnly + vbCritical, "Konfirmasi"
TbCari.SetFocus
ElseIf txtStok.Text = "1" Then
MsgBox "Stok barang minimum!", _ vbOKOnly + vbCritical, "Konfirmasi" Call BersihBarang
ElseIf Val(txtStok.Text) = _ Val(txtJumlah.Text) Then
MsgBox "Stok harus disisakan untuk sempel!", _ vbOKOnly + vbCritical, "Konfirmasi"
txtJumlah.Text = Val(txtJumlah.Text) - 1 TbMasuk.SetFocus
Else
With GridPenjualan .Rows = Baris + 1
.TextMatrix(Baris, 0) = txtKode.Text .TextMatrix(Baris, 1) = txtNama.Text .TextMatrix(Baris, 2) = txtHarga.Text .TextMatrix(Baris, 3) = txtJumlah.Text .TextMatrix(Baris, 4) = txtTotal.Text End With
txtTotalHarga.Text = _
Val(txtTotalHarga.Text) + Val(txtTotal.Text)
End If End Sub
Private Sub TbSimpan_Click() Dim i As Integer
If txtNoNota.Text = "" Then
MsgBox "Nomor transaksi masih kosong !", _ vbOKOnly + vbCritical, "Konfirmasi"
txtNoNota.SetFocus ElseIf Baris = 1 Then
MsgBox "Belum ada Barang yang akan dijual!", _ vbOKOnly + vbCritical, "Konfirmasi"
TbCari.SetFocus
ElseIf txtCash.Text = "" Or txtCash.Text = "0" Then MsgBox "Belum melakukan pembayaran ! ", _ vbOKOnly + vbCritical, "Konfirmasi"
txtCash.SetFocus
ElseIf Val(txtCash.Text) < _ Val(txtTotalHarga.Text) Then
MsgBox "Pembayaran masih kurang", _ vbOKOnly + vbCritical, "Konfirmasi" txtCash.SetFocus
Else
SqlInsert = ""
SqlInsert = "INSERT INTO Penjualan" _
& "(No_Nota,Tgl_Nota,Total_Bayar,UserId)" _ & "VALUES ('" & txtNoNota.Text & "','" _ & Format(Date, "yyyy-MM-dd") & "','" _ & txtTotalHarga.Text & " ','" _
& PenggunaID & "')"
KoneksiDB.Execute SqlInsert, , adCmdText Rs_Penjualan.Requery
For i = 1 To Baris - 1 SqlInsert = ""
SqlInsert = "INSERT INTO Detail_Penjualan" _ & "(No_Nota,Kode_Barang,Harga_Jual, " _ & " Jumlah_Jual,SubTotal)" _
& " VALUES ('" & txtNoNota.Text & "','" _ & GridPenjualan.TextMatrix(i, 0) & "','" _ & GridPenjualan.TextMatrix(i, 2) & "','" _ & GridPenjualan.TextMatrix(i, 3) & "','" _ & GridPenjualan.TextMatrix(i, 4) & "')" KoneksiDB.Execute SqlInsert, , adCmdText
SqlUpdate = ""
& Val(GridPenjualan.TextMatrix(i, 3)) & "" _ & " WHERE Kode_Barang='" _
& GridPenjualan.TextMatrix(i, 0) & "'" KoneksiDB.Execute SqlUpdate, , adCmdText Next i
MsgBox "Data telah tersimpan dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi"
On Error Resume Next With frmCetakJual
.NoNota = txtNoNota.Text .TotHarga = txtTotalHarga.Text .UangBayar = txtCash.Text .UangKembali = txtKembali.Text .Show 1
End With
Call FormNormal Call FormTransKosong End If
End Sub
Private Sub TbKeluar_Click()
If TbKeluar.Caption = "Keluar" Then
Tanya = MsgBox("ANDA YAKIN AKAN " _ & " MENGAKHIRI APLIKASI INI..?", _ vbQuestion + vbYesNo, "Exit")
If Tanya = vbYes Then FrmUtama.Enabled = True Unload Me
Else Exit Sub End If Else
Call FormNormal End If
End Sub
Sub BersihBarang() txtKode.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtStok.Text = "0" txtJumlah.Text = "" txtTotal.Text = "0" End Sub
If txtCash.Text = "" Or txtTotalHarga.Text = "" Then txtKembali.Text = "0"
Exit Sub Else
txtKembali.Text = _
Val(txtCash.Text) - Val(txtTotalHarga.Text) End If
End Sub
Private Sub txtCash_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
TbMasuk.SetFocus
ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep
KeyAscii = 0 End If
End Sub
Private Sub txtJumlah_Change() On Error Resume Next
If txtJumlah.Text = "" Or txtHarga.Text = "" Then txtTotal.Text = "0"
Exit Sub Else
txtTotal.Text = txtJumlah.Text * txtHarga.Text End If
End Sub
Private Sub txtJumlah_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
TbMasuk.SetFocus
ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep
KeyAscii = 0 End If
End Sub
Private Sub txtKode_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
If Len(txtKode.Text) < 5 Then
MsgBox "KODE BARANG HARUS 5 DIGIT", _ vbCritical, "Error"
KeyAscii = 0
Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Stok_Barang <> 0 " _
& " AND Barang.Kode_Barang='" & txtKode.Text & "' ", _ KoneksiDB, adOpenDynamic, _
adLockBatchOptimistic
If Rs_StokBarang.BOF Then
MsgBox "KODE BARANG TIDAK DIKENALI ..", _ vbInformation, "Info"
Else
With Rs_StokBarang
txtStok.Text = !Stok_Barang txtNama.Text = !Nm_Barang
' Harga penjualan secara otomatis ' dinaikkan 10% dari harga satuan NaikHargaJual = _
(0.1 * Val(Rs_StokBarang!Hrg_Satuan)) txtHarga.Text = _
(Val(Rs_StokBarang!Hrg_Satuan) + NaikHargaJual) txtJumlah.SetFocus
End With End If End If End Sub
Form Menu Cari Persediaan Barang
Option Explicit
Dim NaikHargaJual As String
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2
Call BukaDatabase Call TampilGridData End Sub
.RowHeightMin = 300 .Col = 0
.Row = 0 .Text = "NO"
.CellFontBold = True .ColWidth(0) = 400
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.RowHeightMin = 300 .Col = 1
.Row = 0
.Text = "KODE" .CellFontBold = True .ColWidth(1) = 750
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 2 .Row = 0
.Text = "JENIS" .CellFontBold = True .ColWidth(2) = 1900
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 3 .Row = 0
.Text = "NAMA BARANG" .CellFontBold = True
.ColWidth(3) = 3300
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 4 .Row = 0
.Text = "HARGA [Rp.]" .CellFontBold = True .ColWidth(4) = 1600
.AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter
.Col = 5 .Row = 0
.Text = "STOK" .CellFontBold = True .ColWidth(5) = 1600
End With End Sub
Sub TampilGridData() Dim Baris As Integer
GridBarang.Clear Call AktifGridBarang
GridBarang.Rows = 2 Baris = 0
If Rs_StokBarang.BOF Then
MsgBox "Tabel Barang masih kosong!", _ vbInformation + vbOKOnly, "Informasi" Exit Sub
Else
With Rs_StokBarang .MoveFirst
Do While Not .EOF Baris = Baris + 1
GridBarang.Rows = Baris + 1
GridBarang.TextMatrix(Baris, 0) = Baris
GridBarang.TextMatrix(Baris, 1) = !Kode_Barang GridBarang.TextMatrix(Baris, 2) = !Nama_Jenis GridBarang.TextMatrix(Baris, 3) = !Nm_Barang GridBarang.TextMatrix(Baris, 4) = !Hrg_Satuan GridBarang.TextMatrix(Baris, 5) = !Stok_Barang .MoveNext
Loop End With End If
End Sub
Private Sub GridBarang_DblClick() Dim barisGrid As String
barisGrid = GridBarang.Row
Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang='" _
If GridBarang.Rows <> 1 Then With frmJual
.txtKode.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 1)) .txtNama.Text = _
UCase(GridBarang.TextMatrix(barisGrid, 3)) .txtStok.Text = _
GridBarang.TextMatrix(barisGrid, 5)
' Harga penjualan secara otomatis ' dinaikkan 10% dari harga satuan NaikHargaJual = _
(0.1 * Val(Rs_StokBarang!Hrg_Satuan)) .txtHarga.Text = _
(Val(Rs_StokBarang!Hrg_Satuan) + NaikHargaJual) End With
Else Exit Sub End If
FrmUtama.Enabled = False frmJual.Enabled = True Unload Me
End Sub
Private Sub TbNormal_Click() Call Form_Load
txtCari.Text = "" txtCari.SetFocus End Sub
Private Sub TbTutup_Click() FrmUtama.Enabled = False frmJual.Enabled = True Unload Me
End Sub
Private Sub txtCari_Change() If Option2.Value = True Then
Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Nm_Barang LIKE '%" _
If Rs_StokBarang.BOF Then
MsgBox "Tidak menemukan nama Barang! " _ & " - " & txtCari.Text & " - dalam tabel", _ vbInformation, "Informasi"
txtCari.Text = "" txtCari.SetFocus Else
Call TampilGridData End If
ElseIf Option1.Value = True Then
Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _
& " FROM Barang, Jenis_Barang WHERE " _
& " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang LIKE '%" _
& txtCari.Text & "%' ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic
If Rs_StokBarang.BOF Then
MsgBox "Tidak menemukan kode Barang! " _ & " - " & txtCari.Text & " - dalam tabel", _ vbInformation, "Informasi"
txtCari.Text = "" txtCari.SetFocus Else
Call TampilGridData End If
End If End Sub
Form Laporan Barang Per- Jenis
Option Explicit
Dim Kd_Jenis As String
Private Sub cmbJenis_Change() Kd_Jenis = ""
' Menampilkan seluruh daya jenis barang
Set Rs_Jenis = KoneksiDB.Execute("SELECT * FROM" _ & " Jenis_Barang WHERE Nama_Jenis='" _
& CmbJenis.Text & "'")
With Rs_Jenis
If .EOF And .BOF Then Exit Sub
Else
'Jika data ada, maka akan ditampilkan On Error Resume Next
Kd_Jenis.Text = !Kode_Jenis CmbJenis.Text = !Nama_Jenis TbTampil.SetFocus
End If End With End Sub
Private Sub Form_Load()
Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3
Call BukaDatabase
'Menampilkan seluruh data berdasarkan nama jenis
Set Rs_Jenis = KoneksiDB.Execute("SELECT * FROM " _ & " Jenis_Barang ORDER BY Nama_Jenis")
With Rs_Jenis
'Memeriksa keberadaan data jenis barang If .BOF Then
Exit Sub Else
'Jika data jenisa barang, maka ditampilkan .MoveFirst
Do While Not .EOF
CmbJenis.AddItem ![Nama_Jenis] .MoveNext
Loop End If End With End Sub
Private Sub TbKeluar_Click() Unload Me
End Sub
Private Sub TbTampil_Click() Dim SQL As String