UUSRUSMAWAN.C
4. Klik OK
1
M
UUSRUSMAWAN.C
6.2 Membuat Tabel
Setelah membuat database, lanjutkan dengan membuat beberapa buah tabel yang diperlukan
antara lain :
1. Tabel User
2. Tabel Barang
3. Tabel Customer
4. Tabel Kurir
5. Tabel Pesanan
6. Tabel DetailPesanan
7. Tabel Kiriman
8. Tabel DetailKiriman
2
M
UUSRUSMAWAN.C
3
M
UUSRUSMAWAN.C
Bentuk relasi tabel dapat anda lihat seperti gambar di bawah ini. Gambar ini diambil dari hasil
relasi menggunakan crystal report. Konsep relasi pada tabel ini adalah One To Many level 3NF.
4
M
UUSRUSMAWAN.C
6.3.1 Memberi Nama Project
3. Klik add
Imports System.Data.SqlClient
Module Module1
Public CONN As SqlConnection
Public DA As SqlDataAdapter
Public DS As New DataSet
Public CMD As SqlCommand
Public DR As SqlDataReader
Public STR As String
Sub Koneksi()
STR = "data source=user-pc\sqlexpress;initial
catalog=DBPemesanan;integrated security =true"
CONN = New SqlConnection(STR)
If CONN.State = ConnectionState.Closed Then
CONN.Open()
End If
End Sub
End Module
5
M
UUSRUSMAWAN.C
6.4 Form login
Logika program dalam form login dalam buku semuanya hampir sama. Silakan lihat kembali logika
program login pada aplikasi pembayaran SPP.
Coding :
Imports System.Data.SqlClient
Mencari nama dan password user, jika datanya ditemukan maka tampil
menuutama dan masing-masing panel diisi dengan data user yang login
Call Koneksi()
CMD = New SqlCommand("select * from tbluser where nama_user='"
& TextBox1.Text & "' and pwd_user='" & TextBox2.Text & "'", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
MsgBox("Login gagal, Password Case Sensitive")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
Else
Me.Visible = False
MenuUtama.Show()
6
M
UUSRUSMAWAN.C
MenuUtama.Panel1.Text = DR.Item("kode_user")
MenuUtama.Panel2.Text = DR.Item("nama_user")
MenuUtama.Panel3.Text = DR.Item("statuS_user")
End Class
7
M
UUSRUSMAWAN.C
6.6 Form User
Pada bab ini dibuatkan model pengolahan data master yang berbeda dengan bab sebelumnya,
yaitu proses input, edit dan delete harus diawali dengan melakukan klik pada button TAMBAH.
Konsekuensinya pembuatan program menjadi lebih banyak karena harus mengendalikan button-
button.
Coding :
Imports System.Data.SqlClient
Sub Kosongkan()
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
ComboBox1.Text = ""
TextBox5.Clear()
End Sub
Sub DataBaru()
TextBox2.Clear()
TextBox3.Clear()
ComboBox1.Text = ""
TextBox5.Clear()
TextBox2.Focus()
End Sub
8
M
UUSRUSMAWAN.C
Sub Ketemu()
On Error Resume Next
TextBox2.Text = DR.Item("nama_User")
TextBox3.Text = DR.Item("Pwd_user")
ComboBox1.Text = DR.Item("Status_User")
TextBox2.Focus()
End Sub
Sub KondisiAwal()
BTNTambah.Enabled = True
BTNTutup.Enabled = True
BTNSimpan.Enabled = False
BTNEdit.Enabled = False
BTNHapus.Enabled = False
BTNBatal.Enabled = False
BTNTambah.Focus()
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
ComboBox1.Enabled = False
End Sub
Sub KondisiSimpan()
BTNTambah.Enabled = False
BTNSimpan.Enabled = True
BTNEdit.Enabled = False
BTNHapus.Enabled = False
BTNBatal.Enabled = True
BTNTutup.Enabled = False
TextBox2.Enabled = True
TextBox3.Enabled = True
ComboBox1.Enabled = True
TextBox2.Focus()
End Sub
Sub KondisiEdiHapus()
BTNTambah.Enabled = False
BTNSimpan.Enabled = False
BTNEdit.Enabled = True
BTNHapus.Enabled = True
BTNBatal.Enabled = True
BTNTutup.Enabled = False
TextBox1.Enabled = False
TextBox2.Enabled = True
TextBox3.Enabled = True
ComboBox1.Enabled = True
TextBox2.Focus()
End Sub
Sub TampilGrid()
Call Koneksi()
DA = New SqlDataAdapter("select * from tblUser", CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.ReadOnly = True
End Sub
9
M
UUSRUSMAWAN.C
Private Sub MasterUser_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Call Koneksi()
Call Kosongkan()
Call TampilGrid()
Call KondisiAwal()
BTNTambah.Focus()
End Sub
Call Koneksi()
CMD = New SqlCommand("select * from tblUser where
kode_User='" & TextBox1.Text & "'", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
Call DataBaru()
Call KondisiSimpan()
Else
Call Ketemu()
Call KondisiEdiHapus()
End If
End If
End Sub
10
M
UUSRUSMAWAN.C
Private Sub BTNTambah_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BTNTambah.Click
BTNTambah.Enabled = False
BTNBatal.Enabled = True
TextBox1.Enabled = True
TextBox1.Focus()
End Sub
11
M
UUSRUSMAWAN.C
Else
Call Kosongkan()
Call KondisiAwal()
End If
End Sub
12
M
UUSRUSMAWAN.C
6.7 Form Barang
13
M
UUSRUSMAWAN.C
6.9 Form Kurir
1. Customer memesan barang (cara pembayaran boleh cash atau dengan uang muka)
2. Jumlah barang yang tidak tersedia akan diberi catatan Barang Kurang sekian
3. Setelah proses entri pesanan, langsung cetak faktur pesanan agar petugas mencari
(menyiapkan barang) yang dipesan di gudang
4. Setelah semua barang pesanan disiapkan, lanjutkan ke proses pengiriman oleh kurir
5. Pemesanan yang dilakukan dengan DP, akan diminta pelunasan oleh kurir saat barang
dikirimkan (catatannya tercantum dalam faktur pengiriman barang)
6. Setelah kurir mengirimkan barang ke customer, kurir kembali lagi ke toko (gudang) untuk
validasi pengiriman sekaligus update status pemesanan menjadi SUDAH DITERIMA
CUSTOMER
7. Proses update inipun terjadi pada kolom status pembayaran dan sisa
14
M
UUSRUSMAWAN.C
Coding :
Imports System.Data.SqlClient
Sub Nomorotomatis()
Call Koneksi()
CMD = New SqlCommand("select * from tblPesanan where
No_Pesanan in(select max(No_Pesanan) from tblPesanan)", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
LBLNomor.Text = "PS" + Format(Now, "yyMMdd") + "01"
Else
If Microsoft.VisualBasic.Mid(DR.Item("No_Pesanan"), 3, 6)
= Format(Now, "yyMMdd") Then
LBLNomor.Text =
Microsoft.VisualBasic.Right(DR.Item("No_Pesanan"), 8) + 1
LBLNomor.Text = "PS" + LBLNomor.Text
Else
LBLNomor.Text = "PS" + Format(Now, "yyMMdd") + "01"
End If
End If
End Sub
Sub TampilCustomer()
Call Koneksi()
CMD = New SqlCommand("select * from tblcustomer", CONN)
DR = CMD.ExecuteReader
Do While DR.Read
ComboBox1.Items.Add(DR.Item("kode_customer") & Space(2) &
DR.Item("nama_customer"))
Loop
15
M
UUSRUSMAWAN.C
End Sub
Sub HitungBarang()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(5).Value
LBLTotalBarang.Text = FormatNumber(hitung, 0)
Next
End Sub
Sub HitungHarga()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 1
hitung = hitung + DGV.Rows(baris).Cells(6).Value
LBLTotalHarga.Text = FormatNumber(hitung, 0)
Next
End Sub
3. Ketik kode barang di kolom kode misal B01, jika datanya ada maka akan tampil nama barang,
harga dan stok
4. Jika data tidak ada maka akan tampil daftar nama barang berikut kodenya, silakan pilih
datanya lalu tekan enter
5. Ketik jumlah pesanan dari customer, jika stok cukup maka pesanan terpenuhi, jika stok kurang
maka akan muncul keterangan jumlah kekurangannya
6. Mengisi uang muka (DP) sifanya opsional, apakah lebih kecil dari jumlah total harga, lebih
besar ataupun sama dengan jumlah total harga akan mempengaruhi proses program
selanjutnya
7. Ketika di klik button simpan maka akan muncul pertanyaan untuk pencetakan faktur
pemesanan barang.
Coding :
16
M
UUSRUSMAWAN.C
Private Sub DGV_CellEndEdit(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DGV.CellEndEdit
If e.ColumnIndex = 0 Then
Call Koneksi()
CMD = New SqlCommand("select * from tblbarang where
kode_barang='" & DGV.Rows(e.RowIndex).Cells(0).Value & "'", CONN)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
DGV.Rows(e.RowIndex).Cells(1).Value =
DR.Item("Nama_barang")
DGV.Rows(e.RowIndex).Cells(2).Value =
DR.Item("harga_Barang")
DGV.Columns(2).DefaultCellStyle.Format = "###,###,###"
DGV.Rows(e.RowIndex).Cells(3).Value = DR.Item("stok")
DGV.CurrentCell = DGV(4, DGV.CurrentCell.RowIndex)
SendKeys.Send("{UP}")
Else
Try
MsgBox("Kode barang tidak terdaftar")
DGV.Rows(e.RowIndex).Cells(0).Value = ""
DaftarBarang.Show()
DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex)
SendKeys.Send("{down}")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End If
Try
If e.ColumnIndex = 4 Then
If DGV.Rows(e.RowIndex).Cells(4).Value >
DGV.Rows(e.RowIndex).Cells(3).Value Then
DGV.Rows(e.RowIndex).Cells(5).Value =
DGV.Rows(e.RowIndex).Cells(3).Value
DGV.Rows(e.RowIndex).Cells(6).Value =
DGV.Rows(e.RowIndex).Cells(2).Value *
DGV.Rows(e.RowIndex).Cells(4).Value
DGV.Rows(e.RowIndex).Cells(7).Value = "Barang
Kurang " & DGV.Rows(e.RowIndex).Cells(4).Value -
DGV.Rows(e.RowIndex).Cells(3).Value & ""
ElseIf DGV.Rows(e.RowIndex).Cells(4).Value <=
DGV.Rows(e.RowIndex).Cells(3).Value Then
DGV.Rows(e.RowIndex).Cells(5).Value =
DGV.Rows(e.RowIndex).Cells(4).Value
DGV.Rows(e.RowIndex).Cells(6).Value =
DGV.Rows(e.RowIndex).Cells(2).Value *
DGV.Rows(e.RowIndex).Cells(4).Value
DGV.Rows(e.RowIndex).Cells(7).Value = "OK"
End If
DGV.Columns(6).DefaultCellStyle.Format = "###,###,###"
DGV.CurrentCell = DGV(0, DGV.CurrentCell.RowIndex)
Call HitungBarang()
Call HitungHarga()
End If
Catch ex As Exception
MsgBox("harus angka")
DGV.Rows(e.RowIndex).Cells(4).Value = 0
SendKeys.Send("{up}")
End Try
17
M
UUSRUSMAWAN.C
End Sub
DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex)
Call HitungBarang()
Call HitungHarga()
End If
TXTUangMuka.Text = FormatNumber(TXTUangMuka.Text, 0)
If TXTUangMuka.Text < LBLTotalHarga.Text Then
LBLSisa.Text = FormatNumber((LBLTotalHarga.Text) -
(TXTUangMuka.Text), 0)
LBLStatusPembayaran.Text = "BELUM LUNAS"
Button1.Focus()
End If
If Val(Microsoft.VisualBasic.Str(TXTUangMuka.Text)) >
Val(Microsoft.VisualBasic.Str(LBLTotalHarga.Text)) Then
LBLSisa.Text = 0
LBLStatusPembayaran.Text = "LUNAS"
Button1.Focus()
End If
LBLStatusPesanan.Text = "BELUM DIKIRIM"
End If
End Sub
Sub Bersihkan()
ComboBox1.Text = ""
LBLTotalBarang.Text = ""
LBLTotalHarga.Text = ""
TXTUangMuka.Text = ""
LBLSisa.Text = ""
18
M
UUSRUSMAWAN.C
LBLStatusPembayaran.Text = ""
LBLStatusPesanan.Text = ""
DGV.Rows.Clear()
End Sub
4. Pilih kurir
5. Klik simpan
Transaksi pengiriman barang diambil dari nomor pemesanan customer sebelumnya. Jika proses ini
sudah dilakukan maka nomor pemesanan tersebut akan hilang dari combo.
19
M
UUSRUSMAWAN.C
Coding :
Imports System.Data.SqlClient
Sub Nomorotomatis()
Call Koneksi()
CMD = New SqlCommand("select * from tblkiriman where
No_Kiriman in(select max(No_Kiriman) from tblkiriman)", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
LBLNomor.Text = "KR" + Format(Now, "yyMMdd") + "01"
Else
If Microsoft.VisualBasic.Mid(DR.Item("No_Kiriman"), 3, 6)
= Format(Now, "yyMMdd") Then
LBLNomor.Text =
Microsoft.VisualBasic.Right(DR.Item("No_Kiriman"), 8) + 1
LBLNomor.Text = "KR" + LBLNomor.Text
Else
LBLNomor.Text = "KR" + Format(Now, "yyMMdd") + "01"
End If
End If
End Sub
Sub TampilNomorPesanan()
Call Koneksi()
20
M
UUSRUSMAWAN.C
CMD = New SqlCommand("select * from tblpesanan where
status_pesanan='BELUM DIKIRIM'", CONN)
DR = CMD.ExecuteReader
ComboBox1.Items.Clear()
Do While DR.Read
ComboBox1.Items.Add(DR.Item("NO_PESANAN"))
Loop
End Sub
Sub TampilKurir()
Call Koneksi()
CMD = New SqlCommand("select * from tblkurir", CONN)
DR = CMD.ExecuteReader
ComboBox2.Items.Clear()
Do While DR.Read
ComboBox2.Items.Add(DR.Item("kode_kurir"))
Loop
End Sub
LBLTotalBarang.Text = DR.Item("total_barang")
LBLTotalHarga.Text = FormatNumber(DR.Item("total_harga"),
0)
TXTUangMuka.Text = FormatNumber(DR.Item("uang_muka"), 0)
LBLSisa.Text = FormatNumber(DR.Item("sisa"), 0)
LBLStatusPembayaran.Text = DR.Item("status_pembayaran")
21
M
UUSRUSMAWAN.C
Call Koneksi()
DGV.Columns.Clear()
DA = New SqlDataAdapter("select
tbldetailpesanan.kode_barang as
Kode,tblbarang.Nama_Barang,tbldetailpesanan.Harga_Satuan,Jumlah,SubTot
al from tbldetailpesanan,tblbarang where
tbldetailpesanan.kode_barang=tblbarang.kode_barang and
tbldetailpesanan.no_pesanan='" & ComboBox1.Text & "'", CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.Columns(1).Width = 200
DGV.ReadOnly = True
DGV.Columns(2).DefaultCellStyle.Format = "###,###,###"
DGV.Columns(2).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
DGV.Columns(4).DefaultCellStyle.Format = "###,###,###"
DGV.Columns(4).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
Else
MsgBox("Nomor pesanan tidak valid")
End If
End Sub
Sub Bersihkan()
ComboBox1.Text = ""
ComboBox2.Text = ""
LblTanggalPesanan.Text = ""
LBLNamaKurir.Text = ""
DataCustomer.Clear()
LBLTotalBarang.Text = ""
LBLTotalHarga.Text = ""
TXTUangMuka.Text = ""
LBLSisa.Text = ""
LBLStatusPembayaran.Text = ""
DGV.Columns.Clear()
End Sub
22
M
UUSRUSMAWAN.C
End Sub
End Class
23
M
UUSRUSMAWAN.C
Coding :
Coding :
24
M
UUSRUSMAWAN.C
End Sub
Coding :
25
M
UUSRUSMAWAN.C
Coding :
End Sub
26
M
UUSRUSMAWAN.C
6.14.3 Laporan Bulanan
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
CRV.ReportSource = Nothing
CRV.RefreshReport()
CRV.SelectionFormula = "month({tblpesanan.tgl_pesanan})=(" &
Month(DateTimePicker4.Text) & ") and year({tblpesanan.tgl_pesanan})
=(" & Year(DateTimePicker4.Text) & ") "
CRV.ReportSource = "master pesanan.rpt"
End Sub
27
M
UUSRUSMAWAN.C
6.15.1 Laporan Harian
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
CRV.ReportSource = Nothing
CRV.RefreshReport()
CRV.SelectionFormula = "totext({tblkiriman.tgl_kiriman})='" &
DateTimePicker1.Text & "'"
CRV.ReportSource = "master kiriman.rpt"
End Sub
28
M
UUSRUSMAWAN.C
29