KODE PROGRAM FORM PENJUALAN Buat Variabel-variabel yang dibutuhkan (untuk Koneksi Database dan Tabel-tabel dengan menggunakan DIM, contoh lihat pada Form Pemasok) Buat prosedur Koneksi_Database Buat prosedur Koneksi_Recordset (Tabel Penjualan)namun kode program pada baris Set DataGrid1.DataSource = rs... dihilangkan Sub () koneksi.begintrans koneksi.execute "Delete from TempDetailPenjualan" koneksi.committrans Private Sub Form_Load() Koneksi_Database dtpenjualan.value = Date Private Sub cmdkeluar_click() Unload Me Private Sub cmdtambah_click() bersih_txt AktifkanObject TambahData cmdtambah.enabled = False cmdsimpan.enabled = True cmdbatal.enabled = True cmdkeluar.enabled = False
cmdkaryawan.setfocus txttotalbayar.text = 0 txtbayar.text = 0 txtsisabayar.text = 0 Sub bersih_txt() txtnofakpenjualan.text = "" txtpelangganid.text = "" txtnamapelanggan.text = "" txtkaryawanid.text = "" txtkaryawannama.text = "" txttotalbayar.text = "" txtbayar.text = "" txtsisabayar.text = "" Sub AktifkanObject() cmdkaryawan.enabled = True cmdpelanggan.enabled = True txtbayar.enabled = True frmdatabarang.enabled = True frmpenjualan.enabled = True cmddatabarang.enabled = True cmdjadijual.enabled = True cmdbataljual.enabled = True Sub TidakAktifkanObject() cmdkaryawan.enabled = False cmdpelanggan.enabled = False txtbayar.enabled = False frmdatabarang.enabled = False frmpenjualan.enabled = False cmddatabarang.enabled = False cmdjadijual.enabled = False cmdbataljual.enabled = False
Sub TambahData() Koneksi_Recordset If rspenjualan.recordcount = False Then txtnofakpenjualan.text = "FP001" rspenjualan.movelast NoFakPenjualan = rspenjualan.fields("nofakpenjualan") NoFakPenjualan = Val(Mid(NoFakPenjualan, 3)) + 1 txtnofakpenjualan.text = Left(rsPenjualan.Fields("NoFakPenjualan"), 5 - Len(NoFakPenjualan)) & NoFakPenjualan Private Sub cmdbatal_click() bersih_txt txtsisabayar.text = "" TidakAktifkanObject cmdtambah.enabled = True cmdbatal.enabled = False cmdsimpan.enabled = False cmdkeluar.enabled = True cmdtambah.setfocus Private Sub cmdkaryawan_click() ListKaryawanPenjualan.Show Private Sub cmdpelanggan_click() ListPelangganPenjualan.Show Private Sub cmddatabarang_click() ListBarangPenjualan.Show Private Sub txtjumlahjual_keypress(keyascii As Integer)
Dim bisajual As Integer If Not (KeyAscii >= ("0") And KeyAscii <= Asc("9") Or KeyAscii = vbkeyback) Then Beep KeyAscii = 0 MsgBox "Harus angka donk..." txtjumlahjual.setfocus If KeyAscii = 13 Then bisajual = Val(txtBarangStock.Text) - Val(txtSafetyStock.Text) If Val(txtJumlahJual.Text) > bisajual Then MsgBox "Stock Barang tidak mencukupi...!" & vbnewline & _ "Sudah sampai batas Safety Stock," & vbnewline & _ "Barang lagi dipesan mohon ganti barang", 0 + 64, "Informasi" txttotal.text = "" txtjumlahjual.text = "" txtjumlahjual.setfocus txttotal.text = Val(txtJumlahJual.Text) * Val(txtBarangHarga.Text) txttotal.text = Format(txtTotal.Text, "###,###,###") cmdjadijual.setfocus Sub BersihBarang() txtbarangid.text = "" txtbarangnama.text = "" txtbarangharga.text = "" txtbarangstock.text = "" txtsafetystock.text = "" txtjumlahjual.text = "" txttotal.text = "" Private Sub cmdjadijual_click() If Len(Trim(txtBarangID.Text)) = 0 Or Len(Trim(txtJumlahJual.Text)) = 0 Or Len(Trim(txtTotal.Text)) = 0 Then MsgBox "Periksa isian Barang ID/Jumlah Jual/Total", vbokonly + vbcritical, "Konfirmasi" txtjumlahjual.setfocus Exit Sub
txttotal.text = Format(txtTotal, "#########") txttotalbayar.text = Format(txtTotalBayar.Text, "#########") txttotalbayar.text = Val(txtTotalBayar.Text) + Val(txtTotal.Text) txttotalbayar.text = Format(txtTotalBayar.Text, "###,###,###") koneksi.begintrans Set rstemppenjualan = koneksi.execute("insert into TempDetailPenjualan (BarangID, " & _ "BarangNama, BarangHarga, BarangStock, SafetyStock, " & _ "JumlahJual, Total) " & _ "values('" & txtbarangid.text & "', '" & txtbarangnama.text & _ "', " & txtbarangharga.text & ", " & txtbarangstock.text & _ ", " & txtsafetystock.text & ", " & txtjumlahjual.text & _ ", " & txttotal.text & ")") koneksi.committrans Set rstemppenjualan = koneksi.execute("tempdetailpenjualan") Set DataGrid1.DataSource = rstemppenjualan DataGrid1.Refresh BersihBarang txtbayar.setfocus Private Sub cmdbataljual_click() On Error GoTo salah txttotalbayar.text = Format(txtTotalBayar.Text, "#########") txttotalbayar.text = Val(txtTotalBayar.Text) - DataGrid1.Columns(6).Value txttotalbayar.text = Format(txtTotalBayar.Text, "###,###,###") koneksi.begintrans Set rstemppenjualan = koneksi.execute("delete from TempDetailPenjualan " & _ "Where BarangID Like '" & DataGrid1.Columns(0) & "'") koneksi.committrans Set rstemppenjualan = koneksi.execute("tempdetailpenjualan") Set DataGrid1.DataSource = rstemppenjualan DataGrid1.Refresh
salah: Exit Sub Private Sub txtbayar_keypress(keyascii As Integer) If Not (KeyAscii >= ("0") And KeyAscii <= Asc("9") Or KeyAscii = vbkeyback) Then Beep KeyAscii = 0 MsgBox "Harus angka donk..." txtjumlahjual.setfocus If KeyAscii = 13 Then txttotalbayar.text = Format(txtTotalBayar.Text, "#########") txtsisabayar.text = Val(txtBayar.Text) - Val(txtTotalBayar.Text) txtsisabayar.text = Format(txtSisaBayar.Text, "###,###,###") If txtsisabayar.text = "" Then txtsisabayar.text = 0 cmdsimpan.setfocus Private Sub txtbayar_change() txttotalbayar.text = Format(txtTotalBayar.Text, "#########") txtsisabayar.text = Val(txtBayar.Text) - Val(txtTotalBayar.Text) txtsisabayar.text = Format(txtSisaBayar.Text, "###,###,###") If txtsisabayar.text = "" Then txtsisabayar.text = 0 Private Sub cmdsimpan_click() If txtpelangganid.text = "" Then MsgBox "Pelanggan ID-nya masih kosong" & vbnewline & _ "isikan dahulu...!", vbokonly, "Pesan" cmdpelanggan.setfocus Dim pesan As Byte
pesan = MsgBox("Apakah datanya sudah benar dan mau disimpan", _ vbokcancel + vbexclamation, "Pesan") If pesan = vbok Then SimpanData bersih_txt TidakAktifkanObject cmdsimpan.enabled = False cmdbatal.enabled = False cmdtambah.enabled = True cmdkeluar.enabled = True cmdtambah.setfocus txtsisabayar.text = "" bersih_txt TidakAktifkanObject cmdsimpan.enabled = False cmdbatal.enabled = False cmdtambah.enabled = True cmdkeluar.enabled = True cmdtambah.setfocus txtsisabayar.text = "" Sub SimpanData() 'Menyimpan ke Tabel Penjualan koneksi.begintrans Set rspenjualan = koneksi.execute("insert into Penjualan (NoFakPenjualan, " & _ "TglPenjualan, KaryawanID, PelangganID) " & _ "values('" & txtnofakpenjualan.text & "', '" & DateValue(dtPenjualan.Value) & _ "', '" & txtkaryawanid.text & "', '" & txtpelangganid.text & "')") koneksi.committrans If rstemppenjualan.recordcount = 0 Then MsgBox "Data Penjualan Barang Masih Kosong", vbokonly + vbcritical, "Konfirmasi" cmddatabarang.setfocus Exit Sub
Set DataGrid1.DataSource = rstemppenjualan " & _ 'Menyimpan ke Tabel DetailPenjualan While Not rstemppenjualan.eof koneksi.begintrans Set rsdetailpenjualan = koneksi.execute("insert into DetailPenjualan (NoFakPenjualan, "BarangID, JumlahJual) " & _ "values('" & txtnofakpenjualan.text & "', '" & rstemppenjualan.fields(0) & _ "', '" & rstemppenjualan.fields(5) & "')") koneksi.committrans 'Menyimpan perubahan stock barang pada Tabel Barang Set rsbarang = koneksi.execute("update Barang " & _ "Set BarangStock=BarangStock - '" & rstemppenjualan.fields(5) & "' " & _ "Where BarangID='" & rstemppenjualan.fields(0) & "'") rstemppenjualan.movenext Wend Set rstemppenjualan = koneksi.execute("tempdetailpenjualan") Set DataGrid1.DataSource = rstemppenjualan DataGrid1.Refresh
KODE PROGRAM LIST DATA KARYAWAN Buat Variabel-variabel yang dibutuhkan (untuk Koneksi Database dan Tabel-tabel dengan menggunakan DIM, contoh lihat pada Form Pemasok) Buat prosedur Koneksi_Database Buat prosedur Koneksi_Recordset (Tabel Karyawan) Private Sub Form_Load() Koneksi_Database Koneksi_Recordset Private Sub optkaryawanid_click() txtkaryawanid.enabled = True txtkaryawanid.setfocus txtkaryawannama.enabled = False Private Sub txtkaryawanid_keypress(keyascii As Integer) If KeyAscii = 13 Then CariKaryawan Sub CariKaryawan() rskaryawan.movefirst If txtkaryawanid.text <> "" Then rskaryawan.find "KaryawanID LIKE '*" & txtkaryawanid.text & "*'" MsgBox "Isikan dulu Karyawan ID-nya...!" If rskaryawan.eof Then MsgBox "Data tidak ditemukan", vbinformation, "Informasi"
Private Sub optkaryawannama_click() txtkaryawannama.enabled = True txtkaryawannama.setfocus txtkaryawanid.enabled = False Private Sub txtkaryawannama_keypress(keyascii As Integer) If KeyAscii = 13 Then CariNama Sub CariNama() rskaryawan.movefirst If txtkaryawannama.text <> "" Then rskaryawan.find "KaryawanNama LIKE '*" & txtkaryawannama.text & "*'" MsgBox "Isikan dulu Nama Karyawan-nya...!" If rskaryawan.eof Then MsgBox "Data tidak ditemukan", vbinformation, "Informasi" Private Sub cmdok_click() PenjualanBarang.txtKaryawanID.Text = DataGrid1.Columns(0).Text PenjualanBarang.txtKaryawanNama.Text = DataGrid1.Columns(1).Text PenjualanBarang.cmdPelanggan.SetFocus Unload Me Private Sub DataGrid1_DblClick() PenjualanBarang.txtKaryawanID.Text = DataGrid1.Columns(0).Text PenjualanBarang.txtKaryawanNama.Text = DataGrid1.Columns(1).Text PenjualanBarang.cmdPelanggan.SetFocus Unload Me
Private Sub cmdbatal_click() Unload Me Untuk Kode Program List Data Pelanggan dan List Data Barang, sama seperti kode diatas, namun dimodifikasi sesuai dengan kebutuhan yang ada.