::
::
Nah kali ini lanjut ke koding yak, uda pada jago nge design kan...
sebelumnya aku sampein alurnya dulu dikit.
disini gak ada tabel konsumen kan ya, artinya pembeli itu cuma dapet struk/nota aja, lah nota ini ya didapat dari (idtransaksi).
liat lagi gambar!
*ingat! detail_transaksi tidak pakai kunci utama / primary key
DAN temen2 juga harus paham yak, tentang konsep di dalam Datagridview, mana yang ROWS dan mana yang COLUMN!
*INGAT! index itu dari NOL, kek gini loh...
udah paham belom? kalo belom mending sekarang PIKNIK sanah!!!
::
::
Eh ngomong2, aku dapet ilmunya dari Pak UUS RUSMAWAN Loh, Beliau keren banget kalo bikin tutorial. Maasyaa Alloh, semoga Alloh selalu memberi Beliau kesehatan. aamiin
::
::
CUUUUUUSS!!!!!!!!!
LANGKAH-LANGKAH Koding Transaksi One To Many di dalam DatagridView VB .NET.
---------------------------------------------------------------------------------------------------------------
1. Buat kode otomatis dulu untuk NOTA (kalo di tabel sbg idtransaksi) dan TANGGAL(upToDate)
Kalo udah, RUN ________Hasilnya gini:
2. Klik 2x DGV, lalu Event nya diubah menjadi CellEndEdit. Lalu isikan koding di bawah ini. Sekalian prosedur hitungbarang() dan hitungharga()
Private Sub DGV_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellEndEdit
If e.ColumnIndex = 0 Then
cmd = New OleDbCommand("select * from barang where nama='" & DGV.Rows(e.RowIndex).Cells(0).Value & "'", conn)
dr = cmd.ExecuteReader
dr.Read()
If dr.HasRows Then
DGV.Rows(e.RowIndex).Cells(1).Value = dr.Item("kodebarang")
DGV.Rows(e.RowIndex).Cells(3).Value = dr.Item("harga")
'asumsi penjualan minimal jumlah barang 1 (satu)
'jadi ketika ngetik nama barang di kolom nama barang
DGV.Rows(e.RowIndex).Cells(2).Value = 1
DGV.Rows(e.RowIndex).Cells(4).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value
Else
MsgBox("data tidak terdaftar")
End If
End If
If e.ColumnIndex = 2 Then
'kolom sub total = kolom jumlah * kolom harga
'harus paham yah... coba lihat lagi, sub total/jumlah/harga terdapat di Cells berapa?
'biar paham koding di bawah ini.
DGV.Rows(e.RowIndex).Cells(4).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value
End If
Call hitungbarang()
Call hitungharga()
End Sub
------------------------------------------------------
prosedur hitungbarang() dan hitungharga()
--------------------------------------------------
Sub hitungbarang()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(2).Value
Next
Ttotalitem.Text = hitung
End Sub
Sub hitungharga()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(4).Value
Next
Ttotalharga.Text = hitung
End Sub
-----------------------------------------------------------------------------------------------------------------
*apa fungsi RowCount - 1 ? Karena pada Datagridview ada baris yang kosong, dan artinya gak ikut dihitung, makanya di -1.
-----------------------------------------------------------------------------------------------------------------
*Perhatikan setiap ada komen! di dalam koding yak...warnanya biasanya IJO.
(duh GALAK, maaf)
-----------------------------------------------------------------------------------------------------------------
If e.ColumnIndex = 0 Then
cmd = New OleDbCommand("select * from barang where nama='" & DGV.Rows(e.RowIndex).Cells(0).Value & "'", conn)
dr = cmd.ExecuteReader
dr.Read()
If dr.HasRows Then
DGV.Rows(e.RowIndex).Cells(1).Value = dr.Item("kodebarang")
DGV.Rows(e.RowIndex).Cells(3).Value = dr.Item("harga")
'asumsi penjualan minimal jumlah barang 1 (satu)
'jadi ketika ngetik nama barang di kolom nama barang
DGV.Rows(e.RowIndex).Cells(2).Value = 1
DGV.Rows(e.RowIndex).Cells(4).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value
Else
MsgBox("data tidak terdaftar")
End If
End If
If e.ColumnIndex = 2 Then
'kolom sub total = kolom jumlah * kolom harga
'harus paham yah... coba lihat lagi, sub total/jumlah/harga terdapat di Cells berapa?
'biar paham koding di bawah ini.
DGV.Rows(e.RowIndex).Cells(4).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value
End If
Call hitungbarang()
Call hitungharga()
End Sub
------------------------------------------------------
prosedur hitungbarang() dan hitungharga()
--------------------------------------------------
Sub hitungbarang()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(2).Value
Next
Ttotalitem.Text = hitung
End Sub
Sub hitungharga()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(4).Value
Next
Ttotalharga.Text = hitung
End Sub
-----------------------------------------------------------------------------------------------------------------
*apa fungsi RowCount - 1 ? Karena pada Datagridview ada baris yang kosong, dan artinya gak ikut dihitung, makanya di -1.
-----------------------------------------------------------------------------------------------------------------
*Perhatikan setiap ada komen! di dalam koding yak...warnanya biasanya IJO.
(duh GALAK, maaf)
-----------------------------------------------------------------------------------------------------------------
*GAK USAH DITULIS JUGA KALEE Private Sub DGV_CellEndEdit....blablablabla
3. COBA RUN!, dan Ketikkan di Nama Barang sesuai yang ada di tabel barang, kekgini loh!
4. Nah sekarang Eksperimen dengan mengganti Cells Jumlah. Coba RUN lagi, terus ganti jumlah barangnya...Maka di kolom Total Item akan berubah sesuai jumlah barang contoh:
5. Sekarang tinggal Koding Bayar dan Kembalian.
Pas di kolom bayar kita nginputin manual dong, contoh: Total Harga 41.500, di kolom bayar kita inputkan 50.000, otomatis di kolom kembalian harus tertera 8.500 dong?
jadi logikanya, ada aksi yang dijalankan pada saat event perubahan di kolom bayar.
::
langkahnya, klik 2x pada kolom Bayar. Ketikkan koding di bawah ini
Private Sub Tbayar_TextChanged(sender As Object, e As EventArgs) Handles Tbayar.TextChanged
Tkembalian.Text = Val(Tbayar.Text - Ttotalharga.Text)
End Sub
Tkembalian.Text = Val(Tbayar.Text - Ttotalharga.Text)
End Sub
Sekarang Coba RUN, Hasilnya kekgini:
SELAMAT MENCOBA KAWAN...
Hai... GAMERs
--------------------||TIDAK ADA YANG SUSAH KALO MAU BELAJAR, #jere wkwkwwkwk ||------------------
apa iya??
ReplyDeletelembo lah
Wkwkwk... Iyalah...
DeleteDolanan PEBE ge mati bae.. Wkwk
Setelah diketik nama barang di cell 0 apakah langsung keluar isi dri find database yg berhubungan dgn nama barang termasuk harga dan yg lain.. Apa harus dienter dlu baru bisa kluar.. Krna poject saya harus enter dlu. Mohon pencerahannya
ReplyDeleteiya gan di ENTER terus muncul data yg berhubungan dengan nama barang.
Deletemaaf gan baru sempat membalas
nice coding gan, terim kasih, tapi mau tanya nih, kalau semisal data ditambahkan/ dihapus ke datagrid, kok di kolom total item dan jumlahnya g mau bertambah atau berkurang ya? tapi setelah tak close form nya lalu sy buka lgi baru tuh mau update total item dan harganya,
ReplyDelete"Karena pada Datagridview ada baris yang kosong, dan artinya gak ikut dihitung, makanya di -1", yang dimaksud baris kosong yg mana ya?
ReplyDeleteJadi datagridview kan ada yang kosong satu baris paling bawah
Delete