Anda di halaman 1dari 94

Di susun oleh : FX. Bima Cahya Putra, S.Kom Grace Gata, S.

Kom

UNIVERSITAS BUDI LUHUR JAKARTA 2008

Daftar Isi

BAB 1 Instalasi VB.Net ......................................................................... 1.1 Proses Instalasi VB.Net ............................................................ 1.2 Sekilas tentang VB.Net ............................................................ BAB 2 Merancang Database ............................................................... 2.1 Konsep Database .................................................................... 2.2 Key .......................................................................................... 2.3 Teknologi Manipulasi Data ...................................................... 2.4 Database dan Data Kontrol ..................................................... 2.5 Konsep Database Relational ................................................... 2.6 Index ....................................................................................... 2.7 Entity Relationship Diagram (ERD) .......................................... 2.8 Membuat Relasi antar database .............................................. 2.9 Koneksi Database Access pada VB.Net ................................... BAB 3 Membuat Form ........................................................................... 3.1 Main Menu ............................................................................... 3.2 Membuat Main Menu ............................................................... 3.3 Penggunaan Module ............................................................... 3.4 Form Entri Data Barang ........................................................... 3.5 Form Entri Data Pelanggan ..................................................... 3.6 Form Entry Pesanan ................................................................ 3.7 Form Entry Nota ...................................................................... 3.8 Form Entry Cetak Nota ............................................................ 3.9 Form Cetak Kwitansi ............................................................... 3.10 Form Entry Surat Jalan .......................................................... 3.11 Form Entry Retur ................................................................... 3.12 Form Cetak Retur .................................................................. BAB 4 Membuat Laporan ..................................................................... 4.1 Form Cetak Surat Jalan ........................................................... 4.2 Form Cetak Laporan Penjualan ............................................... Daftar Pustaka .......................................................................................

BAB 1 INSTALASI VB.NET

1.1 Proses Instalasi VB.NET Untuk menginstall Microsoft VB.NET sama seperti menginstal aplikasi produk Miscrosoft lain pada umumnya. Dalam hal ini tinggal hidupkan komputer, kemudian masukkan CD instalan VB.NET kedalam CD-ROM. Kemudian tunggu hingga proses selesai. Untuk menjalankan Microsoft VB.NET diperlukan perangkat keras yang sesuai dengan kebutuhan. Namun apabila koputer sudah terpasang Microsoft Windows 2000 atau yang lebih tinggi misalnya Windows XP, maka sudah dipastikan bahwa Anda bisa menjalankan Microsoft VB.NET. Untuk menginstal VB.NET Anda harus mempersiapkan perangkat keras dan perangkat lunak sebagai berikut : Komputer dengan spesifikasi minimal Pentium II 450 MHz Memori atau RAM yang disesuaikan dengan sistem operasi yang digunakan. Monitor Super VGS (1024x768) atau yang lebih tinggi. Hardisk minimal 10 GB. Mouse Sistem Operasi Windows 2000 atau yang lebih tinggi. 1.2 Sekilas tentang VB.Net Hampir sebagian besar pengguna komputer di dunia sudah mengenal produk-produk Microsoft, salah satunya adalah Microsoft Visual Basic.Net. VB.Net merupakan pengembangan dari Microsoft Visual Basic versi sebelumnya. Membangun suatu program aplikasi dengan vB.Net lebih mudah dan menyenangkan, karena selain dilengkapi fitur-fitur baru juga tersedia bermacam-bermacam toolbars, komponen, class, object dan sebagainya. Jika Anda sudah terbiasa dengan Visual Basic kemungkinan besar untuk migrasi ke VB.Net tidak akan mengalami kesulitan, karena hampir semua komponen di Visual Basic versi sebelumnya masih bisa digunakan. Sebagai contoh untuk membuat suatu Project dengan VB.Net Anda tinggal klik Menu File, kemudian pilih Project dan akan keluar kotak dialog.

Setelah itu pilih Windows Application, kemudian beri nama Project tersebut.

BAB 2

MERANCANG DATABASE
2.1 Konsep Database Dalam membangun aplikasi menggunakan Visual basic selalu dilengkapi dengan database. Database ini bisa dibuat dengan Microsoft Access, Oracle, Microsoft SQL dan sebagainya. Dalam hal ini tentu disesuaikan dengan kebutuhan dan kemampuan pemrogram. Yang dimaksud dengan mendesain database adalah merancang suatu database yang akan digunakan dalam suatu aplikasi yang akan dibangun. Sedangkan database itu sendiri adalah kumpulan beberapa tabel yang ditampung dalam suatu file yang namanya database. Basisdata (database) adalah kumpulan data yang saling berhubungan satu dengan lainnya yang tersimpan di perangkat keras komputer dan diperlukan suatu perangkat lunak untuk memanipulasi basis data tersebut. Data, merupakan kenyataan yang menggambarkan suatu kejadiankejadian dari kesatuan yang nyata. Data tersimpan secara terintegrasi dan dipakai secara bersama-sama. DBMS adalah sistem perangkat lunak yang digunakan untuk mengendalikan data, termasuk penyimpanan data, pengambilan data, keamanan data dan integritas data. Fungsi utama DBMS adalah untuk menyediakan lingkungan yang nyaman dan efisien untuk digunakan dalam pengambilan dan penyimpanan informasi di basis data. Operasi-operasi dasar yang dapat dilakukan berkenaan dengan basis data meliputi : 1. Pembuatan basis data baru (create database) 2. Penghapusan basis data (drop database) 3. Pembuatan file atau tabel baru ke suatu basis data (create table) 4. Penghapusan file atau tabel dari suatu basis data (drop table) 5. Penambahan atau pengisian data baru ke sebuah file atau tabel di sebuah basis data (insert) 6. Pengambilan data dari sebuah file atau tabel (retieve atau search)

7. Perubahan data dari sebuah file atau tabel (update) 8. Penghapusan data dari sebuah file atau tabel (delete) File adalah tempat penyimpanan informasi. Agar file mutakhir/uptodate maka file harus di mutakhirkan/update. Update terdiri dari : Insert : menambahkan data (record) baru

Delete : Menghapus data (record) Modify : Mengubah data (field)

Terdapat beberapa konsep yang perlu diketahui pada penyimpanan data antara lain : File adalah Sekumpulan record dari tipe tunggal yang berisi elemen-elemen data yang menggambarkan himpunan entitas. Record adalah rangkaian field yang berisi elemen-elemen data yang menggambarkan beberapa entitas. Suatu record mengandung informasi dari suatu isian tunggal dalam suatu tabel. Sebagai contoh, sebuah record dalam suatu tabel Karyawan akan mengandung informasi dari karyawan-karyawan. Field adalah suatu elemen yang memiliki atribut (panjang, tipe data, dll) dan harga dan merupakan unit informasi terkecil yang bisa diakses. Suatu record dibentuk oleh banyak field. Setiap field dalam suatu record mengandung suatu potongan tunggal dari informasi tentang record. Sebagai contoh, suatu record Karyawan memiliki No Induk Karyawan, Nama, Marga dan yang lainnya.

2.2 Key Key adalah elemen record yang dipakai untuk menemukan record pada waktu akses. Untuk secara unik mengenali suatu baris (record), setiap tabel harus memiliki suatu primary key. Dalam konsep database, dikenal beberapa key, antara lain : a. Primary Key

Primary key adalah suatu field, atau kombinasi dari field-field, yang mana nilainya bersifat unik untuk tiap baris atau record dalam tabel. Key merupakan field yang mengidentifikasikan sebuah record dalam file dan bersifat unix.

b. Secondary Key Berbeda dengan primary key, secondary key merupakan field yang mengidentifikasikan sebuah record dalam file yangt idak bersifat unix.

c. Candidate Key Merupakan field-field yang bisa dipilih (dipakai) menjadi primary key.

d. Alternate Key Merupakan Candidate key yang tidak terpilih menjadi Primary key

e. Composite Key Yang dimaksud dengan Composite Key adalah primary key yang dibentuk dari beberapa Field

d. Foreign Key adalah field yang bukan key, tapi key pada file yang lain

