Assalamu’alaikum
Wr Wb
Selamat
datang di web sibukngoding.com. Masih di seri pembuatan Aplikasi Penjualandengan menggunakan Vb.net dan database Maria DB. Setelah kemarin saya jelaskan
tentang pembuatan form Transaksi penjualan, pada kesempatan kali ini saya akan
jelaskan source code yang digunakan dalam form transaksi penjualan.
Untuk
langkah langkahnya sebagai berikut:
1. Import
Data ODBC
Tekan F7 untuk masuk ke layar coding, kita import dulu
ODBC nya karena untuk koneksi kita menggunakan Connector ODBC. Tuliskan Source Code dibawah ini di bagian paling
atas.
Imports System.Data.Odbc
2. Sub Bersihkan barang
Berfungsi untuk membersihkan texbox yang terisi
dibagian inputan barang di transaksi.
Sub bersihkanbarang()
TxtKodeBarang.Clear()
TxtNamaBarang.Clear()
TxtHarga.Text = "0"
TxtJumlah.Text = "0"
TxtSubTotal.Text = "0"
TxtKodeBarang.Focus()
End Sub
3. Sub No Otomatis
Untuk
membuat no otomatis di nomor transaksi penjualan.
Sub Nootomatis()
Koneksi()
Dim Urutan As String
Dim Hitung, Cari As Long
CMD = New OdbcCommand("Select
* from penjualan where no_penjualan in (select max(no_penjualan) from
penjualan)", Conn)
RD = CMD.ExecuteReader
RD.Read()
If Not RD.HasRows Then
Urutan = "PJ"
& Date.Now.Year & "0001"
Else
Cari =
Microsoft.VisualBasic.Right(RD.GetString(0), 4)
If Microsoft.VisualBasic.Left(RD.GetString(0), 6)
<> "PJ" & Date.Now.Year Then
Urutan = "PJ"
& Date.Now.Year & "0001"
Else
Hitung =
Microsoft.VisualBasic.Right(RD.GetString(0), 4) + 1
Urutan = "PJ"
& Date.Now.Year & Microsoft.VisualBasic.Right("0000"
& Hitung, 4)
End If
End If
RD.Close()
TxtNoPenjualan.Text = Urutan
Conn.Close()
End
Sub
4.
Sub AutoNumberRowsForGrid
Untuk
membuat nomor di datagridview
Sub AutoNumberRowsForGrid()
If DGV IsNot Nothing Then
Dim count As Integer = 0
While (count <= (DGV.Rows.Count - 1))
DGV.Rows(count).HeaderCell.Value = String.Format((count + 1).ToString(), "0")
count += 1
End While
End If
End Sub
5. Sub buat kolom
Untuk
membuat kolom pada datagridviews
Sub BuatKolom()
With DGV
.Columns.Add("Kode_Barang", "Kode_Barang")
.Columns.Add("Nama_Barang", "Nama_Barang")
.Columns.Add("Harga", "Harga")
.Columns.Add("Jumlah", "Jumlah")
.Columns.Add("SubTotal", "SubTotal")
.Columns("Kode_Barang").Width = 80
.Columns("Nama_Barang").Width = 150
.Columns("Harga").Width
= 90
.Columns("Jumlah").Width
= 70
.Columns("SubTotal").Width
= 90
End With
End
Sub
6.
Sub Autocomplete Barang
Untuk
membuat sugesti pada txtkodebarang
Sub Autocompletebarang()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_barang FROM barang", Conn)
RD = CMD.ExecuteReader
While RD.Read
With TxtKodeBarang
.AutoCompleteCustomSource.Add(RD(0).ToString)
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.CustomSource
End With
End While
Conn.Close()
End Sub
7.
Sub Autocomplete Pelanggan
Untuk
membuat sugesti pada txtkodepelanggan
Sub Autocompletepelanggan()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_pelanggan FROM pelanggan", Conn)
RD = CMD.ExecuteReader
While RD.Read
With TxtKodePelanggan
.AutoCompleteCustomSource.Add(RD(0).ToString)
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.CustomSource
End With
End While
Conn.Close()
End
Sub
8. Sub Awal
Untuk
mengatur tampilan awal pada saat
aplikasi pertama kali dijalankan.
Sub awal()
Nootomatis()
TxtTanggal.Text = Format(Now, "dd MMMM yyyy")
TxtNoPenjualan.Enabled = False
TxtTanggal.Enabled = False
rbnonpelanggan.Checked = True
TxtKodePelanggan.Enabled = False
TxtNamaPelanggan.Enabled = False
TxtKodePelanggan.Text = "000"
TxtNamaPelanggan.Text = "-"
TxtNamaBarang.Enabled = False
TxtHarga.Enabled = False
TxtSubTotal.Enabled = False
txttotalbarang.Text = "0"
txttotalharga.Text = "0"
txttotalbayar.Text = "0"
txtdiskon.Text = "0"
txttotalbayar.Text = "0"
txtdibayar.Text = "0"
txtkembali.Text = "0"
txttotalbarang.Enabled = False
txttotalharga.Enabled = False
txttotalbayar.Enabled = False
txtkembali.Enabled = False
DGV.Rows.Clear()
bersihkanbarang()
End
Sub
9.
Event Form load
Klik 2x pada
form lalu ketikkan source code berikut
Private Sub FormPenjualan_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BuatKolom()
Autocompletebarang()
Autocompletepelanggan()
awal()
End Sub
10. Event Keydown pada txtkodebarang
Bertujuan
untuk menampilkan data nama barang, harga ke dalam txtnamabarang dan txtharga
setelah kodebarang dipilih. Untuk masuk ke event Keydown Klik pada bagian (General)
pilih txtkodebarang, kemudian pada
bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
Private Sub TxtKodeBarang_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtKodeBarang.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang =
'" + TxtKodeBarang.Text + "'",
Conn)
RD = CMD.ExecuteReader
If RD.Read Then
TxtKodeBarang.Text =
RD(0).ToString
TxtNamaBarang.Text =
RD(1).ToString
TxtHarga.Text = RD(4).ToString
Conn.Close()
TxtJumlah.Focus()
Else
MsgBox("Kode Barang Yang Anda Inputkan Salah")
TxtKodeBarang.Focus()
End If
End If
End
Sub
11. Event Click pada BtPlus (Tombol + )
Berfungsi
untuk menyimpan data kodebarang(txtkodebarang),
nama barang (txtnamabarang), harga (txtharga), jumlah(txtjumlah) dan subtotal(txtsubtotal)
ke dalam datagridview. Klik 2 kali
pada btplus lalu masukkan source code berikut:
Private Sub btplus_Click(sender As Object, e As EventArgs) Handles btplus.Click
If Len(Trim(TxtKodeBarang.Text)) = 0 Then
MsgBox("Kode Barang Belum Diisi", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf Len(Trim(TxtNamaBarang.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf Len(Trim(TxtHarga.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf
(Len(Trim(TxtJumlah.Text)) = 0) Or (TxtJumlah.Text = "0") Then
MsgBox("Jumlah Belum dimasukkan", MsgBoxStyle.Information)
TxtJumlah.Focus()
ElseIf Len(Trim(TxtSubTotal.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtJumlah.Focus()
Else
Try
Dim rownumber As Integer = DGV.Rows.Add()
DGV.Rows.Item(rownumber).Cells(0).Value = TxtKodeBarang.Text
DGV.Rows.Item(rownumber).Cells(1).Value = TxtNamaBarang.Text
DGV.Rows.Item(rownumber).Cells(2).Value = TxtHarga.Text
DGV.Rows.Item(rownumber).Cells(3).Value = TxtJumlah.Text
DGV.Rows.Item(rownumber).Cells(4).Value
= TxtSubTotal.Text
'Hitung
Total Harga di datagrid
Dim totalharga, totalbarang As Integer
totalharga = 0
totalbarang = 0
For t As Integer = 0 To DGV.Rows.Count - 1
totalharga = totalharga +
Val(DGV.Rows(t).Cells(4).Value)
totalbarang = totalbarang +
Val(DGV.Rows(t).Cells(3).Value)
Next
txttotalharga.Text = totalharga
txttotalbarang.Text =
totalbarang
txttotalbayar.Text = totalharga
AutoNumberRowsForGrid()
bersihkanbarang()
Catch ex As Exception
MsgBox("Gagal !!!!", MsgBoxStyle.Information)
End Try
End If
End
Sub
12. Event
Click pada btmin( Tombol -)
Berfungsi
untuk menghapus data yang ada di dalam datagridviews ketika terjadi salah
input. Klik 2 kali pada btmin lalu
masukkan skrip berikut.
Private Sub btmin_Click(sender As Object, e As EventArgs) Handles btmin.Click
Try
If DGV.CurrentRow.Index <> DGV.NewRowIndex Then
DGV.Rows.RemoveAt(DGV.CurrentRow.Index)
'Hitung
Total Harga di datagrid
Dim totalharga, totalbarang As Integer
totalharga = 0
totalbarang = 0
For t As Integer = 0 To DGV.Rows.Count - 1
totalharga = totalharga +
Val(DGV.Rows(t).Cells(4).Value)
totalbarang = totalbarang +
Val(DGV.Rows(t).Cells(3).Value)
Next
txttotalharga.Text = totalharga
txttotalbarang.Text =
totalbarang
txttotalbayar.Text = totalharga
End If
Catch ex As Exception
MsgBox("Tidak Ada Data yang DiHapus", MsgBoxStyle.Information)
End Try
End
Sub
13. Event Keydown pada txtkodepelanggan
Terdapat
fungsi untuk menampilkan namapelanggan ditxtnamapelanggan berdasarkan kode
pelanggan yang dipilih. Untuk masuk ke event Keydown Klik pada bagian (General)
pilih txtkodepelanggan, kemudian
pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
Private Sub TxtKodePelanggan_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtKodePelanggan.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT * FROM pelanggan WHERE kode_pelanggan =
'" + TxtKodePelanggan.Text + "'",
Conn)
RD = CMD.ExecuteReader
If RD.Read Then
TxtKodePelanggan.Text =
RD(0).ToString
TxtNamaPelanggan.Text =
RD(1).ToString
End If
Conn.Close()
TxtKodeBarang.Focus()
End If
End Sub
14. Event Keydown pada Txtjumlah
Terdapat
fungsi yang digunakan untuk mencari subtotal.
Untuk masuk ke event Keydown Klik
pada bagian (General) pilih txtjumlah, kemudian pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
Private Sub TxtJumlah_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtJumlah.KeyDown
If e.KeyCode = Keys.Enter Then
'Rumus
Mencari Sub Total
TxtSubTotal.Text =
Val(TxtHarga.Text) * Val(TxtJumlah.Text)
btplus.Focus()
End If
End Sub
15 Event Keypress pada txtjumlah
Terdapat
fungsi yang digunakan agar txtjumlah hanya bisa diinput angka. Untuk masuk ke
event Keypress Klik pada bagian (General) pilih txtjumlah, kemudian pada bagian (Declaration) pilih Keypress.
Ketikkan coding berikut.
Private Sub TxtJumlah_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
TxtJumlah.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
16. Event Keydown pada txtdiskon
Terdapat fungsi yang digunakan untuk menhitung total
harga setelah didiskon. Disini diskon yang digunakan berupa persentase. Untuk
masuk ke event Keydown Klik pada
bagian (General) pilih txtdiskon, kemudian pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
Private Sub txtdiskon_KeyDown(sender As Object, e As KeyEventArgs) Handles
txtdiskon.KeyDown
If e.KeyCode = Keys.Enter Then
'Rumus
mencari total bayar setelah didiskon
txttotalbayar.Text = Val(txttotalharga.Text)
- ((Val(txtdiskon.Text) / 100) * Val(txttotalharga.Text))
txtdibayar.Focus()
End If
End Sub
17. Event Keypress pada txtdiskon
Terdapat
fungsi yang digunakan agar txtjumlah hanya bisa diinput angka. Untuk masuk ke
event Keypress Klik pada bagian (General) pilih txtdiskon, kemudian pada bagian (Declaration) pilih Keypress.
Ketikkan coding berikut.
Private Sub txtdiskon_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
txtdiskon.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
18. Event Keydown pada txtdibayar
Terdapat
fungsi yang digunakan untuk menhitung uang kembalian. Untuk masuk ke event Keydown Klik pada bagian (General) pilih txtdibayar, kemudian pada bagian (Declaration) pilih KeyDown.
Ketikkan coding berikut.
Private Sub txtdibayar_KeyDown(sender As Object, e As KeyEventArgs) Handles
txtdibayar.KeyDown
If e.KeyCode = Keys.Enter Then
If (Len(Trim(txtdibayar.Text)) = 0) Or
(txtdibayar.Text = "0") Then
MsgBox("Data Belum Diisi...", MsgBoxStyle.Information)
txtdibayar.Focus()
ElseIf Val(txttotalbayar.Text) > Val(txtdibayar.Text) Then
MsgBox("Uang yang dimasukkan kurang.....", MsgBoxStyle.Information)
txtdibayar.Focus()
Else
'Rumus
mencari uang kembali
txtkembali.Text =
Val(txtdibayar.Text) - Val(txttotalbayar.Text)
btsimpan.Focus()
End If
End If
End
Sub
19. Event Keypress pada txtdibayar
Terdapat fungsi yang digunakan agar txtdibayar hanya
bisa diinput angka. Untuk masuk ke event Keypress,
Klik pada bagian (General) pilih txtdibayar, kemudian pada bagian (Declaration) pilih Keypress. Ketikkan coding berikut.
Private Sub txtdibayar_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
txtdibayar.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
20. Radio Button pada rbpelanggan
Berfungsi
jika rbpelanggan di pilih maka txtkodepelanggan akan aktif dan kita bisa memilih pelanggan di
daftar pelanggan. Klik 2 kali pada rbpelanggan
lalu masukkan source code berikut:
Private Sub rbpelanggan_CheckedChanged(sender As Object, e As EventArgs) Handles
rbpelanggan.CheckedChanged
TxtKodePelanggan.Enabled = True
TxtKodePelanggan.Clear()
TxtNamaPelanggan.Clear()
TxtKodePelanggan.Focus()
End Sub
21. Radio Button pada rbnonpelanggan
Berfungsi jika rbnonpelanggan di pilih maka txtkodepelanggan tidak akan
aktif dan secara default kode pelanggan tertulis ‘000’ yang menandakan bahwa kode tersebut khusus bukan pelanggan. Klik 2 kali pada rbnonpelanggan lalu masukkan source
code berikut:
Private Sub
rbnonpelanggan_CheckedChanged(sender As Object, e As EventArgs) Handles
rbnonpelanggan.CheckedChanged
TxtKodePelanggan.Enabled = False
TxtKodePelanggan.Text = "000"
TxtNamaPelanggan.Text = "-"
TxtKodeBarang.Focus()
End Sub
22. Event Click Pada Btsimpan (Tombol Simpan)
Berfungsi
untuk menyimpan data ke dalam database.
Klik 2 kali pada btsimpan lalu ketikkan source code berikut:
Private Sub
btsimpan_Click(sender As Object,
e As EventArgs)
Handles btsimpan.Click
Try
'validasi jika data
masih kosong
If
Len(Trim(TxtKodePelanggan.Text)) = 0 Then
MsgBox("Data
Pelanggan Belum diinputkan...", MsgBoxStyle.Information)
TxtKodePelanggan.Focus()
ElseIf
(Len(Trim(txtdibayar.Text)) = 0) Or
(txtdibayar.Text = "0")
Then
MsgBox("Transaksi
belum dibayar...", MsgBoxStyle.Information)
txtdibayar.Focus()
Else
'simpan data non
pelanggan
Koneksi()
CMD = New OdbcCommand("SELECT
kode_pelanggan FROM pelanggan WHERE kode_pelanggan = '"
+ TxtKodePelanggan.Text + "'",
Conn)
RD = CMD.ExecuteReader
RD.Read()
If Not
RD.HasRows Then
Koneksi()
CMD = New OdbcCommand("INSERT
INTO pelanggan VALUES (?,?,?,?)", Conn)
With
CMD
.Parameters.AddWithValue("?",
TxtKodePelanggan.Text)
.Parameters.AddWithValue("?",
TxtNamaPelanggan.Text)
.Parameters.AddWithValue("?",
"-")
.Parameters.AddWithValue("?",
"-")
.ExecuteNonQuery()
End With
Conn.Close()
End If
'simpan Data ke
tabel penjualan
Koneksi()
CMD = New OdbcCommand("INSERT
INTO penjualan VALUES (?,?,?,?,?)", Conn)
With
CMD
.Parameters.AddWithValue("?",
TxtNoPenjualan.Text)
.Parameters.AddWithValue("?",
Format(Now.Date, "yyyy-MM-dd"))
.Parameters.AddWithValue("?",
TxtKodePelanggan.Text)
.Parameters.AddWithValue("?",
txttotalbarang.Text)
.Parameters.AddWithValue("?",
txttotalharga.Text)
.ExecuteNonQuery()
End With
Conn.Close()
'Simpan Data ke
tabel detail penjualan
Koneksi()
For
i As Integer
= 0 To DGV.Rows.Count - 1
CMD = New OdbcCommand("INSERT
INTO detail_penjualan VALUES (?,?,?,?,?)", Conn)
With
CMD
.Parameters.AddWithValue("?",
TxtNoPenjualan.Text)
.Parameters.AddWithValue("?",
DGV.Rows(i).Cells(0).Value)
.Parameters.AddWithValue("?",
DGV.Rows(i).Cells(3).Value)
.Parameters.AddWithValue("?",
DGV.Rows(i).Cells(2).Value)
.Parameters.AddWithValue("?",
DGV.Rows(i).Cells(4).Value)
.ExecuteNonQuery()
End With
Next
awal()
MsgBox("Data
Berhasil disimpan.....", MsgBoxStyle.Information,
"Informasi")
End If
Catch
ex As Exception
MsgBox(ex.Message)
End Try
End Sub
22. Event Click pada BtKeluar (Tombol
Keluar)
Klik 2 kali
pada btkeluar lalu masukkan source code berikut
Private Sub btkeluar_Click(sender As Object, e As EventArgs) Handles
btkeluar.Click
Me.Close()
End Sub
Demikian
contoh pembuatan Transaksi penjualan yang bisa saya sampaikan. Silahkan
dimodifikasi sesuai selera anda dan jika ada pertanyaan bisa ditanyakan
dikomentar. Untuk cara menjalankan program transaksi penjualan bisa dilihat di Part 3
Terimakasih
atas kunjungannya, Selamat belajar dan jangan mudah menyerah.
Comments
Post a Comment
- Berkomentarlah dengan bijak, Komentar akan di moderasi dahulu sebelum ditampilkan.