MODUL PRAKTIKUM
PEMROGRAMAN III (VB.NET & MYSQL)
MEMBUAT APLIKASI PEMBELIAN SEDERHANA
A.
Tools yang di butuhkan
1.
Visual Basic 2010
2.
Database MYSQL (PhpMyadmin)
3.
MySQL Connector Net
4.
MySQL Connector ODBC
5.
Crystal Report untuk Visual Basic 2010
B.
Desain Tampilan Program
1.
Form Menu
3.
Form Supplier
5.
Form Laporan Barang
7.
Form Cetak P.O
8.
Form Laporan Pembeliaan
C.
Perancangan Database
1.
Buat Nama Database di PhpMyadmin dengan Nama “AplikasiPembelian”
2.
Buat Tabel-Tabel sebagai berikut:
-
TabelSupplier (KodeSupp
Primary Key)
-
TabelPembelian (NoTransaksi
Primary Key)
D.
PEMBUATAN MODUL, FORM DAN SCRIPT PROGRAM
1.
Modul Koneksi
Membuat ModulKoneksi dengan cara:
-
Klik Menu Project
-
Klik Add Module
-
Beri Nama ModulKoneksi
-
Klik Add
-
Tulis/Copy script dibawah
-
Kalau terjadi error, cek atau Pastikan MySQL Connector Net sudah terinstall dan
sudah di referensikan.
Cara menggunakan Referensi MySQL Connector:
i.
Klik Menu Project
ii.
Add Reference, muncul jendela
Imports MySql.Data.MySqlClient Module ModulKoneksiPublic Conn As MySqlConnection Public RD As MySqlDataReader Public DA As MySqlDataAdapter Public CMD As MySqlCommand Public DS As DataSet
Public simpan, ubah, hapus, sql As String Public Sub bukaDB()
Dim SQLConn As String
SQLConn = "server=localhost;Uid=root;Pwd=;Database=AplikasiPembelian"
Conn = New MySqlConnection(SQLConn)
If Conn.State = ConnectionState.Closed Then Conn.Open()
End If End Sub
iii.
Klik OK
2.
Membuat Script Form Barang
Imports MySql.Data.MySqlClient
Public Class FormBarang Dim id As String Sub isiGrid()
ModulKoneksi.bukaDB()
DA = New MySqlDataAdapter("SELECT * from TabelBarang", Conn) DS = New DataSet
DA.Fill(DS, "TabelBarang")
DataGridView1.DataSource = DS.Tables("TabelBarang") DataGridView1.ReadOnly = True DataGridView1.Columns(0).Width = 70 DataGridView1.Columns(1).Width = 205 DataGridView1.Columns(2).Width = 80 DataGridView1.Columns(3).Width = 80 DataGridView1.Columns(4).Width = 50 End Sub Sub Bersih() txtKode.Text = "" txtNamaBarang.Text = "" txtHargaBeli.Text = "" txtHargaJual.Text = "" txtStok.Text = "" txtKode.Focus() txtKode.Enabled = False txtNamaBarang.Enabled = False txtHargaBeli.Enabled = False txtHargaJual.Enabled = False txtStok.Enabled = False End Sub
Private Sub FormBarang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call isiGrid() End Sub
Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
If BtnSimpan.Text = "&Simpan" Then If txtKode.Text = "" Then
MsgBox("Kode Harus Di isi", MsgBoxStyle.Exclamation, "Peringatan") txtKode.Focus()
Exit Sub End If
Call bukaDB()
CMD = New MySqlCommand("SELECT KodeBarang from TabelBarang WHERE KodeBarang = '" & txtKode.Text & "'", Conn)
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then
MsgBox("Maaf, Data dengan Kode tersebut telah ada", MsgBoxStyle.Exclamation, "Peringatan")
Else
simpan = "INSERT INTO TabelBarang
(KodeBarang,NamaBarang,HargaBeli,HargaJual,Stok) VALUES ('" & txtKode.Text & "','" & txtNamaBarang.Text & "','" & _
txtHargaBeli.Text & "','" & txtHargaJual.Text & "','" & txtStok.Text &
"')"
CMD = New MySqlCommand(simpan, Conn) CMD.ExecuteNonQuery()
Call isiGrid()
BtnSimpan.Text = "&Tambah"
(KodeBarang,NamaBarang,HargaBeli,HargaJual,Stok) VALUES ('" & txtKode.Text & "','" & txtNamaBarang.Text & "','" & _
txtHargaBeli.Text & "','" & txtHargaJual.Text & "','" & txtStok.Text &
"')"
CMD = New MySqlCommand(simpan, Conn) CMD.ExecuteNonQuery() Call isiGrid() BtnSimpan.Text = "&Tambah" Call Bersih() End If Else BtnSimpan.Text = "&Simpan" 'Call Bersih() txtKode.Enabled = True txtNamaBarang.Enabled = True txtHargaBeli.Enabled = True txtHargaJual.Enabled = True txtStok.Enabled = True txtKode.Focus() End If End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
id = InputBox("Masukkan Kode ", "Pencarian") If id = "" Then Exit Sub
On Error Resume Next Call bukaDB()
sql = "select * from TabelBarang where KodeBarang='" & id & "'"
CMD = New MySqlCommand(sql, Conn) CMD.ExecuteNonQuery() RD = CMD.ExecuteReader RD.Read() If RD.HasRows Then txtKode.Text = RD.Item(0) txtNamaBarang.Text = RD.Item(1) txtHargaBeli.Text = RD.Item(2) txtHargaJual.Text = RD.Item(3) txtStok.Text = RD.Item(4) txtKode.Focus() RD.Close() Else
MsgBox("Data tidak ditemukan", vbInformation, "Message") End If
End Sub
Private Sub BtnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEdit.Click
Try
Call bukaDB()
ubah = "UPDATE TabelBarang SET NamaBarang='" & txtNamaBarang.Text &
"',HargaBeli='" & txtHargaBeli.Text & "',HargaJual='" & txtHargaJual.Text & "',Stok='" & txtStok.Text & "' where KodeBarang = '" & txtKode.Text & "'"
CMD = New MySqlCommand(ubah, Conn) CMD.ExecuteNonQuery()
Call isiGrid()
BtnSimpan.Text = "&Tambah"
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Terjadi Kesalahan") End Try
txtStok.Text & "' where KodeBarang = '" & txtKode.Text & "'"
CMD = New MySqlCommand(ubah, Conn) CMD.ExecuteNonQuery()
Call isiGrid()
BtnSimpan.Text = "&Tambah"
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Terjadi Kesalahan") End Try
End Sub
Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click
Dim jawab As String If txtKode.Text = "" Then
jawab = MsgBox("Yakin Akan menghapus Semua Data?", vbYesNo, "Peringatan") If jawab = vbYes Then
Try
Call bukaDB()
hapus = "Delete from TabelBarang"
CMD = New MySqlCommand(hapus, Conn) CMD.ExecuteNonQuery()
Call isiGrid() Call Bersih() Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Terjadi Kesalahan") End Try
End If Else Try
Call bukaDB()
hapus = "Delete from TabelBarang where KodeBarang='" & txtKode.Text & "'"
CMD = New MySqlCommand(hapus, Conn) CMD.ExecuteNonQuery()
Call isiGrid() Call Bersih() Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Terjadi Kesalahan") End Try
End If End Sub
Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click
Me.Close() End Sub
Private Sub BtnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrint.Click
FormLaporanBarang.MdiParent = Me FormLaporanBarang.Show()
End Sub
3.
Membuat Script Form Transaksi Pembelian
Imports MySql.Data.MySqlClientPublic Class FormPembelian Dim index As Integer = 0 Dim Total As Double = 0.0
Dim cmmd, cmmd1, cmmd2 As MySqlCommand Dim id As String
Sub BuatTabel()
'membuat colom pada listview
ListView1.Columns.Add("KODE BARANG ", 50, HorizontalAlignment.Center) ListView1.Columns.Add("NAMA BARANG", 150, HorizontalAlignment.Left) ListView1.Columns.Add("HARGA BELI", 90, HorizontalAlignment.Right) ListView1.Columns.Add("JUMLAH", 90, HorizontalAlignment.Right) ListView1.Columns.Add("TOTAL HARGA", 90, HorizontalAlignment.Right)
'menjadikan listview detail artinnya nampak sebagai baris dan kolom
ListView1.View = View.Details
'menampilkan garis sebagai pembatas baris dan kolom
ListView1.GridLines = True
'untuk membuat seluruh satu baris tersorot saat di klik
ListView1.FullRowSelect = True End Sub
Private Sub BtnCariSupplier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCariSupplier.Click
id = InputBox("Masukkan Kode ", "Pencarian") If id = "" Then Exit Sub
On Error Resume Next Call bukaDB()
sql = "select * from TabelSupplier where KodeSupp='" & id & "'"
CMD = New MySqlCommand(sql, Conn) CMD.ExecuteNonQuery() RD = CMD.ExecuteReader RD.Read() If RD.HasRows Then txtKodeSup.Text = RD.Item(0) txtNamaSup.Text = RD.Item(1) txtKontak.Text = RD.Item(2) txtKodeBrg.Focus() RD.Close() Else
MsgBox("Data tidak ditemukan", vbInformation, "Message") End If
End Sub
Private Sub BtnCariBarang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCariBarang.Click
id = InputBox("Masukkan Kode ", "Pencarian") If id = "" Then Exit Sub
On Error Resume Next Call bukaDB()
sql = "select * from TabelBarang where KodeBarang='" & id & "'"
CMD = New MySqlCommand(sql, Conn) CMD.ExecuteNonQuery()
RD = CMD.ExecuteReader RD.Read()
If RD.HasRows Then txtKodeBrg.Text = RD.Item(0) txtNamaBrg.Text = RD.Item(1) txtHarga.Text = RD.Item(2) txtJumlah.Focus() RD.Close() Else
MsgBox("Data tidak ditemukan", vbInformation, "Message") End If
End Sub
Private Sub txtJumlah_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtJumlah.TextChanged
txtTotal.Text = Val(txtHarga.Text) * Val(txtJumlah.Text) End Sub
Private Sub BtnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTambah.Click
If txtJumlah.Text = "" Then txtJumlah.Focus() End If
Dim Value() As String = {txtKodeBrg.Text, txtNamaBrg.Text, txtHarga.Text, txtJumlah.Text, txtTotal.Text}
Call AddList(Value)
Total += CDbl(txtTotal.Text) : txtGrandTotal.Text = Format(CDbl(CStr(Total))) txtKodeBrg.Text = "" txtNamaBrg.Text = "" txtHarga.Text = "" txtJumlah.Text = "" txtTotal.Text = "" txtKodeBrg.Focus() End Sub
Sub AddList(ByVal Value() As String) Dim subIndex As Integer
ListView1.Items.Add("") For subIndex = 0 To 4 ListView1.Items(index).SubItems.Add("") ListView1.Items(index).SubItems(subIndex).Text = Value(subIndex) Next index = index + 1 End Sub
Private Sub FormPembelian_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call BuatTabel() End Sub
Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click
ListView1.Items.Clear() index = 0
Total = 0
Catatan :
-
Tgl Transaksi di buat dengan menggunakan object DateTimePicker
-
Gambar ini dibuat degan menggunakan object ListView
txtGrandTotal.Text = ""
End Sub
Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
Dim counter As Integer Dim sql1, sql2 As String Try
Call bukaDB()
sql1 = "INSERT INTO TabelPembelian(NoTransaksi, Tgl, KodeSupp) VALUES('" & _ txtNo.Text & "','" & _
Format(Tgl.Value, "yyyy-MM-dd") & "','" & _ txtKodeSup.Text & "')"
cmmd1 = New MySqlCommand(sql1, Conn) Dim x As Integer = cmmd1.ExecuteNonQuery For counter = 0 To index - 1
sql2 = "INSERT INTO
TabelPembelianDetail(NoTransaksi,KodeBarang,Jumlah,totalharga) VALUES('" & _ txtNo.Text & "','" & _
ListView1.Items(counter).SubItems(0).Text & "','" & _ ListView1.Items(counter).SubItems(3).Text & "','" & _ ListView1.Items(counter).SubItems(4).Text & "')"
cmmd2 = New MySqlCommand(sql2, Conn) cmmd2.ExecuteNonQuery()
Next
If x = 1 Then
MessageBox.Show("DATA PEMBELIAN BERHASIL DISIMPAN") End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class
4.
Membuat Report/Laporan Data Barang
Pastikan MySQL Connector ODBC sudah Terinstall.
Buat DSN (Data Source Name)
Cara membuat DSN
1.
Klik start
2.
Control panel
3.
System & Security
4.
Administrative Tools
5.
Data Sources (ODBC)
6.
Klik User DSN
7.
Klik Add, akan tampil
Scroll ke bawah akan tampil pilihan seperti berikut
8.
Contoh Di isi seperti tampilan berikut
Di pilihan Database silahkan pilih database yang akan dipakai dan untuk memastikan
silahkan klik tombol Test. Jika tidak ada masalah maka akan tampil pesan Connection
Succes.
9.
Close
Kembali Ke Project Aplikasi Pembelian Sederhana:
Pastikan Sudah Instal CrystalReport
untuk Visual Basic 2010 dan lakukan setting
sebagai berikut:
o
Klik Menu Project
o
Aplikasi Pembelian Properties, akan tampil jendela berikut
o
Pilih target Framework ke .NET Framework 4
o
OK, Yes dan Restart VB.Net anda
1.
Klik Menu Project
2.
Klik Add New Item, akan tampil jendela seperti berikut
3.
Klik Reporting
4.
Pilih Crystalreports
5.
Di Pilihan Name Beri Nama Report misalnya LaporanSupplier.rpt
6.
Klik Add, akan muncul tampilan berikut
7.
Klik Pilihan As a Blank Report, klik OK…akan tampil
Menghubungkan ke DSN (ODBC)
1.
Klik Kanan Database Field
3.
Buat Koneksi Dengan Cara :
a.
Double Klik Pilihan Create New Connection
b.
Double klik Pilihan ODBC (RDO) Akan Muncul Konfigurasi Penentuan DSN Yang
Dipakai seperti berikut
Isi User ID dengan root dan Password kosongkan
c.
Finish, akan tampil
4.
Pilih Tabel Atau View Yang Akan Dibuat Report dengan cara double klik AplikasiPembelian,
maka akan tampil
5.
OK, maka akan tampil kembali tampilan berikut
6.
Double klik Database Field
8.
Drag kolom-kolom yang ada dan letakkan di bawah Section3 (Details), misalnya seperti berikut
9.
Tambahkan Judul Laporan dengan cara klik kanan pada area yg kosong, pilih insert
kemudian Text Object. Lihat tampilan
10. Letakkan di bawah Section1 dan tuliskan LAPORAN DATA SUPPLIER
11. Klik kanan tulisan Laporan Data Supplier
12. Pilih Format Object
14. Pilih Paragraph, akan tampil
15. Pilih Alignment dan klik Centered, klik OK
Menggunakan Design Report yang sudah Jadi.
1.
Klik menu Project
2.
Klik Add Windows Form, akan tampil
Tulis nama Form yang akan disimpan, misalnya FormLaporanSupplier
3.
Klik Add
5.
Klik jendela ToolBox, pilih kelompok Reporting, pilih CrystalReportViewer
7.
Klik pilihan , makan akan muncul
9.
Pilih , akan tampil pilihan nama report yang sudah di buat.
10. Pilih LaporanSupplier.rpt
11. OK
Memanggil Laporan dari FormMenu
1.
Buka FormMenu
3.
Double pilihan Data Supplier, dan tuliskan script berikut
Memanggil FormLaporan dari Tombol Print di Form Supplier
1.
Double klik Tombol Print, dan tuliskan Script berikut
5.
Membuat Report PO (Laporan Transaksi)
Untuk membuat PO seperti tampilan diatas, kita harus mengingat kembali bagaimana
caranya membuat Query di MySQL.
Query adalah perintah SQL untuk menampilkan field/kolom dari beberapa tabel yang sudah
di Relasikan sebelumnya. Hasil dari Query tersebut nanti di simpan dalam bentuk View.
Berikut adalah cara membuat Query (View) di MySQL untuk membuat PO:
a.
Pastikan semua tabel yang digunakan sudah terhubung (ada primary key atau foreign
key di masing-masing tabel)
b.
Gunakan perintah SELECT kemudian tulis NAMA-NAMA KOLOM(FIELD)
yang akan di
tampilkan (gunakan tanda koma sebagai pemisah antar kolom). Kemudian FROM
TABEL-TABEL yang digunakan (gunakan tanda koma sebagai pemisah antar tabel)
FormLaporanSupplier.MdiParent = Me FormLaporanSupplier.Show()
FormLaporanSupplier.MdiParent = FormMenu FormLaporanSupplier.Show()
WHERE
tulis kolom kunci dari tabel-tabel misalnya (tabelpembelian.NoTransaksi =
tabelpembeliandetail.NoTransaksi ). Gunakan AND
jika ada beberapa kriteria kolom.
c.
Lihat pembuatan Query untuk membuat CetakPO dibawah :
SELECT
NoTransaksi,Tgl,kodesupp,supplier,kontak,KodeBarang,NamaBarang,HargaBeli,Jumlah,To
talHarga
FROM
tabelpembelian, tabelpembeliandetail, tabelbarang, tabelsupplier
WHERE
tabelpembelian.NoTransaksi = tabelpembeliandetail.NoTransaksi AND
tabelpembelian.KodeSupp = tabelsupplier.kodesupp AND
tabelpembeliandetail.KodeBarang = tabelbarang.KodeBarang
CATATAN :
Jika ada error
AMBIGU
, itu berarti ada nama kolom (Field) yang sama di beberapa tabel. Cara
mengatasinya : sebutkan nama tabel sebelum nama kolom yang akan ditampilkan. Contohnya :
SELECT tabelpembelian.NoTransaksi,Tgl, tabelsupplier.kodesupp, supplier, kontak,
tabelbarang.KodeBarang, NamaBarang,HargaBeli,Jumlah,TotalHarga
Simpan query yang dibuat dengan nama CetakPO, lihat seperti berikut:
Scroll Layar Ke bawah sampai muncul Pilihan Buat Tampilan atau Create View untuk menyimpan
hasil query seperti tampilan berikut.
Klik Buat Tampilan, akan tampil jendela
Pada pilihan Nama View tulis nama Viewnya. Misalnya CetakPO
Kembali ke Aplikasi VB.Net
2.
Klik Add New Item, akan tampil jendela seperti berikut
3.
Klik Reporting
4.
Pilih Crystalreports
5.
Di Pilihan Name Beri Nama Report misalnya CetakPO.rpt
6.
Klik Add, akan muncul tampilan berikut
Menghubungkan ke DSN (ODBC)
17.
Klik Kanan Database Field
18.
Pilih Database Expert, akan tampil
19.
Karena sebelumya kita sudah membuat Laporan Supplier, maka kita tinggal memilih koneksi
yang sudah di buat yaitu Pembelian.
20.
Pilih koneksi Pembelian dengan cara Double Klik atau klik tanda (+) di samping Pembelian.
Lihat tampilan berikut.
klik tanda
maka akan tampil
22.
Double klik Database Field
23.
Double CetakPO1, akan tampil
Akan tampil
25.
Aturlah Area Section1 dan Section2 supaya rapat. Sedangkan Section2 dan
GroupHeaderSection1 supaya di perlebar jaraknya. Lihat tampilan berikut
26.
Tambahkan Text dengan cara klik kanan area yang kosong dan pilih Insert kemudian Text Object
untuk membuat judul yaitu “PURCHASE ORDER (P.O)” seperti berikut
Aturlah sehigga tampil seperti berikut
Kemudian Drag object Group #1 Name dan letakkan di samping Nomor P.O yang sudah
dibuat. Lihat gambar
Berikutya Drag kolom tgl dari cetakPO1 ke area report dan letakkan di bawah section3
(details) seperti berikut
Letakkan tgl yang berada diatas GroupHeaderSection1 dibawah Object Nomor P.O.
seperti berikut
Dengan cara yang sama drag terlebih dahulu kodesupp, supplier,kontak dari CetakPO1
ke area Section3 (Details) lihat tampilannya
drag lagi kodebarang, namabarang, hargabeli, jumlah, totalharga dari CetakPO1 ke area
Section3 (Details) lihat tampilannya
Membuat Grand Total
Klik kanan di area report yang kosong, pilih Insert pilih Summary. Lihat tampilan berikut
Pilih cetakpo1.totalharga. klik OK
Kemudian OK
Hasilnya
27. Tampilkan hasil sementaranya dengan klik pilihan Main Report Preview
28. Menambahkan Nomor Urut, klik kanan diarea report yang kosong – insert – Special Field
– Record Number. lihat gambar
Ganti Tulisan Record Number yang ada di atas GroupHeaderSection1 menjadi tulisan
No. seperti tampilan berikut
29. Untuk mempercantik tambahkan object Box untuk daftar barang seperti tampilan
berikut
Sehingga tampil seperti berikut
Tambahkan Line kembali untuk membuat garis horizontal
Menggunakan Design Report yang sudah Jadi.
12. Klik menu Project
Tulis nama Form yang akan disimpan, misalnya FormCetakPO
14. Klik Add
15. Akan tampil
17. Drag CrystalReportViewer ke Area Form, akan tampil
19. Klik Choose a CrystalReport, akan tampil
20. Pilih , akan tampil pilihan nama report yang sudah di buat.
21. Pilih cetakPO.rpt
Memanggil FormCetakPO dari Tombol Cetak di Form Transaksi Pembelian
2.
Double klik Tombol Cetak, dan tuliskan Script berikut
Private Sub BtnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCetak.Click
If txtNo.Text = "" Then
MsgBox("Nomor PO Kosong", MsgBoxStyle.Exclamation, "informasi") txtNo.Focus()
Else
FormCetakPO.CrystalReportViewer1.SelectionFormula =
"{cetakpo1.notransaksi}='" & txtNo.Text & "'"
FormCetakPO.CrystalReportViewer1.RefreshReport() FormCetakPO.MdiParent = FormMenu FormCetakPO.Show() Me.Hide() End If End Sub