MICROSOFT.NET FRAMEWORK
LATIHAN 6.1 Database Mahasiswa
7.9 Membuat Form Transaksi
Call Koneksi() Call Tampilkan() End Sub
7. Masukkan kode berikut pada objek DataGridView prosedur CellClick : Private Sub DGV_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellClick Dim i As Integer
i = Me.DGV.CurrentRow.Index With DGV.Rows.Item(i)
Penerimaan.TKode.Text = .Cells(0).Value Penerimaan.TNama.Text = .Cells(1).Value Penerimaan.TStok.Text = .Cells(2).Value End With
Penerimaan.Show() Me.Close()
Penerimaan.TTerima.Focus() End Sub
End Class
8. Hasil dari kode program diatas, dapat dilihat pada gambar 7.12 berikut ini :
Gambar 7.12Hasil Form Penerimaan Barang
Gambar 7.13 Form Transaksi Penjualan Barang 2. Gantilah properti masing-masing komponen seperti tertera dibawah ini :
Tabel 7.12Pengaturan Properties Form Transaksi Barang
Object Properties Value
Form1 Text Form : Transaksi
Form1 Name Transaksi
Form1 Start Position CenterScreen
Label1 Text Faktur
Label2 Text Tanggal
Label3 Text Jam
Label4 Text Kode
Label5 Text Nama
Label6 Text Alamat
Label7 Text Telepon
Label8 Text Jenis Kelamin
Label9 Text Email
Label10 Text Total
Label11 Text Item
Label12 Text Dibayar
Label13 Text Kembali
TextBoxt1 - -
TextBoxt2 - -
TextBoxt3 - -
TextBoxt5 - -
TextBoxt6 Name Faktur
TextBoxt7 Name Tanggal
TextBoxt8 Name Jam
TextBoxt9 Name Item
TextBoxt10 Name Dibayar
TextBoxt11 Name Kembali
Combobox2 - -
Botton1 Text Daftar Barang
Botton2 Text …
Botton3 Name BTNSimpan
Botton3 Text Simpan
Botton4 Name BTNBatal
Botton4 Text Batal
Botton5 Name BTNTutup
Botton6 Text Tutup
Timer1 Enabled True
1. Masukkan kode berikut diatas Public Class Pemakai bertujuan untuk memanggil driver dengan koneksi oleDB
Imports System.Data.OleDb
2. Dengan membuat prosedur BersihkanText yang berfungsi untuk menghilangkan nilai pada textbox, Masukkan kode berikut ini :
Sub BersihkanText() Total.Text = ""
Dibayar.Text = ""
Kembali.Text = ""
Item.Text = ""
End Sub
3. Pada prosedur BuatKolomBaru berfungsi untuk membuat kolom dengan kode sebagai berikut :
Sub BuatKolomBaru()
DGV.Columns.Add("Kode", "Kode")
DGV.Columns.Add("Nama", "Nama Barang") DGV.Columns.Add("Harga", "Harga") DGV.Columns.Add("Jumlah", "Jumlah") DGV.Columns.Add("Total", "SubTotal")
Call AturLebarKolom() End Sub
4. Pada prosedur AturLebarKolom berfungsi untuk mengatur panjang kolom dengan kode sebagai berikut:
Sub AturLebarKolom()
DGV.Columns(0).Width = 50 DGV.Columns(1).Width = 175 DGV.Columns(2).Width = 75 DGV.Columns(3).Width = 75 DGV.Columns(4).Width = 100
End Sub
5. Pada prosedur FakturOtomatis berfungsi untuk membuat penomoran otomatis dengan 6 digit pertama adalah tanggal dan pada 4 digit terakhir adalah penomoran selanjutnya, dengan kode sebagai berikut:
Sub FakturOtomatis()
cmd = New OleDbCommand("Select * from penjualan where faktur in (select max(faktur) from penjualan) order by faktur desc", Conn)
Dim urutan As String Dim hitung As Long rd = cmd.ExecuteReader rd.Read()
If Not rd.HasRows Then
urutan = Format(Now, "yyMMdd") + "0001"
Else
If Microsoft.VisualBasic.Left(rd.GetString(0), 6) <>
Format(Now, "yyMMdd") Then
urutan = Format(Now, "yyMMdd") + "0001"
Else
hitung = rd.GetString(0) + 1 urutan = Format(Now, "yyMMdd") + Microsoft.VisualBasic.Right("0000" & hitung, 4) End If
End If
Faktur.Text = urutan End Sub
6. Pada objek form transaksi prosedur active berfungsi untuk memanggil prosedur faktur otomatis dan mengatur tanggal berdasarkan format komputer, dengan kode sebagai berikut :
Private Sub Transaksi_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Call FakturOtomatis() Tanggal.Text = Today End Sub
7. Pada prosedur TampilPelanggan berfungsi untuk memanggil data pelanggan dan ditampilkan pada combobox1, dengan kode sebagai berikut:
Sub TampilPelanggan()
CMD = New OleDbCommand("select * from Pelanggan", CONN) RD = CMD.ExecuteReader
ComboBox1.Items.Clear() Do While RD.Read
ComboBox1.Items.Add(RD.Item(0)) Loop
End Sub
8. Pada objek form transaksi prosedur load berfungsi untuk memanggil prosedur koneksi, buatkolombaru dan tampil pelanggan, dengan kode sebagai berikut :
Private Sub Transaksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Koneksi() Call BuatKolomBaru() Call TampilPelanggan() End Sub
9. Pada objek timer1 prosedur tick berfungsi untuk mengatur waktu pada textbox jam dengan kode sebagai berikut:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Jam.Text = TimeOfDay End Sub
10. Pada objek Datagrid1 atau DGV prosedur CellEndEdit berfungsi untuk memanggil data, mengubah dan melakukan perkalian penjumlahan jumlah barang dengan harga barang, dengan kode sebagai berikut:
Private Sub DGV_CellEndEdit(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellEndEdit If e.ColumnIndex = 0 Then
CMD = New OleDbCommand("select * from barang where KodeBrg='" &
DGV.Rows(e.RowIndex).Cells(0).Value & "'", CONN) RD = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
DGV.Rows(e.RowIndex).Cells(1).Value = RD.Item(1) DGV.Rows(e.RowIndex).Cells(2).Value = RD.Item(5) DGV.Rows(e.RowIndex).Cells(3).Value = 1
DGV.Rows(e.RowIndex).Cells(4).Value =
DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value Call TotalItem()
Call TotalHarga()
Else
MsgBox("Kode barang tidak terdaftar") End If
End If
If e.ColumnIndex = 3 Then
CMD = New OleDbCommand("select * from barang where KodeBrg='" &
DGV.Rows(e.RowIndex).Cells(0).Value & "'", CONN) RD = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
If DGV.Rows(e.RowIndex).Cells(3).Value > RD.Item(4) Then MsgBox("Stok barang hanya ada " & RD.Item(4) & "") DGV.Rows(e.RowIndex).Cells(3).Value = 1
DGV.Rows(e.RowIndex).Cells(4).Value =
DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value Call TotalItem()
Call TotalHarga() Else
DGV.Rows(e.RowIndex).Cells(4).Value =
DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value Call TotalItem()
Call TotalHarga() End If
End If
DGV.CurrentCell = DGV.Rows(0).Cells(0) End If
End Sub
11. Pada prosedur kena berfungsi untuk mengatur cell pada datagrid, denga kode sebagai berikut:
Sub kena(ByVal myGrid As DataGrid)
myGrid.CurrentCell = New DataGridCell(1, 1) End Sub
12. Pada prosedur TotalItem berfungsi untuk mengitung jumlah item pada cell, dengan kode sebagai berikut:
Sub TotalItem()
Dim HitungItem As Integer = 0
For I As Integer = 0 To DGV.Rows.Count - 1
HitungItem = HitungItem + Val(DGV.Rows(I).Cells(3).Value) Item.Text = HitungItem
Next End Sub
13. Pada prosedur TotalHarga berfungsi untuk mengitung harga pada cell, dengan kode sebagai berikut:
Sub TotalHarga()
Dim HitungHarga As Integer = 0
For I As Integer = 0 To DGV.Rows.Count - 1
HitungHarga = HitungHarga + Val(DGV.Rows(I).Cells(4).Value) Total.Text = HitungHarga
Next End Sub
14. Pada prosedur HapusBaris berfungsi untuk menghilangkan nilai pada cell , dengan kode sebagai berikut:
Sub HapusBaris()
On Error Resume Next
Dim baris As Integer = DGV.CurrentCell.RowIndex DGV.Rows(baris).Cells(0).Value = ""
Chr(30) End Sub
15. Pada objek DGV prosedur KeyDown berfungsi untuk mengatur cell yang bisa diubah pada cell, dengan kode sebagai berikut:
Private Sub DGV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DGV.KeyDown If e.KeyCode = Keys.Up Then
DGV.CurrentCell = DGV.Rows(0).Cells(3) End If
End Sub
16. Pada objek DGV prosedur KeyPress berfungsi untuk memanggil prosedur TotalItem, TotalHarga dan mengembalikan nilai pada cell, dengan kode sebagai berikut:
Private Sub DGV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV.KeyPress
On Error Resume Next
If e.KeyChar = Chr(27) Then
DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex) Call TotalItem()
Call TotalHarga() Dibayar.Clear() Kembali.Text = ""
End If End Sub
17. Pada objek textbox dibayar prosedur Keypress berfungsi untuk menghitung jumlah bayar dengan total bayar sehingga nilai sisa akan ditampilkan pada textbox kembali, kode sebagai berikut:
Private Sub Dibayar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Dibayar.KeyPress If e.KeyChar = Chr(13) Then
If Val(Dibayar.Text) < Val(Total.Text) Then MsgBox("Pembayaran kurang")
Kembali.Text = ""
Dibayar.Focus() Exit Sub
ElseIf Val(Dibayar.Text) = Val(Total.Text) Then Kembali.Text = 0
BTNSimpan.Focus() Else
Kembali.Text = Val(Dibayar.Text) - Val(Total.Text) BTNSimpan.Focus()
End If End If
If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True
End Sub
18. Masukkan kode berikut pada objek BTNSimpan :
Private Sub BTNSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNSimpan.Click
If Total.Text = "" Or Dibayar.Text = "" Or Kembali.Text = "" Or Item.Text = "" Then
MsgBox("Data belum lengkap, tidak ada transaksi atau pembayaran masih kosong")
Exit Sub End If
'simpan ke tabel penjualan
Dim simpanmaster As String = "Insert into
penjualan(faktur,tanggal,item,total,dibayar,kembali,KodePmk,KodePlg) values
" & _
"('" & Faktur.Text & "','" & Tanggal.Text & "','" & Item.Text &
"','" & Total.Text & "','" & Dibayar.Text & "','" & Kembali.Text & "','" &
Menuutama.Panel1.Text & "','" & ComboBox1.Text & "')"
CMD = New OleDbCommand(simpanmaster, CONN) CMD.ExecuteNonQuery()
For baris As Integer = 0 To DGV.Rows.Count - 2 'simpan ke tabel detail
Dim sqlsimpan As String = "Insert into detailjual
(faktur,KodeBrg,nama_Barang,harga_Jual,jumlah,subtotal) values " & _ "('" & Faktur.Text & "','" & DGV.Rows(baris).Cells(0).Value &
"','" & DGV.Rows(baris).Cells(1).Value & "','" &
DGV.Rows(baris).Cells(2).Value & "','" & DGV.Rows(baris).Cells(3).Value &
"','" & DGV.Rows(baris).Cells(4).Value & "')"
CMD = New OleDbCommand(sqlsimpan, CONN) CMD.ExecuteNonQuery()
'kurangi stok barang
CMD = New OleDbCommand("select * from barang where KodeBrg='" &
DGV.Rows(baris).Cells(0).Value & "'", CONN) RD = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
Dim kurangistok As String = "update barang set JumlahBrg=
'" & RD.Item(3) - DGV.Rows(baris).Cells(3).Value & "' where KodeBrg='" &
DGV.Rows(baris).Cells(0).Value & "'"
CMD = New OleDbCommand(kurangistok, CONN) CMD.ExecuteNonQuery()
End If Next baris
DGV.Columns.Clear() Call BuatKolomBaru() Call FakturOtomatis() Call BersihkanText() End Sub
19. Masukkan kode berikut pada objek BTNBatal
Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNBatal.Click
Call BersihkanText() DGV.Columns.Clear() Call BuatKolomBaru() DGV.Focus()
End Sub
20. Masukkan kode berikut pada objek BTNTutup
Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click
Me.Close() End Sub
21. Masukkan kode berikut pada Button1 atau Daftar Barang
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
D_Barang.ShowDialog() End Sub
22. Masukkan kode berikut pada Button2 atau tombol cari
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
D_Pelanggan.ShowDialog() End Sub
23. Masukkan kode berikut pada objek combobo1 prosedur SelectedIndexChange
Private Sub combobox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
CMD = New OleDbCommand("select * from Pelanggan where KodePlg='" &
ComboBox1.Text & "'", CONN) RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
TextBox1.Text = RD.Item(1) TextBox2.Text = RD.Item(2)
TextBox3.Text = RD.Item(3) TextBox4.Text = RD.Item(4) TextBox5.Text = RD.Item(5) Else
MsgBox("Kode Pelanggan tidak terdaftar") End If
End Sub
24. Hasil dari kode program diatas, dapat dilihat pada gambar 7.14 berikut ini :
Gambar 7.14Hasil Form Transaksi Barang
Form transaksi barang pada gambar 7.14 pada pencarian kode pelanggan masih mengetikkan kode, apabila kasir tidak mengingat seluruh kode pelanggan maka dibutuhkan pencarian pelanggan dengan memilih pada daftar pelanggan. Maka, dibutuhkan form pencarian pelanggan apabila daftar pelanggan di klik maka akan dimunculkan pada textboxt kode pelanggan, nama, alamat, telepon, jenis kelamin dan email. Berikut langkah pembuatan form pencarian pelanggan
1. Buatlah form baru dengan klik menu Project dan pilih Add Windows Form 2. Desain form daftar pelanggan seperti pada gambar 7.15 dibawah ini:
Gambar 7.15 Form Daftar Pelanggan
3. Gantilah properti masing-masing komponen seperti tertera dibawah ini : Tabel 7.13Pengaturan Properties Form Daftar Pelanggan
Object Properties Value
Form1 Text Daftar Pelanggan
Form1 Name D_ Pelanggan
Form1 Start Position CenterScreen
DataGridView1 Name DGV
4. Masukkan kode berikut diatas Public Class D_Pelanggan bertujuan untuk memanggil driver dengan koneksi oleDB
Imports System.Data.OleDb
5. Pada prosedur Tampilkan berfungsi untuk menampilkan data barang ke DataGridView dengan kode sebagai berikut:
Sub Tampilkan()
DA = New OleDbDataAdapter("Select * from Pelanggan", CONN) DS = New DataSet
DS.Clear()
DA.Fill(DS, "Pelanggan")
DGV.DataSource = (DS.Tables("Pelanggan")) DGV.ReadOnly = True
End Sub
6. Masukkan kode pada objek form D_Pelanggan prosedur Load berikut ini:
Private Sub D_Pelanggan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Koneksi() Call Tampilkan() End Sub
7. Masukkan kode berikut pada objek DataGridView prosedur CellClick : Private Sub DGV_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellClick Dim i As Integer
i = Me.DGV.CurrentRow.Index With DGV.Rows.Item(i)
Transaksi.ComboBox1.Text = .Cells(0).Value Transaksi.TextBox1.Text = .Cells(1).Value Transaksi.TextBox2.Text = .Cells(2).Value Transaksi.TextBox3.Text = .Cells(3).Value Transaksi.TextBox4.Text = .Cells(4).Value
Transaksi.TextBox5.Text = .Cells(5).Value End With
Transaksi.Show() Me.Close()
End Sub
8. Hasil dari kode program diatas, dapat dilihat pada gambar 7.16 berikut ini :
Gambar 7.16 Hasil Form Transaksi Penjualan Barang