MICROSOFT.NET FRAMEWORK
LATIHAN 6.1 Database Mahasiswa
7.8 Membuat Form Penerimaan Barang
CMD = New OleDbCommand("Delete * from Pemakai where kodePMK='" & TextBox1.Text & "'", CONN)
CMD.ExecuteNonQuery() Call Kosongkan() Call Tampilkan()
Else
Call Kosongkan() End If
End If End Sub
14. Masukkan kode pada button3 berfungsi untuk menghilangkan nilai pada textbox dan combobox
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Call Kosongkan() End Sub
15. Masukkan kode pada button4 untuk menutup form pemasok
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Me.Close() End Sub
16. Hasil dari kode program diatas, dapat dilihat pada gambar 7.9 berikut ini :
Gambar 7.9Hasil Form Pemakai
dengan jumlah yang diterima. Untuk membuat form penerimaan barang ikuti langkah berikut ini:
1. Desain Form Penerimaan Barang seperti pada gambar 7.10 dibawah ini :
Gambar 7.10Form Penerimaan Barang 2. Gantilah properti masing-masing komponen seperti tertera dibawah ini :
Tabel 7.10Pengaturan Properties Form Penerimaan Barang
Object Properties Value
Form1 Text Form : Penerimaan
Form1 Name Penerimaan
Form1 Start Position CenterScreen
Label1 Text Nomor
Label2 Text Kode Pemasok
Label3 Text Contact Person
Label4 Text Tanggal
Label5 Text Nama Pemasok
Label6 Text Nomor Reff
Label7 Name LBLNomor
Label8 Name LBLTanggal
Label9 Name LBLNama
Label10 Name LBLPerson
Label11 Name TotalTerima
ComboBox1 - -
TextBoxt1 Name TKode
TextBoxt2 Name TNama
TextBoxt3 Name TStok
TextBoxt5 Name TTerima
TextBoxt6 Name TotalTerima
Botton1 Text Simpan
Botton2 Text Batal
Botton3 Text Tutup
DataGridView1 Name DGV
3. Masukkan kode berikut diatas Public Class Pemakai bertujuan untuk memanggil driver dengan koneksi oleDB
Imports System.Data.OleDb
4. Dengan membuat prosedur kosongkan yang berfungsi untuk menghilangkan nilai pada textbox, Masukkan kode berikut ini :
Sub Kosongkan() TKode.Text = ""
TNama.Text = ""
TStok.Text = ""
TTerima.Text = ""
TKode.Focus() End Sub
5. Pada prosedur Tampilkan berfungsi untuk mengambil data dari tabel TMPTerima dengan kode sebagai berikut :
Sub Tampilkan()
DA = New OleDbDataAdapter("Select * from TMPTerima", CONN) DS = New DataSet
DS.Clear()
DA.Fill(DS, "TMPTerima")
DGV.DataSource = (DS.Tables("TMPTerima")) DGV.ReadOnly = True
Call AturKolom() End Sub
6. Pada prosedur AturKolom berfungsi untuk mengatur panjang kolom dengan kode sebagai berikut:
Sub AturKolom()
DGV.Columns("kode").Width = 50 DGV.Columns(1).Width = 250
DGV.Columns(2).Width = 75 DGV.Columns(3).Width = 75
End Sub
7. Pada prosedur HapusGrid berfungsi untuk menghapus data pada tabel TMPTerima dengan kode sebagai berikut:
Sub HapusGrid()
DA = New OleDbDataAdapter("Delete * from TMPTerima", CONN) DS = New DataSet
DS.Clear()
DA.Fill(DS, "TMPTerima")
DGV.DataSource = (DS.Tables("TMPTerima")) End Sub
8. Pada prosedur CariTotalTerima berfungsi untuk melakukan penjumlahan pada kolom jumlah terima barang dengan kode sebagai berikut:
Sub CariTotalTerima() On Error Resume Next
CMD = New OleDbCommand("select sum(Diterima) as ketemu from TMPTerima", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
TotalTerima.Text = RD.GetValue(0) Else
TotalTerima.Text = 0 End If
End Sub
9. Pada prosedur Otomatis berfungsi untuk membuat kode pada nomor transaksi dengan ketentuan 2 digit didepan adalah “TR” ditambah dengan tanggal transaksi dan 2 digit penomoran. Contoh: TR1902201601 yang berarti TR adalah kode transaksi, 19022016 adalah tanggal transaksi dan 01 merupakan nomor urut pertama transaksi. kode sebagai berikut:
Private Sub Otomatis()
CMD = New OleDbCommand("Select * from Penerimaan where NomorTrm in (select max(NomorTrm) from Penerimaan) order by NomorTrm desc", CONN)
Dim urutan As String Dim hitung As Long RD = CMD.ExecuteReader RD.Read()
If Not RD.HasRows Then
urutan = "TR" + Format(Now, "yyMMdd") + "01"
Else
If Microsoft.VisualBasic.Mid(RD.GetString(0), 3, 6) <>
Format(Now, "yyMMdd") Then
urutan = "TR" + Format(Now, "yyMMdd") + "01"
Else
hitung = Microsoft.VisualBasic.Right(RD.GetString(0), 2) + 1
urutan = "TR" + Format(Now, "yyMMdd") + Microsoft.VisualBasic.Right("00" & hitung, 2)
End If End If
LBLNomor.Text = urutan End Sub
10. Pada prosedur TampilPemasok berfungsi untuk menampilkan data pemasok ke combobox1 dengan kode sebagai berikut:
Sub TampilPemasok()
CMD = New OleDbCommand("select * from Pemasok", CONN) RD = CMD.ExecuteReader
ComboBox1.Items.Clear() Do While RD.Read
ComboBox1.Items.Add(RD.Item(0)) Loop
End Sub
11. Pada objek form penerimaan prosedur Actived berfungsi untuk memanggil koneksi, prosedur otomatis dan pengaturan LBLTanggal untuk waktu berikut kode sebagai berikut:
Private Sub Penerimaan_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Koneksi()
Call Otomatis()
LBLTanggal.Text = Today End Sub
12. Pada objek form penerimaan prosedur load berfungsi untuk memanggil koneksi, prosedur hapus grid, tampilkan dan memanggil data pemasok ketika form dijalankan, berikut kode sebagai berikut:
Private Sub Penerimaan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Koneksi() Call HapusGrid() Call Tampilkan()
Call TampilPemasok() End Sub
13. Masukkan kode berikut ini pada DataGridView prosedur CellEndEdit : Private Sub DGV_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
If e.ColumnIndex = 3 Then
DGV.Rows(e.RowIndex).Cells(4).Value =
DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(3).Value Call CariTotalTerima()
Call Kosongkan() End If
End Sub
14. Masukkan kode berikut ini pada DataGridView prosedur CellValidating : Private Sub DGV_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs)
On Error Resume Next
If e.ColumnIndex = 0 Then
CMD = New OleDbCommand("Select * from barang where KodeBrg='" &
e.FormattedValue.ToString & "'", CONN) RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
DGV.Rows(e.RowIndex).Cells(0).Value = RD.GetString(0) DGV.Rows(e.RowIndex).Cells(1).Value = RD.GetString(1) DGV.Rows(e.RowIndex).Cells(2).Value = RD.GetValue(2)
Exit Sub Else
Beep()
End If
End If
If e.ColumnIndex = 3 Then
DGV.Rows(e.RowIndex).Cells(4).Value =
DGV.Rows(e.RowIndex).Cells(2).Value * e.FormattedValue.ToString End If
End Sub
15. Masukkan kode berikut pada objek botton1:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ComboBox1.Text = "" Or NomorReff.Text = "" Or TotalTerima.Text =
"" Then
MsgBox("Data belum lengkap") Exit Sub
End If
Try
'simpan ke tabel Penerimaan 'MenuUtama.Panel1.Text
Dim Simpan As String Simpan = "insert into
Penerimaan(nomorTrm,tanggalTrm,KodePms,nomorbon,totalTrm,kodepmk) values "
& _
"('" & LBLNomor.Text & "','" & LBLTanggal.Text & "','" &
ComboBox1.Text & "','" & NomorReff.Text & "','" & TotalTerima.Text & "','"
& MenuUtama.Panel1.Text & "')"
CMD = New OleDbCommand(Simpan, CONN) CMD.ExecuteNonQuery()
'baca tabel TMPTerima
DA = New OleDbDataAdapter("select * from TMPTerima", CONN) DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
Dim TBL As DataTable = DS.Tables(0)
For baris As Integer = 0 To TBL.Rows.Count - 1
Dim sqlsimpan As String = "insert into
DetailTerima(nomorTrm,KODEBRG,stokawal,qtytrm,stokakhir) values " & _
"('" & LBLNomor.Text & "','" & TBL.Rows(baris)(0) & "','" &
TBL.Rows(baris)(2) & "','" & TBL.Rows(baris)(3) & "','" &
TBL.Rows(baris)(2) + TBL.Rows(baris)(3) & "')"
CMD = New OleDbCommand(sqlsimpan, CONN) CMD.ExecuteNonQuery()
'tambahstok barang
CMD = New OleDbCommand("select * from barang where KodeBrg='" & TBL.Rows(baris)(0) & "'", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
Dim TambahStok As String = "update barang set
JumlahBrg= '" & RD.GetValue(3) + TBL.Rows(baris)(3) & "' where KodeBrg='" &
TBL.Rows(baris)(0) & "'"
CMD = New OleDbCommand(TambahStok, CONN) CMD.ExecuteNonQuery()
End If Next baris
Call HapusGrid() Call Tampilkan() Call Kosongkan() Call Otomatis() Call HapusMaster() Catch ex As Exception MsgBox(ex.Message) End Try
End Sub
16. Masukkan kode berikut ini pada objek TKode prosedur KeyPress:
Private Sub Tkode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TKode.KeyPress If e.KeyChar = Chr(13) Then
If TKode.Text = "" Then 'DaftarBarang.Show()
MsgBox("kode barang masih kosong") Else
CMD = New OleDbCommand("Select * from TMPTerima where kode='" & TKode.Text & "'", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
TNama.Text = RD.GetString(1) TStok.Text = RD.GetValue(2)
MsgBox("kode barang sudah ada dalam transaksi, edit saja jumlahnya")
'Call Kosongkan() TStok.Focus()
Exit Sub Else
CMD = New OleDbCommand("Select * from barang where KodeBrg='" & TKode.Text & "'", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
TNama.Text = RD.GetString(1) TStok.Text = RD.GetValue(3) TTerima.Focus()
Else
MsgBox("Kode tidak terdaftar") TKode.Text = ""
TKode.Focus() End If
End If End If End If
If e.KeyChar = Chr(27) Then
CMD = New OleDbCommand("select * from TMPTerima where kode='" &
TKode.Text & "'", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
Dim sqlhapus As String = "delete * from TMPTerima where kode='" & TKode.Text & "'"
CMD = New OleDbCommand(sqlhapus, CONN) CMD.ExecuteNonQuery()
Call Tampilkan()
Call CariTotalTerima()
If DGV.Rows.Count - 1 = 0 Then Call HapusMaster()
End If
TKode.Text = ""
Else
MsgBox("Kode tidak ada dalam transaksi") TKode.Focus()
End If End If
'If e.KeyChar = Chr(9) Then TDibayar.Focus() End Sub
Kode diatas berfungsi ketika nilai yang sama dimasukkan pada textbox1 atau Tkode maka akan dimunculkan data penerimaan yang sebelumnya telah terinput.
17. Masukkan kode berikut ini pada objek TTerima prosedur KeyPress:
Private Sub TTerima_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TTerima.KeyPress
If e.KeyChar = Chr(13) Then
CMD = New OleDbCommand("select * from TMPTerima where kode='" &
TKode.Text & "'", CONN)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
Dim editjumlah As String = "update TMPTerima set diterima='" & TTerima.Text
& "' where kode='" & TKode.Text & "'"
CMD = New OleDbCommand(editjumlah, CONN) CMD.ExecuteNonQuery()
Call Tampilkan()
Call CariTotalTerima() Call Kosongkan()
Else
Dim sqlsimpan As String = "Insert into TMPTerima (kode,nama,stokawal,diterima) values " & _
"('" & TKode.Text & "','" & TNama.Text & "','" & TStok.Text
& "','" & TTerima.Text & "')"
CMD = New OleDbCommand(sqlsimpan, CONN) CMD.ExecuteNonQuery()
Call Tampilkan()
Call CariTotalTerima() Call Kosongkan()
End If End If
If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True
End Sub
18. Pada prosedur HapusMaster berfungsi untuk membersihkan nilai pada textboxt dan combobox, dengan kode sebagai berikut:
Sub HapusMaster()
ComboBox1.Text = ""
LBLPerson.Text = ""
LBLNama.Text = ""
NomorReff.Text = ""
TotalTerima.Text = ""
ComboBox1.Focus() End Sub
19. Masukkan kode pada objek button2 atau tombol batal sebagai berikut :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call Kosongkan() Call HapusGrid() Call HapusMaster() Call Tampilkan() End Sub
20. Masukkan kode pada objek button3 atau tombol tutup sebagai berikut :
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Close() End Sub
21. Masukkan kode pada objek combobox1 prosedur KeyPress sebagai berikut Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress If e.KeyChar = Chr(13) Then
If ComboBox1.Text = "" Then
MsgBox("Kode Pemasok masih kosong") Else
NomorReff.Focus() End If
End If End Sub
22. Masukkan kode pada objek combobox1 prosedur SelectedIndexChanged sebagai berikut Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
CMD = New OleDbCommand("select * from Pemasok where KodePms='" &
ComboBox1.Text & "'", CONN) RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
LBLPerson.Text = RD.Item(5) LBLNama.Text = RD.Item(2)
Else
MsgBox("Kode Pemasok tidak terdaftar") End If
End Sub
23. Masukkan kode pada objek NomorReff prosedur KeyPress sebagai berikut Private Sub NomorReff_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles NomorReff.KeyPress
If e.KeyChar = Chr(13) Then TKode.Focus() End Sub
24. Hasil dari kode program diatas, dapat dilihat pada gambar 7.11 berikut ini :
Gambar 7.11Hasil Form Penerimaan Barang
Form Penerimaan pada gambar 7.11 pada pencarian kode barang masih mengetikkan kode, apabila kasir tidak mengingat seluruh kode barang maka dibutuhkan pencarian barang dengan memilih pada daftar barang. Maka, dibutuhkan form pencarian barang apabila daftar barang di klik maka akan dimunculkan pada kolom kode barang, nama barang dan stok.
Berikut langkah pembuatan form pencarian barang
1. Buatlah form baru dengan klik menu Project dan pilih Add Windows Form 2. Desain Form Daftar Barang seperti pada gambar 7.12 dibawah ini:
Gambar 7.8Form Daftar Barang
3. Gantilah properti masing-masing komponen seperti tertera dibawah ini : Tabel 7.11 Pengaturan Properties Form Daftar Barang
Object Properties Value
Form1 Text Daftar Barang
Form1 Name D_Barang
Form1 Start Position CenterScreen
DataGridView1 Name DGV
4. Masukkan kode berikut diatas Public Class D_barang 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 KodeBrg,NamaBrg,StokMinimal from barang", CONN)
ds = New DataSet ds.Clear()
da.Fill(ds, "Barang")
DGV.DataSource = (ds.Tables("Barang")) DGV.ReadOnly = True
End Sub
6. Masukkan kode pada objek form D_Barang prosedur Load berikut ini:
Private Sub D_Barang_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)
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