2.3 Teknologi Manipulasi Data Sebelum kita bergerak terlalu jauh ada baiknya kita mengenal dulu apa itu ADO, DAO dan RDO pada Visual Basic. Bagi pendatang baru di pemrograman basis data dengan menggunakan Visual Basic, perlu diketahui bahwa khusus pada VB 6.0 terdapat tiga 'interface' untuk pengaksesan data, yaitu ; ADO : ActiveX Data Objects RDO : Remote Data Object DAO : Data Access Objects

Seperti kita ketahui, teknologi data access selalu berkembang dengan cepat. Teknologi terakhir adalah ADO, yang menawarkan kemudahan dan fleksibilitas dibandingkan dengan RDO atau DAO. Selain itu ADO juga mudah untuk dipelajari. Jadi untuk mengembangkan suatu aplikasi basis data baru, gunakan saja teknologi terakhir yang disebut ADO (ActiveX Data Objects).

Alasan menggunakan teknologi ini karena, ADO (ActiveX Data Objects) di disain untuk memudahkan interaksi aplikasi dengan data access sesuai dengan paradigma baru yang dikembangkan oleh Microsoft yaitu OLE DB. OLE DB menyedikan 'high-performance' untuk meng-akses semua jenis data source, termasuk didalamnya non-relational database dan relational (ORACLE-InterBase-BD2), email dan file systems, text dan grafik, dan lainnya.

2.4 Database dan Data Kontrol Database merupakan koleksi dari informasi yang berhubungan dengan subjek atau fungsi tertentu, seperti menangani nilai-nilai ujian mahasiswa atau menangani suatu daftar koleksi musik. Jika database anda tidak tersimpan dalam komputer, maka anda harus menangani informasi tersebut dari berbagai sumber dan mengkoordinir serta mengorganisasinya sendiri. Dengan mengunakan suatu Sistem Manajemen Database (DBMS) anda dapat menempatkan database anda dalam suatu file, dan mengorganisasikannya menjadi tabel-tabel, dan mengkoordinir data tersebut menjadi laporan dengan berbagai fasilitas seperti Form, Query, Report.

2.5 Konsep Database Relational Model relational merupakan standar untuk rancangan database, dimana database disimpan dan ditampilkan sebagai suatu koleksi dari tabel-tabel.

Suatu struktur didefinisikan dengan membuat relasi antar tabel, kaitan data antar tabel ini di dalam database merupakan model dari relationship.

Adapun model database relational menawarkan keuntungan sebagai berikut :

Mengorganisasikan Menyediakan suatu

data

didalam

suatu

koleksi

tabel-tabel

membuat rancangan menjadi mudah dipahami. bahasa yang relatif lengkap untuk

mendefinisikan data, mengambil dan mengupdate. Menyediakan aturan integritas yang mana mendefinisikan suatu keadaan yang konsisten untuk meningkatkan reliabilitas data. Model database relational menampilkan data sebagai suatu koleksi dari tabel-tabel. Suatu tabel adalah pengelompokan secara logika dari informasi yang berhubungan. Tabel-tabel dibentuk oleh baris-baris dan kolom-kolom. Baris-baris sering disebut sebagai record-record dan kolomkolom disebut sebagai field-field.

2.6 Index Untuk mempercepat akses, banyak database menggunakan index. Data tabel yang terindex berurut akan lebih cepat pencariaannya dibandingkan dengan tabel. Setiap isi index menunjuk ke posisi ditabelnya

2.7 Entity Relationship Diagram (ERD) Dalam ERD, hubungan antar table dikenal sebagai cardinality (tingkat hubungan antar entitas/table). Cardinality terdiri dari : (one to one) 1-M (one to many) M-N (many to many)

2.8 Membuat Relasi antar database Sesuai dengan konsep database relational, tentu saja tabel-tabel didalam suatu database memiliki link berdasarkan field tertentu yang bertindak sebagai foreign key dan primary key.

Dari bentuk relational database diatas maka dapat kita lihat bahwa : Tabel Aktifitas berisi data aktifitas peserta dimana seorang Peserta dapat mengikuti lebih dari satu forum Diskusi, dan sebuah forum diskusi dapat diikuti oleh lebih dari satu peserta, dan status Peserta pada masing-masing forum diskusi dapat berbeda-beda.

Nama Field (Foreign key) Email ForumID Status

Foreign Tabel Peserta Forum Status

Foreign Field Email ForumID Status

Untuk membuat Relasi antar tabel dapat menggunakan Bahasa SQL yang diketikan pada jendela SQL Language dan kemudian di Execute. Adapun DDL (Data Definition Language) Relasi antar tabel adalah sebagai berikut : ALTER TABLE table ADD CONSTRAINT name [, ...]])] FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 SQL untuk membuat

dimana : table name ref foreigntable foreignfield Contoh : ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasEmail Nama tabel Nama Constraint yang akan dibuat Nama field yang akan dibuat relasi Nama foreign table Nama foreign field

FOREIGN KEY (Email) REFERENCES Peserta (Email); ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasForumID FOREIGN KEY (ForumId) REFERENCES Forum (ForumId);

ALTER

TABLE

Aktifitas

ADD

CONSTRAINT

AktifitasStatus

FOREIGN KEY (Status) REFERENCES Satus (Status);

Jika dibuka dengan Relationship pada Microsoft Access maka hasil perintah SQL diatas akan membuat relasi antar tabel sebagai berikut :

2.9 Koneksi Database Access pada VB.Net Materi database pada perkuliahan VB Net menggunakan Microsoft Access 2003. Setelah membuat project baru, siapkan database pada folder tempat project baru. Misal : nama project VBNet = supermarket nama database = supermarket.mdb

Pada database supermarket siapkan tabel-tabel yang diperlukan, misal untuk tahap awal, siapkan tabel barang, dengan struktur berikut :

Tahap selanjutnya, isikan beberapa record barang. Kemudian pada project Supermarket aplikasi VB Net, lakukan koneksi ke database supermarket dengan tahapan berikut : Pada Toolbox Data, lakukan dobel klik pada OleDbDataAdapter, Connection kemudian klik Next dan pilih Tombol New

Pilih Provider : Microsoft Jet 4.0 OLE DB Provider, klik tombol Next Kemudian pilih database yang akan digunakan

Setelah proses koneksi selesai, klik tombol Next. Lanjutkan hingga pada perintah Generate SQL statements, ketikkan perintah SQL untuk menampilkan data barang. Urutan Field Pada perintah Select akan berpengaruh pada susunan kolom pada komponen DataGrid. Kemudian pada proses selanjutnya akan muncul hak akses yang diberikan ke kita secara penuh, yaitu Select,Insert, Update dan Delete.

Pada tahap berikutnya pilih dont include password

Setelah proses koneksi selesai, tahap berikutnya adalah membuat dataset, Dataset adalah komponen yang berfungsi sebagai sumber data (data source) untuk komponen-komponen yang ada dalam Form.

Untuk membuat dataset, klik kanan pada komponen OledbDataAdapter1, kemudian pilih generate dataset Setelah proses membuat dataset baru selesai, ganti properties name komponen dataset (misal: dsbarang).

Untuk menampilkan data, pilih komponen datagrid, letakkan dalam from, kemudian atur properties datasourcenya, pilih dsbarang.barang. Setelah dipilih datasource, pada komponen Datagrid akan tampil fieldfield dari tabel barang

Agar pada saat running/dijalankan, pada komponen datagridnya muncul data/record tabel barang, pada komponen form1 event load, ketikkan perintah : OleDBDataAdapter1.fill(dsbarang),

Pada tombol keluar, ketikkan perintah untuk menutup koneksi dan menutup form/program.

BAB 3 MEMBUAT FORM


3.1 Main Menu Agar program aplikasi yang dibangun bisa digunakan dengan baik, harus ada suatu menu sebagai pengontrol proses yang sedang atau akan berlangsung. Tanpa dibangun suatu menu, maka akan sulit bagi pemakai atau user untuk menjalankan suatu aplikasi yang dibangun. Oleh karena itu menu dalam suatu aplikasi sangat penting. Main menu yang ada dalam program dapat digunakan untuk memanggil semua form yang telah dibuat. Untuk membuat menu, dalam VB.Net sangat berbeda dibandingkan dengan bahasa pemrograman lainnya, karena VB.Net sudah menyediakan fasilitas berupa Control Object.

3.2 Membuat Main Menu Dalam diktat VB.Net Lanjutan ini Anda di anggap sudah bisa bagaimana cara membuat form, mendesain form dan menambah obyek-obyek yang akan dijadikan menu maupun sub menu. Tampilan main menu yang akan di buat seperti ditampilkan gambar berikut ini

