Membuat Autonumber Menggunakan Kombinasi Bulan & Tahun di VB.Net

Program VB.NetPada 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 :

Program Autonumber

Tampilan setelah ada data masuk :
Program autonumber

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 ^_*

Tagged , , , , , ,

One thought on “Membuat Autonumber Menggunakan Kombinasi Bulan & Tahun di VB.Net

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: