Membuat Autonumber Menggunakan Kombinasi Bulan & Tahun di VB.Net
Pada postingan terdahulu gw sudah pernah buat sharing ide cara membuat penomoran otomatis.
Baca sebelumnya. Nah kali ini gw mau sedikit improve cara membuat autonumber dengan kombinasi bulan (MM) dan tahun (yy). Seringkali klien banyak request untuk dibuatkan penomoran otomatis yang mengambil kombinasi bulan & tahun. Sebenarnya nga banyak berubah koding yang dipergunakan seperti pada postingan gw terdahulu. Hanya beberapa modifikasi sedikit. O iya sekedar informasi, banyak juga teman-teman yang request ke e-mail gw mengenai aplikasi yang ini. Sehingga membuat gw terpacu untuk memodifikasi penggunaan autonumber yang telah ada. ^-^
Ok seperti biasa aplikasi yang dibuat ini merujuk kepada penggunaan bahasa program Visual Basic (VB.Net 2008) dan SQL Server 2005
*FORMAT NO. INVOICE YANG GW BUAT : INV/CMI/06/11/00001
*keterangan :
INV : adalah kode untuk Invoice
CMI : adalah nama perusahaan
06 : adalah bulan (MM)
11 : adalah tahun (yy)
00001 : adalah autonumber – yang akan bertambah setiap transaksi masuk
Adapun langkah-langkah kerja dalam pembuatan autonumber ini adalah :
1. Persiapkan database-nya. Disini gw membuat database dengan nama “concept_db”
Berikut query untuk pembuatannya :
1 | create table purchasing_order( |
4 | alamat_cust varchar(50)); |
2. Setelah selesai dengan database langkah selanjutnya adalah koding untuk form yang telah dibuat :
Sebelumnya gw akan kasih liat tampilan program-nya :
Tampilan setelah ada data masuk :
2.1 Pertama-tama buat dulu Class untuk koneksi ke database. Dalam program gw, nama class-nya adalah :
ClsKoneksi
Coding :
01 | Imports Microsoft.VisualBasic |
02 | Imports System.Data.Sql |
04 | Imports System.Data.SqlClient |
05 | Public Class ClsKoneksi |
06 | Protected tblPengguna = New DataTable |
07 | Protected SQL As String |
08 | Protected Cn As SqlClient.SqlConnection |
09 | Protected Cmd As SqlClient.SqlCommand |
10 | Protected Da As SqlClient.SqlDataAdapter |
11 | Protected Ds As DataSet |
12 | Protected Dt As DataTable |
13 | Public Function OpenConn() As Boolean |
14 | Cn = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=concept_db;Integrated Security=True") |
16 | If Cn.State <> ConnectionState.Open Then |
22 | Public Sub CloseConn() |
23 | If Not IsNothing(Cn) Then |
28 | Public Function ExecuteQuery(ByVal Query As String) As DataTable |
29 | If Not OpenConn() Then |
30 | MsgBox("Koneksi Gagal..!!", MsgBoxStyle.Critical, "Access Failed") |
35 | Cmd = New SqlClient.SqlCommand(Query, Cn) |
36 | Da = New SqlClient.SqlDataAdapter |
37 | Da.SelectCommand = Cmd |
54 | Public Sub ExecuteNonQuery(ByVal Query As String) |
55 | If Not OpenConn() Then |
56 | MsgBox("Koneksi Gagal..!!", MsgBoxStyle.Critical, "Access Failed..!!") |
60 | Cmd = New SqlClient.SqlCommand |
62 | Cmd.CommandType = CommandType.Text |
63 | Cmd.CommandText = Query |
2.2 Setelah Class Koneksi dibuat, maka sekarang masuk ke inti dari program ini. Yaitu koding untuk Form1-nya :
Coding :
001 | Imports System.Data.SqlClient |
006 | Dim Proses As New ClsKoneksi |
007 | Dim tblMerk As DataTable |
008 | 'Dim Da As SqlClient.SqlDataAdapter |
010 | tblMerk = Proses.ExecuteQuery("Select * From purchasing_order") |
011 | DataGridView1.DataSource = tblMerk |
012 | DataGridView1.Columns(1).Width = 130 |
014 | 'Kode otomatis untuk buat invoice |
017 | date1 = Format(Now, "yy") |
019 | date2 = Format(Now, "MM") |
020 | tblMerk = Proses.ExecuteQuery("Select * From purchasing_order order by no_invoice desc") |
021 | If tblMerk.Rows.Count = 0 Then |
023 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/00001" |
026 | TextBox1.Text = .Item("no_invoice") |
028 | TextBox1.Text = Val(Microsoft.VisualBasic.Mid(TextBox1.Text, 15, 5)) + 1 |
029 | If Len(TextBox1.Text) = 1 Then |
030 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/0000" & TextBox1.Text & "" |
031 | ElseIf Len(TextBox1.Text) = 2 Then |
032 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/000" & TextBox1.Text & "" |
033 | ElseIf Len(TextBox1.Text) = 3 Then |
034 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/00" & TextBox1.Text & "" |
035 | ElseIf Len(TextBox1.Text) = 4 Then |
036 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/0" & TextBox1.Text & "" |
037 | ElseIf Len(TextBox1.Text) = 5 Then |
038 | TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/" & TextBox1.Text & "" |
047 | BtnTambah.Enabled = True |
048 | TextBox1.Enabled = False |
054 | Private Sub DGJenisBrg_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick |
055 | TextBox1.Text = DataGridView1.SelectedCells(0).Value |
056 | TextBox2.Text = DataGridView1.SelectedCells(1).Value |
057 | TextBox3.Text = DataGridView1.SelectedCells(2).Value |
058 | BtnTambah.Enabled = False |
060 | Private Sub BtnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTambah.Click |
063 | If (Me.TextBox1.Text = "") Then |
064 | MsgBox("Data Wajib Diisi Lengkap!", MsgBoxStyle.Information, "Perhatian") |
068 | SQL = "Insert Into purchasing_order Values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')" |
069 | Proses.ExecuteNonQuery(SQL) |
070 | MessageBox.Show("Proses Data Berhasil!", "Sukses saved", MessageBoxButtons.OK, MessageBoxIcon.Information) |
073 | Catch ex As SqlException |
074 | MsgBox(ex.Message, MsgBoxStyle.Information, "Perhatian") |
079 | Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click |
083 | Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load |
084 | 'Me.WindowState = FormWindowState.Maximized |
086 | DataGridView1.Columns(0).HeaderText = "No. Invoice" |
087 | DataGridView1.Columns(1).HeaderText = "Nama Customer" |
088 | DataGridView1.Columns(2).HeaderText = "Alamat Customer" |
090 | Me.DataGridView1.DefaultCellStyle.ForeColor = Color.Coral |
091 | ' Change back color of each row |
092 | Me.DataGridView1.RowsDefaultCellStyle.BackColor = Color.AliceBlue |
093 | ' Change GridLine Color |
094 | Me.DataGridView1.GridColor = Color.Blue |
095 | ' Change Grid Border Style |
096 | Me.DataGridView1.BorderStyle = BorderStyle.Fixed3D |
097 | DataGridView1.EnableHeadersVisualStyles = False |
098 | DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.LightGray |
Keterangan properties untuk Form1
Textbox1.Text = Untuk input no.invoice
Textbox2.Text = Untuk input nama customer
Textbox3.Text = Untuk input alamat customer
BtnTambah = Eksekusi data
DatagridView1 = Binding data
BtnBatal = Membersihkan textbox dan refresh data