Listing program dari main menu diatas adalah :

Public Class Menu Inherits System.Windows.Forms.Form Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click Me.Hide() cur = New Barang cur.Show() End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click Me.Hide() cur = New Pelanggan cur.Show() End Sub Private Sub Label10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label10.Click Me.Hide() cur = New Nota1 cur.Show() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If MsgBox("Apakah anda yakin ingin keluar dari Program ini?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then End End If End Sub

Private Sub Label17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label17.Click Me.Hide() cur = New Entry_SJ cur.Show() End Sub

Private Sub Label15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label15.Click Me.Hide() cur = New cetak_Kwitansi cur.Show() End Sub Private Sub Label14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label14.Click Me.Hide() cur = New Retur cur.Show() End Sub Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click Me.Hide() cur = New SP cur.Show() End Sub Private Sub Label12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label12.Click Me.Hide()

cur = New Lap_Barang cur.Show() End Sub Private Sub Label11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label11.Click Me.Hide() cur = New Form1 cur.Show() End Sub Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load End Sub End Class

3.3 Penggunaan Module Setelah selesai membuat main menu, sekarang kita akan mencoba membuat sebuah module. Module ini nantinya akan digunakan pada pengembangan aplikasi program yang akan dibuat, dimana di dalam module ini akan terdapat variabel yang bersifat global atau dapat diakses dari semua form pada program aplikasi dan beberapa procedure yang juga bisa diakses dari semua form. Fungsi pembuatan module ini adalah agar kita tidak perlu selalu membuat koneksi ke database dalam hal ini supermarket.mdb pada setiap form. Modul yang akan di buat adalah sebagai berikut :

Imports System.Data.OleDb Imports System.Data Module MyModule Public strConn As String =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\jeckess.mdb;" Public cur As New Form End Module

3.4 Form Entri Data Barang Sebelum membuat program entri data barang, terlebih dahulu Anda harus membuat sebuah module. Form yang menarik biasanya akan disukai, karena yang berhubungan dengan proses Entri, Edit dan sebagainya erat kaitannya dengan penampilan suatu form. Adapun fungsi dari data entri adalah untuk proses input data, misalnya data barang yang nantinya akan digunakan pada saat transaksi pembelian dan penjualan barang. Bentuk atau desain dari form entry data barang seperti pada gambar berikut :

Listing program Entry Data Barang sebagai berikut :


Imports System.Data.OleDb Imports System.Data Public Class Barang Dim cnn As OleDbConnection Dim cmmd As OleDbCommand Dim dReader As OleDbDataReader Private Sub Barang_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click 'Me.Hide() 'cur = New Menu 'cur.Show() Me.Close() End Sub Private Sub Barang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM barang ORDER BY KD_BRG DESC" cmmd = New OleDbCommand(sql, cnn)

dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_BRG"), 3, 5) Else txtkdBrg.Text = "BR00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdBrg.Text = "BR" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub txtkdBrg_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkdBrg.KeyPress If Asc(e.KeyChar) = 13 Then cmmd = New OleDbCommand("SELECT * FROM barang WHERE KD_BRG='" & _txtkdBrg.Text & "'", cnn) dReader = cmmd.ExecuteReader If dReader.Read Then ''jika data ditemukan btnSimp.Enabled = True btnUbah.Enabled = True btnHps.Enabled = True txtnmBrg.Text = dReader.Item("nm_brg") txtHarsat.Text = dReader.Item("HARSAT") cmbSex.Text = dReader.Item("Jk") cmbColor.Text = dReader.Item("WARNA") cmbSize.Text = dReader.Item("UKURAN") txtnmBrg.Focus() Else txtnmBrg.Focus() txtnmBrg.Text = "" txtHarsat.Text = "" cmbSex.Text = "" cmbColor.Text = "" cmbSize.Text = "" End If End If End Sub

Private Sub btnSimp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimp.Click Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" sql = "INSERT INTO barang(kd_brg, nm_brg, harsat, jk, warna, ukuran) " & _"VALUES('" & txtkdBrg.Text & _"','" & txtnmBrg.Text & "','" & txtHarsat.Text & "','" & cmbSex.Text & _"','" & cmbColor.Text & "','" & cmbSize.Text & "')" cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA BARANG BERHASIL DISIMPAN") sql = "SELECT * FROM barang ORDER BY KD_BRG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_BRG"), 3,5) Else txtkdBrg.Text = "BR00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdBrg.Text = "BR" & Mid("0000", 1, 5 strValue.Length) & strValue txtnmBrg.Text = "" txtHarsat.Text = "" cmbSex.Text = "" cmbColor.Text = "" cmbSize.Text = "" txtnmBrg.Focus() Else MessageBox.Show("GAGAL MENYIMPAN DATA BARANG") End If End Sub Private Sub btnUbah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUbah.Click Dim sql As String

Dim strTemp As String = "" Dim strValue As String = "" sql = "UPDATE barang SET nm_brg='" & txtnmBrg.Text & "'," & _ "harsat='" & txtHarsat.Text & "', " & _"jk='" & cmbSex.Text & "'," & _"warna='" & cmbColor.Text & "'," & _"ukuran='" & cmbSize.Text & "'" & _"WHERE kd_brg='" & txtkdBrg.Text & "'" cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA BARANG BERHASIL DIUPDATE") sql = "SELECT * FROM barang ORDER BY KD_BRG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_BRG"), 3, 5) Else txtkdBrg.Text = "BR00001" Exit Sub End If

strValue = Val(strTemp) + 1 txtkdBrg.Text = "BR" & Mid("0000", 1, 5 strValue.Length) & strValue txtnmBrg.Text = "" txtHarsat.Text = "" cmbSex.Text = "" cmbColor.Text = "" cmbSize.Text = "" txtkdBrg.Enabled = True txtkdBrg.Focus() Else MessageBox.Show("GAGAL UPDATE DATA BARANG") End If End Sub

Private Sub btnHps_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHps.Click

Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" sql = "DELETE FROM barang WHERE KD_BRG='" & txtkdBrg.Text & "' cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA BARANG BERHASIL DIHAPUS") sql = "SELECT * FROM barang ORDER BY KD_BRG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_BRG"), 3, 5) Else txtkdBrg.Text = "BR00001" Exit Sub End If

strValue = Val(strTemp) + 1 txtkdBrg.Text = "BR" & Mid("0000", 1, 5 - strValue.Length) & strValue txtnmBrg.Text = "" txtHarsat.Text = "" cmbSex.Text = "" cmbColor.Text = "" cmbSize.Text = "" txtkdBrg.Enabled = True txtkdBrg.Focus() Else MessageBox.Show("GAGAL HAPUS DATA BARANG") End If End Sub

Private Sub btnBtl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBtl.Click txtnmBrg.Text = "" txtHarsat.Text = "" cmbSex.Text = ""

cmbColor.Text = "" cmbSize.Text = "" 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM barang ORDER BY KD_BRG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_BRG"), 3, 5) Else txtkdBrg.Text = "BR00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdBrg.Text = "BR" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btnCariBrg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariBrg.Click Dim popupbrg As New PopBrg popupbrg.ShowDialog() If popupbrg.retKd_Brg <> "" Then txtkdBrg.Text = popupbrg.retKd_Brg txtnmBrg.Text = popupbrg.retNm_Brg txtHarsat.Text = Format(CDbl(popupbrg.retHarsat), "##,####,####,###") cmbSex.Text = popupbrg.retJK cmbColor.Text = popupbrg.retWarna cmbSize.Text = popupbrg.retUkuran txtkdBrg.Enabled = False txtnmBrg.Focus() End If End Sub End Class

3.5 Form Entri Data Pelanggan Fungsi Data Pelanggan adalah untuk memasukkan data-data pelanggan yang digunakan pada saat penjualan barang. Adapun desain form Entri Data Pelanggan adalah sebagai berikut :

Listing program Entry Data Pelanggan sebagai berikut :

Imports System.Data.OleDb Imports System.Data Public Class Pelanggan Dim cnn As OleDbConnection Dim cmmd As OleDbCommand Dim dReader As OleDbDataReader Private Sub Pelangan_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub

