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 :
create table purchasing_order( no_invoice varchar(50), nama_cust varchar(50), 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 :
Imports Microsoft.VisualBasic
Imports System.Data.Sql
Imports System.Data
Imports System.Data.SqlClient
Public Class ClsKoneksi
Protected tblPengguna = New DataTable
Protected SQL As String
Protected Cn As SqlClient.SqlConnection
Protected Cmd As SqlClient.SqlCommand
Protected Da As SqlClient.SqlDataAdapter
Protected Ds As DataSet
Protected Dt As DataTable
Public Function OpenConn() As Boolean
Cn = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=concept_db;Integrated Security=True")
Cn.Open()
If Cn.State <> ConnectionState.Open Then
Return False
Else
Return True
End If
End Function
Public Sub CloseConn()
If Not IsNothing(Cn) Then
Cn.Close()
Cn = Nothing
End If
End Sub
Public Function ExecuteQuery(ByVal Query As String) As DataTable
If Not OpenConn() Then
MsgBox("Koneksi Gagal..!!", MsgBoxStyle.Critical, "Access Failed")
Return Nothing
Exit Function
End If
Cmd = New SqlClient.SqlCommand(Query, Cn)
Da = New SqlClient.SqlDataAdapter
Da.SelectCommand = Cmd
Ds = New Data.DataSet
Da.Fill(Ds)
Dt = Ds.Tables(0)
Return Dt
Dt = Nothing
Ds = Nothing
Da = Nothing
Cmd = Nothing
CloseConn()
End Function
Public Sub ExecuteNonQuery(ByVal Query As String)
If Not OpenConn() Then
MsgBox("Koneksi Gagal..!!", MsgBoxStyle.Critical, "Access Failed..!!")
Exit Sub
End If
Cmd = New SqlClient.SqlCommand
Cmd.Connection = Cn
Cmd.CommandType = CommandType.Text
Cmd.CommandText = Query
Cmd.ExecuteNonQuery()
Cmd = Nothing
CloseConn()
End Sub
End Class
2.2 Setelah Class Koneksi dibuat, maka sekarang masuk ke inti dari program ini. Yaitu koding untuk Form1-nya :
Coding :
Imports System.Data.SqlClient
Imports System.Data
Public Class Form1
Dim SQL As String
Dim SQL2 As String
Dim Proses As New ClsKoneksi
Dim tblMerk As DataTable
'Dim Da As SqlClient.SqlDataAdapter
Sub Data_Record()
tblMerk = Proses.ExecuteQuery("Select * From purchasing_order")
DataGridView1.DataSource = tblMerk
DataGridView1.Columns(1).Width = 130
End Sub
'Kode otomatis untuk buat invoice
Sub Kode_Otomatis()
Dim date1 As String
date1 = Format(Now, "yy")
Dim date2 As String
date2 = Format(Now, "MM")
tblMerk = Proses.ExecuteQuery("Select * From purchasing_order order by no_invoice desc")
If tblMerk.Rows.Count = 0 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/00001"
Else
With tblMerk.Rows(0)
TextBox1.Text = .Item("no_invoice")
End With
TextBox1.Text = Val(Microsoft.VisualBasic.Mid(TextBox1.Text, 15, 5)) + 1
If Len(TextBox1.Text) = 1 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/0000" & TextBox1.Text & ""
ElseIf Len(TextBox1.Text) = 2 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/000" & TextBox1.Text & ""
ElseIf Len(TextBox1.Text) = 3 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/00" & TextBox1.Text & ""
ElseIf Len(TextBox1.Text) = 4 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/0" & TextBox1.Text & ""
ElseIf Len(TextBox1.Text) = 5 Then
TextBox1.Text = "INV/CMI/" & date2 & "/" & date1 & "/" & TextBox1.Text & ""
End If
End If
End Sub
Sub bersih()
Call Data_Record()
Call Kode_Otomatis()
BtnTambah.Enabled = True
TextBox1.Enabled = False
TextBox2.Text = ""
TextBox3.Text = ""
TextBox1.Focus()
End Sub
Private Sub DGJenisBrg_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick
TextBox1.Text = DataGridView1.SelectedCells(0).Value
TextBox2.Text = DataGridView1.SelectedCells(1).Value
TextBox3.Text = DataGridView1.SelectedCells(2).Value
BtnTambah.Enabled = False
End Sub
Private Sub BtnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTambah.Click
Try
If (Me.TextBox1.Text = "") Then
MsgBox("Data Wajib Diisi Lengkap!", MsgBoxStyle.Information, "Perhatian")
Me.TextBox2.Focus()
Exit Sub
Else
SQL = "Insert Into purchasing_order Values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')"
Proses.ExecuteNonQuery(SQL)
MessageBox.Show("Proses Data Berhasil!", "Sukses saved", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call bersih()
End If
Catch ex As SqlException
MsgBox(ex.Message, MsgBoxStyle.Information, "Perhatian")
End Try
End Sub
Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click
Call bersih()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Me.WindowState = FormWindowState.Maximized
Call bersih()
DataGridView1.Columns(0).HeaderText = "No. Invoice"
DataGridView1.Columns(1).HeaderText = "Nama Customer"
DataGridView1.Columns(2).HeaderText = "Alamat Customer"
Me.DataGridView1.DefaultCellStyle.ForeColor = Color.Coral
' Change back color of each row
Me.DataGridView1.RowsDefaultCellStyle.BackColor = Color.AliceBlue
' Change GridLine Color
Me.DataGridView1.GridColor = Color.Blue
' Change Grid Border Style
Me.DataGridView1.BorderStyle = BorderStyle.Fixed3D
DataGridView1.EnableHeadersVisualStyles = False
DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.LightGray
End Sub
End Class
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
Teman-teman dapat memodifikasi sesuai dengan kebutuhan masing-masing. Kalo ada yang kurang dimengerti dari koding diatas mohon kasih tau gw lewat comment di postingan ini. Semoga bermanfaat yah……
Happy Coding ^_*

















[...] LIHAT POSTING TERBARU [...]
Cara Membuat Autonumber di Visual Basic.Net Menggunakan SQL 2005 « Herosetya Nofario
June 18, 2011 at 8:10 am