APLIKASI PEMBELIAN BARANG - VB.Net Peminat silakan hubungi : Email : uusrusmawan71@gmail.com Facebook : konsultasivb@ymail.com (Uus Rusmawan) Phone : 0812 8438 1118 Membuat Project Baru Tahapan pertama dalam pembuatan aplikasi pembelian barang ini adalah membuat project baru dengan langkah sebagai berikut: 1. Buka visual studio 2008 2. Klik create project Memberi Nama Project 1
Setelah membuat project baru dan menyimpannya di posisi tertentu, maka akan terbentuk folder project secara otomatis yang di dalamnya terdapat folder... >> BIN>> DEBUG. Folder inilah yang akan dijadikan tempat menyimpan database. Membuat Database Dan Tabel Langkah selanjutnya adalah membuat database yang pada umumnya dilakukan dengan cara sebagai berikut: 1. Buka database access 2003. Jika anda menginstal beberapa versi office, misalnya office 2003 dan office 2007, maka tampilan mungkin akan mengikuti versi office 2007 2. Buatlah sebuah database yang baru kemudian tulis nama database dan simpan di posisi DEBUG project anda 3. Kemudian buatlah tabel barang dengan cara klik menu Create >> Table >> Klik kanan table1 >> Design View dan tulis nama tabel Menyimpan tabel barang 4. Selanjutnya buatlah beberapa tabel dengan struktur berikut ini : Tabel barang Tabel user 2
Tabel supplier Tabel perusahaan Tabel pembelian Tabel detail 3
Bentuk Relasi Tabel Bentuk relasi tabel dapat dilihat pada ilustrasi di bawah ini. Gambar ini diambil dari hasil relasi pada crystal report. Membuat Module Koneksi Database Relasi tabel Membuat module Imports System.Data.OleDb Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Module Module1 'mendefinisikan variabel untuk koneksi dan query 4
Public Conn As OleDbConnection Public DA As OleDbDataAdapter Public DS As DataSet Public CMD As OleDbCommand Public DR As OleDbDataReader 'mendefinisikan variabel agar laporan dapat dipanggil dengan aman tanpa peduli posisi folder Public cryrpt As New ReportDocument Public crtablelogoninfos As New TableLogOnInfos Public crtablelogoninfo As New TableLogOnInfo Public crconnectioninfo As New ConnectionInfo Public CrTables As Tables Public Sub seting_laporan() With crconnectioninfo.servername = (Application.StartupPath.ToString & "\database.mdb").databasename = (Application.StartupPath.ToString & "\database.mdb").userid = "".Password = "" End With CrTables = cryrpt.database.tables For Each CrTable In CrTables crtablelogoninfo = CrTable.LogOnInfo crtablelogoninfo.connectioninfo = crconnectioninfo CrTable.ApplyLogOnInfo(crtableLogoninfo) Next Public Sub Koneksi() Try 'string koneksi untuk database access 2003 Conn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=database.mdb") Conn.Open() Catch ex As Exception MsgBox(ex.Message) End End Try 5
End Module jika penulisan coding anda mengalami error, maka anda harus tambahkan references dengan cara sebagai berkut : 1. Klik menu project >> Pilih add reference 2. Pilih crystalldecisions.crystalreport.engine >> ok 3. Lakukan hal yang sama untuk crystalldecisions.share >> ok Menambah reference Form login Logika program dalam form login adalah sebagai berikut : 1. Setelah mengisi nama user lalu menekan enter maka kursor pindah ke password 2. Setelah mengisi password lalu menekan enter maka kursor pindah ke button Login 3. Pada saat Login di klik maka cari nama user dan password di tabel user 6
4. Jika data tidak ditemukan maka munculkan pesan password salah 5. Jika data ditemukan, maka form login disembunyikan dan menu utama ditampilkan 6. Pada Menu utama panel1 tampilkan kode user, di panel2 tampilkan nama user, di panel3 tampilkan status user 7. jika panel3 di menu utama statusnya USER atau OPERATOR, maka matikan menu user Catatan : Sebelumnya menu utama harus dibuat terlebih dahulu dengan menambahkan MenuStrip dan StatusStrip. Pembahasan tentang hal dapat dilihat dalam video tutorial. Form menu utama Form User Logika dan proses program dalam form User adalah sebagai berikut : 1. kode user dibuat secara otomatis dengan pola USR01 dan seterusnya 2. Anda cukup mengetik nama user, password dan memilih statusnya 7
3. Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel user 4. Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru (proses Insert) 5. Jika kode tersebut ada maka data tersebut akan diedit (proses update) 6. Proses edit dan hapus cukup dengan memilih data user dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan. Form Barang Form user Logika dan proses program dalam form barang adalah sebagai berikut : 1. Kode barang dibuat secara otomatis dengan pola B0001 dan seterusnya 2. Anda cukup mengetik nama barang, satuan dan seterusnya 3. Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel barang 4. Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru (proses Insert) 5. Jika kode tersebut ada maka data tersebut akan diedit (proses update) 8
6. Proses edit dan hapus cukup dengan memilih data user dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan. Form Supplier Form Barang Proses program dalam pengolahan data supplier sama dengan data user dan barang 9
Form Profil Perusahaan Form supplier Tujuan dibuatnya form perusahaan ini adalah agar header dalam laporan dapat secara dinamis berubah sesuai dengan isi data dalam tabel tersebut. Form profil perusahaan 10
Transaksi Pembelian Logika dan proses program dalam transaksi pembelian adalah sebagai berikut : 1. Nomor pembelian tampil secara otomatis dengan pola F0001 2. Tanggal diambil dari sistem komputer 3. Supplier dipilih dari listbox di kanan atas 4. Kode barang dipilih dari listbox di kanan. Jika data barang sudah terlalu banyak maka silakan ketik nama barang di kotak cari barang, maka data barang akan difilter 5. Jumlah barang diisi secara manual dan akan menghasilkan jumlah total di sebelah kanannya 6. Secara otomatis jumlah barang, grand total dan ppn tampil setelah mengisi jumlah barang dalam grid 7. Diskon dilakukan secara manual dalam bentuk jumlah nominal uang dan secara otomatis mempengaruhi total harga 8. Pembayaran dilakukan secara manual dan menghasilkan jumlah kembali Form transaksi pembelian Imports System.Data.OleDb 11
Public Class TransaksiPembelian Private Sub TransaksiPembelian_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call Bersihkan() Call FakturOtomatis() Label4.Text = Today 'menampilkan kode dan nama supplier dalam listbox1 CMD = New OleDbCommand("select * from tblsupplier", Conn) DR = CMD.ExecuteReader ListBox1.Items.Clear() Do While DR.Read ListBox1.Items.Add(DR.Item(0) & Space(2) & DR.Item(1)) Loop 'menampilkan kode dan nama barang dalam listbox2 CMD = New OleDbCommand("select * from tblbarang", Conn) DR = CMD.ExecuteReader ListBox2.Items.Clear() Do While DR.Read ListBox2.Items.Add(DR.Item(0) & Space(2) & DR.Item(1)) Loop Private Sub DGV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV.KeyPress On Error Resume Next 'jika menekan escape maka hapus data di baris tersebut If e.keychar = Chr(27) Then DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex) Call Hitungtransaksi() End If 'jika menekan enter maka pindahkan kursor ke pembayaran If e.keychar = Chr(13) Then TextBox1.Focus() End If 12
Sub Bersihkan() DGV.Rows.Clear() Label6.Text = 0 Label8.Text = 0 Label10.Text = 0 Label15.Text = 0 Label16.Text = 0 TextBox1.Text = 0 TextBox2.Text = 0 TextBox3.Clear() Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Call Bersihkan() Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 'hanya boleh diisi data angka 0-9 If Not ((e.keychar >= "0" And e.keychar <= "9") Or e.keychar = vbback) Then e.handled = True If e.keychar = Chr(13) Then Label15.Text = Val(Microsoft.VisualBasic.Str(Label8.Text)) + Val(Microsoft.VisualBasic.Str(Label10.Text)) Label15.Text = FormatNumber(Label15.Text, 0) TextBox1.Text = FormatNumber(TextBox1.Text, 0) Label15.Text = Val(Microsoft.VisualBasic.Str(Label15.Text)) - Val(Microsoft.VisualBasic.Str(TextBox1.Text)) Label15.Text = FormatNumber(Label15.Text, 0) TextBox2.Focus() End If 13
End Class Pesan ini muncul sesaat setelah melakukan klik pada button Simpan. Msgbox pencetakan faktur Sesaat setelah klik pilihan YES, maka akan tampil faktur pembelian dengan bentuk seperti gambar di bawah ini. Laporan Master Bukti Pembelian Tahapan pembuatan laporan dengan crystal report telah dibahas pada bab sebelumnya, untuk itu silakan dipelajari kembali. 14
Laporan Data User Langkah langkah pembuatan laporan data user dpat anda lihat pada video tutorial dalam buku ini. Sebelum memanggil laporan data user buatlah sebuah form yang terdiri dari empat buah button dan satu buah Crystal Report Viewer. adapun bentuk laporan data user terlihat pada gambar di bawah ini. Laporan data user Cara memanggil laporan data user dilakukan dengan membuat coding berikut ini. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click cryrpt.load("laporan User.rpt") Call seting_laporan() CRV.ReportSource = cryrpt CRV.RefreshReport() 15
Laporan Data Barang Langkah langkah pembuatan laporan data barang dpat anda lihat pada video tutorial dalam buku ini. Adapun bentuk laporan data barang terlihat pada gambar di bawah ini. Laporan data barang Untuk memaanggil laporan data barang diakukan dengan membuat coding berikut ini. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click cryrpt.load("laporan BARANG.rpt") Call seting_laporan() CRV.ReportSource = cryrpt CRV.RefreshReport() Laporan Data Supplier Langkah langkah pembuatan laporan data supplier dpat anda lihat pada video tutorial dalam buku ini. Adapun bentuk laporan data supplier terlihat pada gambar di bawah ini. 16
Laporan data supplier Adapun coding untuk memanggil laporan data supplier dilakukan dengan cara di bawah ini. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click cryrpt.load("laporan Supplier.rpt") Call seting_laporan() CRV.ReportSource = cryrpt CRV.RefreshReport() Laporan Pembelian Tahapan pembuatan laporan dimulai dengan mendesain bentuk-bentuk laporan yang diperlukan, silakan gunakan Ms. Word atau Ms. Excel sebagai model awalnya atau bahkan dengan coretan tangan pada lembaran kertas kosong, kemudian masing-masing laporan tersebut diprediksi tabel apa yang terlibat di dalamnya. Setelah desain selesai dan prediksi tabel-tabel yang diperlukan diketahui, maka mulailah membuat laporan dengan Crystal report. Laporan Harian Sebelum memanggil laporan data pembelian, buatlah sebuah form seperti gambar di bawah ini. 17
Laporan Periodik Laporan harian Laporan periodik yang dimaksud disini adalah laporan yang dipilih mulai dari tanggal awal hingga tanggal akhir. 18
Laporan mingguan Coding yang digunakan untuk memanggil laporan periodik adalah sebagai berikut: Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged If ComboBox2.Text = "" Then MsgBox("Tanggal awal harus diisi") Exit Sub End If Formula untuk memanggil laporan mingguan (periodik) CRV.SelectionFormula = "{tblpembelian.tanggal} in date ('" & ComboBox2.Text & "') to date ('" & ComboBox3.Text & "')" cryrpt.load("laporan mingguan.rpt") Call seting_laporan() CRV.ReportSource = cryrpt 19
CRV.RefreshReport() Laporan Bulanan Bentuk laporan bulanan dapat anda lihat pada gambar di bawah ini. Laporan Bulanan Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Formula untuk memanggil laporan bulanan CRV.SelectionFormula = "month({tblpembelian.tanggal}) = (" & Month(DateTimePicker1.Text) & ") and year({tblpembelian.tanggal}) = (" & Year(DateTimePicker1.Text) & ")" cryrpt.load("laporan bulanan.rpt") 20
Call seting_laporan() CRV.ReportSource = cryrpt CRV.RefreshReport() Laporan grafik Laporan grafik dapat dikombinasikan dengan formula sesuai kebutuhan. Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox5.SelectedIndexChanged If ComboBox4.Text = "" Then MsgBox("Tanggal awal harus diisi") Exit Sub End If CRV.SelectionFormula = "{tblpembelian.tanggal} in date ('" & ComboBox4.Text & "') to date ('" & ComboBox5.Text & "')" cryrpt.load("grafik.rpt") 21
Call seting_laporan() CRV.ReportSource = cryrpt CRV.RefreshReport() Jejak Transaksi Pembelian Pembuatan jejak transaksi pembelian diawali dengan membuat form dengan bentuk seperti gambar di bawah ini. Imports System.Data.OleDb Public Class RincianPembelian Sub Bersihkan() DGV.Columns.Clear() Label6.Text = 0 Label8.Text = 0 Label10.Text = 0 Form jejak transaksi pembelian 22
Label15.Text = 0 Label16.Text = 0 TextBox1.Text = 0 TextBox2.Text = 0 Private Sub RincianPembelian_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call Bersihkan() CMD = New OleDbCommand("select no_faktur from tblpembelian", Conn) DR = CMD.ExecuteReader ListBox1.Items.Clear() Do While DR.Read ListBox1.Items.Add(DR.Item(0)) Loop Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged DA = New OleDbDataAdapter("select tbldetail.kode_barang as [Kode Barang],tblbarang.nama_barang as [Nama Barang],tbldetail.harga_BELI as Harga,Qty,Total from tblbarang,tbldetail where tbldetail.kode_barang=tblbarang.kode_barang and tbldetail.no_faktur='" & ListBox1.Text & "'", Conn) DS = New DataSet DA.Fill(DS) DGV.DataSource = DS.Tables(0) DGV.ReadOnly = True 23