Private Sub Pelanggan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode pelanggan Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM pelanggan ORDER BY KD_PLG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_PLG"), 3, 5) Else txtkdPlg.Text = "PL00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdPlg.Text = "PL" & Mid("0000", 1, 5 strValue.Length) & strValue End If End Sub Private Sub txtkdPlg_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkdPlg.KeyPress If Asc(e.KeyChar) = 13 Then cmmd = New OleDbCommand("SELECT * FROM pelanggan WHERE KD_PLG='" & _txtkdPlg.Text & "'", cnn) dReader = cmmd.ExecuteReader If dReader.Read Then ''jika data ditemukan btnSimp.Enabled = True btnUbah.Enabled = True btnHps.Enabled = True txtnmPlg.Text = dReader.Item("nm_plg")

txtAlmt.Text = dReader.Item("almt") txtKontak.Text = dReader.Item("telp") txtnmPlg.Focus() Else txtnmPlg.Focus() txtnmPlg.Text = "" txtAlmt.Text = "" End If End If End Sub Private Sub btnSimp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimp.Click Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" sql = "INSERT INTO pelanggan(KD_PLG, nm_plg, almt, TELP) " & _ "VALUES('" & txtkdPlg.Text & _ "','" & txtnmPlg.Text & "','" & txtAlmt.Text & "','" & txtKontak.Text & "')" cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA PELANGGAN BERHASIL DISIMPAN") sql = "SELECT * FROM pelanggan ORDER BY KD_PLG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_PLG"), 3, 5) Else txtkdPlg.Text = "PL00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdPlg.Text = "PL" & Mid("0000", 1, 5 strValue.Length) & strValue

txtnmPlg.Text = "" txtAlmt.Text = "" txtKontak.Text = "" txtnmPlg.Focus() Else MessageBox.Show("GAGAL MENYIMPAN DATA PELANGGAN") End If End Sub Private Sub btnUbah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUbah.Click Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" sql = "UPDATE pelanggan SET nm_plg='" & txtnmPlg.Text & "'," & _ "almt='" & txtAlmt.Text & "', " & _ "TELP='" & txtKontak.Text & "' " & _ "WHERE KD_PLG='" & txtkdPlg.Text & "' cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA BERHASIL DIUPDATE") sql = "SELECT * FROM pelanggan ORDER BY KD_PLG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_PLG"), 3, 5) Else txtkdPlg.Text = "PL00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdPlg.Text = "PL" & Mid("0000", 1, 5 strValue.Length) & strValue txtnmPlg.Text = "" txtAlmt.Text = "" txtKontak.Text = ""

txtkdPlg.Enabled = True txtkdPlg.Focus() Else MessageBox.Show("GAGAL UPDATE DATA") End If End Sub Private Sub btnHps_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHps.Click Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" sql = "DELETE FROM pelanggan WHERE KD_PLG='" & txtkdPlg.Text & "'" cmmd = New OleDbCommand(sql, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA BERHASIL DIHAPUS") sql = "SELECT * FROM pelanggan ORDER BY KD_PLG DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_PLG"), 3, 5) Else txtkdPlg.Text = "PL00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdPlg.Text = "PL" & Mid("0000", 1, 5 strValue.Length) & strValue txtnmPlg.Text = "" txtAlmt.Text = "" txtKontak.Text = "" txtkdPlg.Enabled = True txtkdPlg.Focus() Else MessageBox.Show("GAGAL HAPUS DATA") End If End Sub

Private Sub btnBtl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBtl.Click Dim sql As String Dim strTemp As String = "" Dim strValue As String = "" txtnmPlg.Text = "" txtAlmt.Text = "" txtKontak.Text = "" sql = "SELECT * FROM pelanggan ORDER BY KD_PLG DESC" cmmd = New OleDbCommand(Sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("KD_PLG"), 3, 5) Else txtkdPlg.Text = "PL00001" Exit Sub End If strValue = Val(strTemp) + 1 txtkdPlg.Text = "PL" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Close() End Sub Private Sub btnCariPlg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariPlg.Click Dim popupplg As New PopPlg popupplg.ShowDialog() If popupplg.retKdPlg <> "" Then txtkdPlg.Text = popupplg.retKdPlg txtnmPlg.Text = popupplg.retNmPlg txtAlmt.Text = popupplg.retAlmtPlg txtKontak.Text = popupplg.retTlpPlg txtkdPlg.Enabled = False txtnmPlg.Focus()

End If End Sub End Class

3.6 Form Entry Pesanan Form in berfungsi untuk mencatat data pesanan, setiap kali transaksi yang akan dilakukan yang mana form ini berhubungan dengan data barang dan data pelanggan. Adapun cara pembuatannya hampir sama dengan pembuatan form sebelumnya. Layout desain form entry pesanan seperti gambar berikut :

Sedang listing program dari entry pesanan adalah :

Imports System.Data.OleDb Imports System.Data Public Class SP Dim cnn As OleDbConnection Dim cmmd, cmmd1, cmmd2 As OleDbCommand Dim dReader As OleDbDataReader Private index As Integer = 0 Private Total As Double = 0.0 Private Sub SP_Closing(ByVal sender As System.Object, ByVal e As

System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub SP_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated txtNoSP.Enabled = False txtkdPlg.Focus() End Sub Private Sub SP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load ''Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM sp ORDER BY no_sp DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_sp"), 3, 5) Else txtNoSP.Text = "SP00001" Exit Sub End If strValue = Val(strTemp) + 1 txtNoSP.Text = "SP" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btnCariPlg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariPlg.Click Dim popupplg As New PopPlg

popupplg.ShowDialog() If popupplg.retKdPlg <> "" Then txtkdPlg.Text = popupplg.retKdPlg txtnmPlg.Text = popupplg.retNmPlg txtAlmt.Text = popupplg.retAlmtPlg txtKontak.Text = popupplg.retTlpPlg txtkdPlg.Enabled = False cariBrg.Focus() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cariBrg.Click Dim popupbrg As New PopBrg popupbrg.ShowDialog() If popupbrg.retKd_Brg <> "" Then txtkdBrg.Text = popupbrg.retKd_Brg txtnmBrg.Text = popupbrg.retNm_Brg txtHarsat.Text = Format(CDbl(popupbrg.retHarsat), "##,####,####,###") txtSex.Text = popupbrg.retJK txtColor.Text = popupbrg.retWarna txtSize.Text = popupbrg.retUkuran txtkdBrg.Enabled = False txtJml.Focus() End If End Sub Private Sub txtJml_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtJml.KeyPress If Asc(e.KeyChar) = 13 Then SetTotal() btnPesan.Focus() End If End Sub Sub SetTotal() Dim a As Integer a = CInt(txtJml.Text) * CInt(txtHarsat.Text)

End Sub

End Private As

txtTotal.Text = Format(CDbl(CStr(a)), "##,####,####,###") Sub AddList(ByVal Value() As String) Dim subIndex As Integer lvwPlg.Items.Add("") For subIndex = 0 To 4 lvwPlg.Items(index).SubItems.Add("") lvwPlg.Items(index).SubItems(subIndex).Text = Value(subIndex) Next index = index + 1 Sub Sub btnPesan_Click(ByVal sender As System.Object, ByVal e

System.EventArgs) Handles btnPesan.Click Dim Value() As String = {txtkdBrg.Text, txtnmBrg.Text, txtJml.Text, txtHarsat.Text, txtTotal.Text} AddList(Value) Total += CDbl(txtTotal.Text) : LblGrandTotal.Text = Format(CDbl(CStr(Total)), "##,####,####,###") txtkdBrg.Text = "" txtnmBrg.Text = "" txtHarsat.Text = "" txtSex.Text = "" txtColor.Text = "" txtSize.Text = "" txtJml.Text = "" txtTotal.Text = "" cariBrg.Focus() End Sub Private Sub txtBayar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBayar.KeyPress If Asc(e.KeyChar) = 13 Then txtKembali.Text = Format(CDbl(CStr(CInt(txtBayar.Text) -

CInt(LblGrandTotal.Text))), "##,####,####,###") End If End Sub Private Sub cmdSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSimpan.Click Dim counter As Integer Dim sql1, sql2 As String Try sql1 = "INSERT INTO SP(NO_SP, TGL_SP, KD_plg) " & _ "VALUES('" & txtNoSP.Text & "','" & _ DateTimePicker1.Text & "','" & _ txtkdPlg.Text & "')" cmmd1 = New OleDbCommand(sql1, cnn) Dim x As Integer = cmmd1.ExecuteNonQuery For counter = 0 To index - 1 sql2 = "INSERT INTO PESAN(no_sp,kd_brg, jml_psn) " & _ "VALUES('" & _ txtNoSP.Text & "','" & _ lvwPlg.Items(counter).SubItems(0).Text & "','" & _ lvwPlg.Items(counter).SubItems(2).Text & "')" cmmd2 = New OleDbCommand(sql2, cnn) cmmd2.ExecuteNonQuery() Next If x = 1 Then MessageBox.Show("DATA SURAT PESANAN BERHASIL DISIMPAN") End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub cmdBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBatal.Click lvwPlg.Items.Clear()

index = 0 : Total = 0 LblGrandTotal.Text = "" End Sub Private Sub cmdKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdKeluar.Click Me.Close() End Sub End Class

3.7 Form Entry Nota Form entri nota digunakan untuk melakukan transaksi penjualan, seperti penjualan counter di mana secara otomatis akan mengunakan nomor counter sebagai nomor nota, dan untuk setiap kali transaksi dilakukan akan mencetak struk/nota. Desain lengkap form entri nota tersebut ditampilkan pada gambar berikut :

Listing program entri nota sebagai berikut :

Imports System.Data.OleDb Imports System.Data Public Class Nota1 Dim cnn As OleDbConnection Dim cmmd, cmmd1, cmmd2 As OleDbCommand Dim dReader, dReader2 As OleDbDataReader Dim total1, total2 As Integer Private index As Integer = 0 Private Total As Double = 0.0, GTotal As Double = 0.0 Private Sub Nota_Closing(ByVal sender As Object, ByVal e As

System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub Nota1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated txtnoNota.Enabled = False txtnoSP.Focus() End Sub Private Sub Nota_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ''Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM NOTA ORDER BY no_nota DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_nota"), 3, 5) Else txtnoNota.Text = "NA00001" Exit Sub End If strValue = Val(strTemp) + 1 txtnoNota.Text = "NA" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btncrPlg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncrPlg.Click Dim popupSP As New PopSP lvwPlg.Items.Clear()

index = 0 GTotal = 0 popupSP.ShowDialog() If popupSP.retNoSP <> "" Then txtnoSP.Text = popupSP.retNoSP txtTglSP.Text = Format(CDate(popupSP.retTglSP), "dd - MMMM - yyyy") txtKdPlg.Text = popupSP.retKdPlg btnCetak.Focus() End If '''' UNTUK MENAMPILKAN NAMA PELANGGAN Dim sqlx As String sqlx = "select nm_plg,almt,telp from PELANGGAN where kd_plg like '%" & Trim(txtKdPlg.Text) & "%' order by kd_plg asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sqlx, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then txtnmPlg.Text = dReader(0) txtAlmt.Text = dReader(1) txtKontak.Text = dReader(2) End If '''' UNTUK MENAMPILKAN data barang yang ada di PESAN Dim sql2 As String sql2 = "select kd_brg, jml_psn from PESAN where no_sp like '%" & Trim(txtnoSP.Text) & "%' order by no_sp desc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql2, cnn) dReader = cmmd.ExecuteReader While dReader.Read Dim Value() As String = {dReader(0), dReader(1)} AddList(Value) total1 = dReader(1)

'''' UNTUK MENAMPILKAN nama barang dan harga satuan di BARANG Dim sql3 As String sql3 = "select nm_brg,kd_brg, harsat from BARANG where kd_brg like '%" & Trim(dReader(0)) & "%' order by kd_brg asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd2 = New OleDbCommand(sql3, cnn) dReader2 = cmmd2.ExecuteReader If dReader2.Read Then Dim Value2() As String = {dReader2(0), dReader2(2)} total2 = dReader2(2) Total = CInt(total1 * total2) AddList2(Value2) End If GTotal += CDbl(Total) ' MsgBox(GTotal) End While txtJT.Text = Format(CDbl(CStr(GTotal)), "##,####,####,###") End Sub Sub AddList(ByVal Value() As String) Dim subIndex As Integer Dim a As Integer = 0 lvwPlg.Items.Add("") For subIndex = 0 To 1 lvwPlg.Items(index).SubItems.Add("") lvwPlg.Items(index).SubItems(a).Text = Value(subIndex) a = a + 2 Next End Sub Sub AddList2(ByVal Value2() As String) Dim subIndex As Integer Dim a As Integer = 1 lvwPlg.Items.Add("") For subIndex = 0 To 1

lvwPlg.Items(index).SubItems.Add("") lvwPlg.Items(index).SubItems(a).Text = Value2(subIndex) 'lvwPlg.Items(index).SubItems(4).Text = Total a = a + 2 Next index = index + 1 End Sub Private Sub btnSimp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimp.Click Dim sql1 As String Try sql1 = "INSERT INTO NOTA(NO_NOTA, TGL_NOTA, No_SP) " & _ "VALUES('" & txtnoNota.Text & "','" & _ DateTimePicker1.Text & "','" & _ txtnoSP.Text & "')" cmmd1 = New OleDbCommand(sql1, cnn) Dim x As Integer = cmmd1.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA NOTA BERHASIL DISIMPAN") bersih() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM NOTA ORDER BY no_nota DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_nota"), 3, 5) Else txtnoNota.Text = "NA00001" Exit Sub End If

strValue = Val(strTemp) + 1 txtnoNota.Text = "NA" & Mid("0000", 1, 5 strValue.Length) & strValue End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub btnBtl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBtl.Click bersih() End Sub Sub bersih() lvwPlg.Items.Clear() index = 0 : Total = 0 txtnoSP.Text = "" DateTimePicker1.Text = "" txtKdPlg.Text = "" txtnmPlg.Text = "" txtAlmt.Text = "" txtKontak.Text = "" txtTglSP.Text = "" txtJT.Text = "" End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click cetak_Nota.Show() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End Class

3.8 Form Entry Cetak Nota Form ini jika dijalankan akan menghasilkan sebuah output berupa Nota, dimana akan berisi mengenai data-data barang yang dibeli oleh pelanggan. Desain layout dari form cetak nota seperti gambar berikut :

Listing program dari form cetak nota adalah sebagai berikut :

Imports System.Data.OleDb Imports System.Data Public Class cetak_Nota Dim cnn As OleDbConnection Dim cmmd As OleDbCommand Dim dReader As OleDbDataReader Private Sub cetak_Nota_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Nota1 cur.Show()

End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click MessageBox.Show("Maaf, aplikasi ini belum berfungsi", "Pesan", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Close() End Sub Private Sub btnLayar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLayar.Click Layar_Nota.a = txtNoNota.Text Layar_Nota.Show() End Sub Private Sub btnCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCari.Click Dim popupnota As New PopNota popupnota.ShowDialog() If popupnota.retNoNota <> "" Then txtNoNota.Text = popupnota.retNoNota txttglnota.Text = popupnota.retTglNota txtNoSP.Text = popupnota.retNoSP txtNoNota.Enabled = False btnLayar.Focus() End If '''' UNTUK MENAMPILKAN TANGGAL SP Dim sqlx As String sqlx = "select tgl_sp from SP where no_sp like '%" & Trim(txtNoSP.Text) & "% order by no_sp asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sqlx, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then

txtTglSP.Text = Format(CDate(dReader(0)), "ddMMMM-yyyy") End If End Sub Private Sub cetak_Nota_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class Public Class Layar_Nota Public a As String Private Sub Layar_Nota_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox("No Nota = " & a) CrystalReportViewer1.SelectionFormula = "{nota.no_nota}= '" & a & "'" CrystalReportViewer1.RefreshReport() End Sub End Class

3.9 Form Cetak Kwitansi Form ini jika dijalankan akan menghasilkan sebuah cetakan berupa kwitansi yang digunakan sebagai alat bukti pembayaran. Desain dari form Cetak Kwitansi seperti gambar di bawah ini :

Sedangkan listing program dari Cetak Kwitansi adalah :

Imports System.Data.OleDb Imports System.Data Public Class cetak_Kwitansi Public retNoSP, retTglSP, retKdSup As String Dim cnn As OleDbConnection Dim cmmd As OleDbCommand Dim dReader, dreader2, dreader3 As OleDbDataReader Dim total As Double, GTotal As Double Private Sub cetak_Kwitansi_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub cetak_Kwitansi_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated txtnoKwi.Enabled = False txtNoNota.Focus() End Sub Private Sub cetak_Kwitansi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ''Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM KWITANSI ORDER BY no_kwit DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader

If dReader.Read Then strTemp = Mid(dReader.Item("no_kwit"), 3, 5) Else txtnoKwi.Text = "KW00001" Exit Sub End If strValue = Val(strTemp) + 1 txtnoKwi.Text = "KW" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click MessageBox.Show("Maaf, aplikasi ini belum berfungsi", "Pesan", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub btnCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCari.Click Dim popupnota As New PopNota Dim a As String, b As String, c As String, d As String total = 0 GTotal = 0 popupnota.ShowDialog() If popupnota.retNoNota <> "" Then txtNoNota.Text = popupnota.retNoNota txtTglNota.Text = popupnota.retTglNota txtnoKwi.Enabled = False btnSimpan.Focus() End If '''' UNTUK MENAMPILKAN TANGGAL SP Dim sql1 As String, sql2 As String, sql3 As String sql1 = "select no_sp from nota where no_nota like '%" & rim(txtNoNota.Text) & "%' order by no_nota asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql1, cnn) dReader = cmmd.ExecuteReader

If dReader.Read Then a = dReader(0) sql2 = "select kd_brg,jml_psn from PESAN where no_sp like '%" & Trim(a) & "%' order by no_sp desc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql2, cnn) dreader2 = cmmd.ExecuteReader While dreader2.Read b = dreader2(1) c = dreader2(0) sql3 = "select harsat from BARANG where kd_brg like '%" & Trim(c) & "% order by kd_brg desc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql3, cnn) dreader3 = cmmd.ExecuteReader If dreader3.Read Then d = dreader3(0) total = CDbl(b * d) End If GTotal += total txtJmlByr.Text = GTotal End While End If End Sub Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Close() End Sub Private Sub btnLayar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLayar.Click Layar_Kwitansi.b = txtnoKwi.Text Layar_Kwitansi.Show() End Sub Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click

No_NOTA) " & _ "')"

Dim sql1 As String Try sql1 = "INSERT INTO KWITANSI(NO_KWIT, TGL_KWIT, & _ "VALUES('" & txtnoKwi.Text & "','" tglKwi.Text & "','" & _ txtNoNota.Text & cmmd = New OleDbCommand(sql1, cnn) Dim x As Integer = cmmd.ExecuteNonQuery If x = 1 Then MessageBox.Show("DATA KWITANSI BERHASIL

DISIMPAN") btnLayar.Focus() End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Sub bersih() txtnoKwi.Text = "" tglKwi.Text = "" txtNoNota.Text = "" txtTglNota.Text = "" txtJmlByr.Text = "" End Sub End Class Public Class Layar_Kwitansi Public b As String Private Sub Layar_Kwitansi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load CrystalReportViewer1.SelectionFormula = "{kwitansi.no_kwit}= '" & b & "'" CrystalReportViewer1.RefreshReport() End Sub End Class

3.10 Form Entry Surat Jalan Form in berfungsi untuk mencatat data pesanan yang akan dikirim, setiap kali transaksi yang akan dilakukan yang mana form ini berhubungan dengan data barang dan data pelanggan. Desain layout dari form entry surat jalan seperti gambar berikut :

Adapun listing programnya adalah :

Imports System.Data.OleDb Imports System.Data Public Class Entry_SJ Dim cnn As OleDbConnection Dim cmmd, cmmd1, cmmd2 As OleDbCommand Dim dReader, dReader1, dReader2, dReader3, dReader4 As OleDbDataReader

Dim total1, total2 As Integer Private index As Integer = 0 Private Total As Double = 0.0, GTotal As Double = 0.0 Public a As String Private Sub Entry_SJ_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub Entry_SJ_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated txtnoSJ.Enabled = False txtNoNota.Focus() End Sub Private Sub Entry_SJ_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ''Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM SJ ORDER BY no_sj DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_sj"), 3, 5) Else txtnoSJ.Text = "SJ00001" Exit Sub End If strValue = Val(strTemp) + 1 txtnoSJ.Text = "SJ" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub

Private Sub btnCariNota_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariNota.Click Dim popupnota As New PopNota popupnota.ShowDialog() If popupnota.retNoNota <> "" Then txtNoNota.Text = popupnota.retNoNota txtTglNota.Text = popupnota.retTglNota txtNoSP.Text = popupnota.retNoSP txtNoNota.Enabled = False txtkdBrg.Focus() End If '''' UNTUK MENAMPILKAN TANGGAL NOTA Dim sqlx As String sqlx = "select tgl_nota,no_sp from nota where no_nota like '%" & Trim(txtNoNota.Text) & "%' order by no_nota asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sqlx, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then txtTglNota.Text = Format(CDate(dReader(0)), "ddMMMMyyyy") txtNoSP.Text = dReader(1) End If '''' UNTUK MENAMPILKAN TANGGAL SP Dim sql1 As String sql1 = "select tgl_sp,kd_plg from SP where no_sp like '%" & Trim(txtNoSP.Text) & "%' order by no_sp asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql1, cnn) dReader1 = cmmd.ExecuteReader If dReader1.Read Then txtTglSP.Text = Format(CDate(dReader1(0)), "ddMMMMyyyy") End If

'''' UNTUK MENAMPILKAN NAMA PELANGGAN Dim sql2 As String sql2 = "select nm_plg,almt,telp from PELANGGAN where kd_plg like '%" & Trim(dReader1(1)) & "%' order by kd_plg asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql2, cnn) dReader2 = cmmd.ExecuteReader If dReader2.Read Then txtnmPlg.Text = dReader2(0) txtAlmt.Text = dReader2(1) txtTelpPlg.Text = dReader2(2) End If End Sub Private Sub btnCrBrg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrBrg.Click Dim popupbrg As New PopBrg2 bersih_brg() popupbrg.txtNoSP.Text = txtNoSP.Text popupbrg.txtNoSP.Text = dReader(1) popupbrg.ShowDialog() If popupbrg.retKd_Brg <> "" Then txtkdBrg.Text = popupbrg.retKd_Brg txtnmBrg.Text = popupbrg.retNm_Brg txtHarsat.Text = Format(CDbl(popupbrg.retHarsat), "##,####,####,###") txtJmlPsn.Text = popupbrg.retJmlPsn txtkdBrg.Enabled = False txtJmlKrm.Focus() End If End Sub Private Sub txtJmlKrm_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtJmlKrm.KeyPress If Asc(e.KeyChar) = 13 Then txtTotal.Text = Format(CDbl(CStr(CInt(txtHarsat.Text)

CInt(txtJmlKrm.Text))), "##,####,####,###") btnCrBrg.Focus() End If End Sub Private Sub btnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTambah.Click Dim Value() As String = {txtkdBrg.Text, txtnmBrg.Text, txtJmlPsn.Text, txtJmlKrm.Text, txtHarsat.Text, txtTotal.Text} AddList(Value) Total += CDbl(txtTotal.Text) txtGrandTotal.Text = Format(CDbl(CStr(Total)), "##,####,####,###") End Sub Sub AddList(ByVal Value() As String) Dim subIndex As Integer lvwBrg.Items.Add("") For subIndex = 0 To 5 lvwBrg.Items(index).SubItems.Add("") lvwBrg.Items(index).SubItems(subIndex).Text = Value(subIndex) Next index = index + 1 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 sql1 = "INSERT INTO SJ(NO_sj, TGL_sj, no_nota) " & _ "VALUES('" & txtnoSJ.Text & "','" & _ DateTimePicker1.Text & "','" & _ txtNoNota.Text & "')" cmmd1 = New OleDbCommand(sql1, cnn) Dim x As Integer = cmmd1.ExecuteNonQuery `For counter = 0 To index - 1

sql2 = "INSERT INTO ADA(no_sj,kd_brg,jml_kirim) " & _ "VALUES('" & _ txtnoSJ.Text & "','" & _ lvwBrg.Items(counter).SubItems(0).Text & "','" & _ lvwBrg.Items(counter).SubItems(3).Text & "')" cmmd2 = New OleDbCommand(sql2, cnn) cmmd2.ExecuteNonQuery() Next If x = 1 Then MessageBox.Show("DATA SURAT JALAN BERHASIL DISIMPAN") End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Sub bersih_brg() txtkdBrg.Text = "" txtnmBrg.Text = "" txtJmlPsn.Text = "" txtHarsat.Text = "" txtJmlKrm.Text = "" txtTotal.Text = "" End Sub Sub bersih_semua() txtnoSJ.Text = "" DateTimePicker1.Text = "" txtNoNota.Text = "" txtTglNota.Text = "" txtNoSP.Text = "" txtTglSP.Text = "" txtnmPlg.Text = "" txtAlmt.Text = "" txtTelpPlg.Text = "" Call bersih_brg() lvwBrg.Items.Clear()

End Sub Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBatal.Click bersih_semua() End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click cetak_SJ.Show() End Sub End Class

3.11 Form Entry Retur Form ini berfungsi untuk mengisi data-data barang yang dikembalikan oleh pelanggan karena rusak atau tidak sesuai pesanan. Prinsip dasarnya sama dengan proses entry pesanan atau entri nota. Desain form dari Entry retur adalah :

Listing program dari entry retur adalah :

Imports System.Data.OleDb Imports System.Data Public Class Retur Dim cnn As OleDbConnection Dim cmmd, cmmd1, cmmd2 As OleDbCommand Dim dReader, dReader1, dReader2, dReader3, dReader4 As OleDbDataReader Dim total1, total2 As Integer Private index As Integer = 0 Private Total As Double = 0.0, GTotal As Double = 0.0 Public a As String Private Sub Retur_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub Retur_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated txtnoretur.Enabled = False txtNoSj.Focus() End Sub Private Sub Retur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ''Buka koneksi cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM retur ORDER BY no_ret DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then

strTemp = Mid(dReader.Item("no_ret"), 3, 5) Else txtnoretur.Text = "RT00001" Exit Sub End If strValue = Val(strTemp) + 1 txtnoretur.Text = "RT" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btncrSJ_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncrSJ.Click Dim popupsj As New PopSJ Dim a As String popupsj.ShowDialog() If popupsj.retNoNota <> "" Then txtNoSj.Text = popupsj.retNoSj txtNoSj.Enabled = False txtkdBrg.Focus() End If '''' UNTUK MENAMPILKAN no NOTA pada nota Dim sqlx As String sqlx = "select no_nota,no_sp from nota where no_nota like '%" & Trim(popupsj.retNoNota) & "%' order by no_nota asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sqlx, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then a = dReader(1) '''' UNTUK MENAMPILKAN TANGGAL SP Dim sql1 As String, b As String sql1 = "select no_sp,kd_plg from SP where no_sp like '%" & Trim(a) & "%'order by no_sp asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql1, cnn) dReader1 = cmmd.ExecuteReader If dReader1.Read Then

where & "%' order by

b = dReader1(1) '''' UNTUK MENAMPILKAN NAMA PELANGGAN Dim sql2 As String sql2 = "select nm_plg,almt from PELANGGAN kd_plg like '%" & Trim(b) kd_plg asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql2, cnn) dReader2 = cmmd.ExecuteReader If dReader2.Read Then txtnmPlg.Text = dReader2(0) txtAlamat.Text = dReader2(1) End If End If

End If End Sub Private Sub btnCrBrg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrBrg.Click Dim popupbrg As New PopBrg3 bersih_brg() popupbrg.txtNoSJ.Text = txtNoSj.Text popupbrg.ShowDialog() If popupbrg.retKd_Brg <> "" Then txtkdBrg.Text = popupbrg.retKd_Brg txtnmBrg.Text = popupbrg.retNm_Brg txtHarsat.Text = Format(CDbl(popupbrg.retHarsat), "##,####,####,###") txtJmlkrm.Text = popupbrg.retJmlKrm txtkdBrg.Enabled = False txtTotal1.Text = Format(CDbl(CStr(CInt(txtHarsat.Text) * CInt(txtJmlkrm.Text))), "##,####,####,###") txtJmlretur.Focus() End If End Sub Private Sub txtJmlretur_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtJmlretur.KeyPress

If Asc(e.KeyChar) = 13 Then txtTotal2.Text = Format(CDbl(CStr(CInt(txtHarsat.Text) * CInt(txtJmlretur.Text))), "##,####,####,###") txtKet.Focus() End If End Sub Private Sub btnTmbh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTmbh.Click Dim Value() As String = {txtkdBrg.Text, txtnmBrg.Text, txtJmlkrm.Text, txtHarsat.Text, txtJmlretur.Text, txtKet.Text, txtTotal2.Text} AddList(Value) Total += CDbl(txtTotal2.Text) txtGrandtotal.Text = Format(CDbl(CStr(Total)), "##,####,####,###") End Sub Sub AddList(ByVal Value() As String) Dim subIndex As Integer lvwretur.Items.Add("") For subIndex = 0 To 6 lvwretur.Items(index).SubItems.Add("") lvwretur.Items(index).SubItems(subIndex).Text = Value(subIndex) Next index = index + 1 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 sql1 = "INSERT INTO retur(NO_ret, TGL_ret, no_sj) " & _ "VALUES('" & txtnoretur.Text & "','" & _ DateTimePicker1.Text & "','" & _

txtNoSj.Text & "')" cmmd1 = New OleDbCommand(sql1, cnn) Dim x As Integer = cmmd1.ExecuteNonQuery For counter = 0 To index - 1 sql2 = "INSERT INTO KEMBALI(no_ret,kd_brg,jml_ret,ket) " & _ "VALUES('" & _ txtnoretur.Text & "','" & _ lvwretur.Items(counter).SubItems(0).Text & "','" & _ lvwretur.Items(counter).SubItems(4).Text & "','" & _ lvwretur.Items(counter).SubItems(5).Text & "')" cmmd2 = New OleDbCommand(sql2, cnn) cmmd2.ExecuteNonQuery() Next If x = 1 Then MessageBox.Show("DATA RETUR BERHASIL DISIMPAN") bersih_semua() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM retur ORDER BY no_ret DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_ret"), 3, 5) Else txtnoretur.Text = "RT00001" Exit Sub End If strValue = Val(strTemp) + 1 txtnoretur.Text = "RT" & Mid("0000", 1, 5 strValue.Length) & strValue End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub

Sub bersih_brg() txtkdBrg.Text = "" txtnmBrg.Text = "" txtJmlkrm.Text = "" txtHarsat.Text = "" txtTotal1.Text = "" txtJmlretur.Text = "" txtKet.Text = "" txtTotal2.Text = "" End Sub Sub bersih_semua() txtnoretur.Text = "" DateTimePicker1.Text = "" txtNoSj.Text = "" txtnmPlg.Text = "" txtAlamat.Text = "" Call bersih_brg() lvwretur.Items.Clear() End Sub Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBatal.Click bersih_semua() 'Buat AutoNumber u kode Dim strTemp As String = "" Dim strValue As String = "" Dim sql As String sql = "SELECT * FROM retur ORDER BY no_ret DESC" cmmd = New OleDbCommand(sql, cnn) dReader = cmmd.ExecuteReader If dReader.Read Then strTemp = Mid(dReader.Item("no_ret"), 3, 5) Else txtnoretur.Text = "RT00001" Exit Sub End If strValue = Val(strTemp) + 1

txtnoretur.Text = "RT" & Mid("0000", 1, 5 strValue.Length) & strValue End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click cetak_Retur.Show() End Sub End Class

3.12 Form Cetak Retur Form ini akan menampilkan data retur yang telah dientri melalui form entry retur. Desain tampilannya adalah seperti gambar berikut :

Listing program cetak retur adalah :

Public Class cetak_Retur Private Sub cetak_Retur_Closing(ByVal sender As System.Object, ByVal e As

System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Retur cur.Show() End Sub Private Sub btnLayar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLayar.Click Layar_Retur.d = txtNoRetur.Text Layar_Retur.Show() End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click MessageBox.Show("Maaf, aplikasi ini belum berfungsi", "Pesan", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub btnCariRetur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariRetur.Click Dim popupretur As New PopRetur popupretur.ShowDialog() If popupretur.retNoret <> "" Then txtNoRetur.Text = popupretur.retNoret txtTglRetur.Text = popupretur.retTglret txtNoSJ.Text = popupretur.retNosj txtNoRetur.Enabled = False btnLayar.Focus() End If End Sub Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Close() End Sub Private Sub cetak_Retur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub End Class Public Class Layar_Retur Public d As String Private Sub Layar_Retur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox(d) CrystalReportViewer1.SelectionFormula = "{retur.no_ret}= '" & d & "' CrystalReportViewer1.RefreshReport() End Sub End Class

BAB 4 MEMBUAT LAPORAN

Yang tidak boleh dikesampingkan dalam membuat suatu aplikasi adalah pembuatan laporan. Jika suatu program yang dibangun tanpa dilengkapi program untuk membuat suatu laporan masih belum lengkap. Oleh karena itu laporan menjadi penting untuk program aplikasi. Gunanya dari suatu laporan adalah untuk melihat hasil dari suatu proses komputer dalam bentuk review atau dalam bentuk print out ke printer atau media lain. Membuat laporan dengan VB.Net tidak perlu sulit, karena banyak tools yang bisa digunakan, seperti Crystal Report. Untuk membuat laporan dengan Crystal Report langkah yang harus dilakukan adalah sebagai berikut : Klik kanan pada Project kemudian pilih Add " lalu pilih Add Windows Forms setelah itu program akan menampilkan kontak dialog Add New Pada form Add New Item, pilih Crystal Report, lalu tekan tombol Add. Tuliskan nama laporan yang akan dibuat pada kolom Name.

Pada Form Crystal Report Gallery " klik As a Blank Report " klik tombol OK

Setelah desain Crystal Report tampil klik kanan pada Database Fields lalu pilih Database Expert.

Sehingga muncul tampilan seperti dibawah. Karena kita menggunakan database Access, maka kita pilih Create New Connection " Access/Excel (DAO) " klik OK

Muncul window untuk memilih Database yang akan digunakan, setelah itu klik tombol finish.

Kemudian pilih tabel yang akan dibuat reportnya pada Form Database Expert setelah itu klik OK

Untuk menampilkan field-field pada yang akan dicetak, drag field pada sisi Field Explorer ke dalam Layar Design Crystal Report.

Untuk mendesign bentuk cetakan, dapat dilakukan di bagian Report Header, Page Header, Report Footer dan Page Footer Contoh tampilan layout Laporan Data Barang :

Untuk membuat laporan dengan Crystal Report, biasanya diperlukan sebuah form yang menampung tampilan sementara Crystal Report. Maka

kita perlu menambah sebuah form baru. Langkah-langkah yang dilakukan adalah sbb: Klik kanan pada Project di Solution Explorer Klik Add Windows Form

Ubah nama pada kolom Name

Tambahkan objek CrystalReportViewer dari Toolbox kedalam form. Hal ini berguna untuk koneksi form dengan CrystalReport

Kemudian koneksikan form dengan CrystalReport yang telah dibuat : Atur properties dibuat ReportSource --> pilih CrystalReport yang telah

Tampilannya akan menjadi :

4.1 Form Cetak Surat Jalan Form ini berfungsi untuk mencetak surat jalan yang telah dientry. Desain tampilan formnya :

Sedang listing programnya adalah :


Public Class cetak_SJ Private Sub cetak_SJ_Closing(ByVal sender As ystem.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.Hide() cur = New Menu cur.Show() End Sub Private Sub btnLayar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLayar.Click Layar_SJ.c = txtNoSJ.Text Layar_SJ.Show() End Sub Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCetak.Click MessageBox.Show("Maaf, aplikasi ini belum berfungsi", "Pesan", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub

Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Close() End Sub Private Sub btnCariSJ_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCariSJ.Click Dim popupsj As New PopSJ popupsj.ShowDialog() If popupsj.retNoNota <> "" Then txtNoSJ.Text = popupsj.retNoSj txttglsj.Text = popupsj.retTglSj txtNoNota.Text = popupsj.retNoNota txtNoNota.Enabled = False btnLayar.Focus() End If End Sub Private Sub cetak_SJ_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class Public Class Layar_SJ Public c As String Private Sub Layar_SJ_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox(c) CrystalReportViewer1.SelectionFormula = "{sj.no_sj}= '" & c & "' CrystalReportViewer1.RefreshReport() End Sub End Class

Rancangan layar pop barang yang ada di surat jalan

Listing program pop barang yang ada di surat jalan :


Imports System.Data.OleDb Imports System.Data Public Class PopBrg2 Public retKd_Brg, retNm_Brg, retHarsat, retJmlPsn As String Dim cnn As OleDbConnection Dim cmmd As OleDbCommand Dim dReader, dReader2 As OleDbDataReader Private Sub txtKey_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Call list_data() End Sub Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick Call pilih() End Sub

Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click Call pilih() End Sub Sub pilih() Try retKd_Brg = ListView1.SelectedItems(0).SubItems(0).Text.ToString

retNm_Brg = ListView1.SelectedItems(0).SubItems(1).Text.ToString retHarsat = ListView1.SelectedItems(0).SubItems(2).Text.ToString retJmlPsn = ListView1.SelectedItems(0).SubItems(7).Text.ToString Me.Close() Catch ex As Exception MsgBox("pilih salah satu data", MsgBoxStyle.Information) End Try End Sub Private Sub list_data() Call clear_list() Dim sqlx As String, sql As String Dim x As Integer sqlx = "select kd_brg,jml_psn from PESAN where no_sp like '%" & Trim(txtNoSP.Text) & "%' order by no_sp asc" cnn = New OleDbConnection(strConn) If cnn.State <> ConnectionState.Closed Then cnn.Close() cnn.Open() cmmd = New OleDbCommand(sqlx, cnn) dReader = cmmd.ExecuteReader Try While dReader.Read = True sql = "select kd_brg,nm_brg,harsat,JK,warna,ukuran from BARANG where kd_brg like '%" & Trim(dReader(0)) & "%' order by kd_brg asc" cnn = New OleDbConnection(strConn) cnn.Open() cmmd = New OleDbCommand(sql, cnn) dReader2 = cmmd.ExecuteReader Try

While dReader2.Read = True x = Val(counter.Text) counter.Text = Str(Val(counter.Text) + 1) With ListView1 .Items.Add("") .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(ListView1.Items.Count .Items(x).SubItems(0).Text = .Items(x).SubItems(1).Text = .Items(x).SubItems(2).Text = .Items(x).SubItems(3).Text = .Items(x).SubItems(4).Text = .Items(x).SubItems(5).Text = .Items(x).SubItems(7).Text =

- 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") - 1).SubItems.Add("") dReader.GetString(0) dReader2.GetString(1) dReader2.GetValue(2) dReader2.GetString(3) dReader2.GetString(4) dReader2.GetString(5) dReader.GetValue(1) End With End While Finally End Try End While Finally dReader.Close() End Try cnn.Close() End Sub

Sub clear_list() While Val(counter.Text) > 0 ListView1.Items(0).Remove() counter.Text = Val(counter.Text) - 1 End While End Sub

Private Sub PopBrg2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call list_data() End Sub End Class

4.2 Form Cetak Laporan Penjualan Program ini berfungsi untuk menampilkan data dalam bentuk laporan, baik melalui layar komputer (Review) atau mencetaknya ke printer. Laporan ini dirancang agar bisa digunakan untuk mencetak laporan transaksi penjualan secara periodeik. Adapun desain laporan tersebut adalah sebagai berikut :

Listing program dari laporan tersebut adalah :


Imports System.Data.OleDb Public Class Lap_Penjualan Public tgl1 As Date Public tgl2 As Date Private Sub Lap_Penjualan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load CR_penjualan1.SetParameterValue("tglawal", tgl1.Date)

CR_penjualan1.SetParameterValue("tglakhir", tgl2.Date) End Sub Private Sub Lap_Penjualan_Closing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Hide() cur = New Menu cur.Show() End Sub End Class

Hasil cetakan laporan penjualan :

Daftar Pustaka

Junindar, 2008, Panduan Lengkap Menjadi Programmer. Membuat Aplikasi Penjualan Menggunakan VB.NET, Penerbit Mediakita Lubis, Ahmad Subuhan, 2005, Membangun Aplikasi dengan VB.Net, Penerbit Datakom. Santoso, Harip, 2004, VB.Net Untuk programmer, Penerbit PT. Elex Media Komputindo, Jakarta