Jumat, 24 Agustus 2012

Basic Generate Auto Number (Increment)

Basic Generate Auto Number (Increment)

Posting saya kali ini tentang cara generate auto number (auto increment), ini adalah contoh paling sederhana (basic) dari auto increment. Contohnya: 01,02,03 dan seterusnya. Nah kita juga bisa membuat jumlah digit-nya menjadi dinamis, contoh: 3digit (001,002,..), 4digit (0001,0002,..) dan seterusnya. selanjutnya kita juga harus memperhitungkan batas maxsimal dari increment itu sendiri, contoh: 2digit (max 99), 3digit (max 999) dan seterusnya, hal ini perlu
untuk mencegah terjadinya error saat penyimpanan data ke table jika lenght number sudah melebihi field lenght-nya. seperti biasa saya sudah buatkan codingnya, silahkan disimak baik baik ya..
Ini Untuk VB.NET : 
Function GenerateNumber(ByVal pMaxDigits As Integer) As String
        Try
            'validasi
            If pMaxDigits < 1 Then Return ""
            'buka koneksi
            Using con As New Odbc.OdbcConnection("dsn=local")
                con.Open()
                'select field table
                Dim cmd As New Odbc.OdbcCommand("SELECT No FROM tbl_test WHERE LEN(No)=" + pMaxDigits.ToString + " ORDER BY NO DESC", con)
                'buat temporary default 0
                Dim TempDigit As String = New String("0", pMaxDigits)
                Dim TempNo As Double = 0
                If cmd.ExecuteScalar Is Nothing Then
                    'jika tabel tbl_test masih kosong / belum ada data
                    'maka set 01 (banyak angka nol tergantung dari parameter pMaxDigit)
                    TempDigit = Mid(TempDigit, 1, pMaxDigits - 1) + "1"
                Else
                    'jika tabel sudah ada data nya, maka increment
                    TempNo = Val(cmd.ExecuteScalar) + 1
                    'jika Field Lenght table = New Number Lenght
                    If TempNo.ToString.Length = pMaxDigits Then
                        TempDigit = Mid(TempDigit, 1, pMaxDigits - TempNo.ToString.Length) + TempNo.ToString
                    Else
                        MessageBox.Show("Panjang Digit Sudah Maksimal, Tidak Bisa Ditambah Lagi!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    End If
                End If
                Return TempDigit
            End Using
        Catch ex As Exception
            MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return ""
        End Try
    End Function


Untuk VB.6 :
Function GenerateNumber(ByVal pMaxDigits As Integer) As String
    On Error GoTo djieHandle
        'validasi
        If pMaxDigits < 1 Then GenerateNumber = "": Exit Function
        'buka koneksi
        Dim con As New ADODB.Connection
        con.CursorLocation = adUseClient
        con.Open ("dsn=local")
        'select field table
        Dim rec As New ADODB.Recordset
        Set rec = con.Execute("SELECT No FROM tbl_test WHERE LEN(No)=" & pMaxDigits & " ORDER BY NO DESC")
        'buat temporary default 0
        Dim TempDigit As String
        TempDigit = String(pMaxDigits, "0")
        Dim TempNo As String
        TempNo = ""
        If rec.EOF = True Or rec.BOF = True Then
            'jika tabel tbl_test masih kosong / belum ada data
            'maka set 01 (banyak angka nol tergantung dari parameter pMaxDigit)
            TempDigit = Mid(TempDigit, 1, pMaxDigits - 1) + "1"
        Else
            'jika tabel sudah ada data nya, maka increment
            TempNo = Trim(Str(Val(rec.Fields(0).Value) + 1))
            'jika Field Lenght table = New Number Lenght
            If Len(TempNo) = pMaxDigits Then
                TempDigit = Mid(TempDigit, 1, pMaxDigits - Len(TempNo)) & TempNo
            Else
                MsgBox "Panjang Digit Sudah Maksimal, Tidak Bisa Ditambah Lagi!", vbExclamation, "Error"
            End If
        End If
        rec.Close
        GenerateNumber = TempDigit
    Exit Function
djieHandle:
    MsgBox Err.Description, vbExclamation, "Error"
    GenerateNumber = ""
End Function

Silahkan kembangkan lagi function tersebut sesuai kebutuhan, sekian dan semoga bermanfaat.
source : http://djiesoft.blogspot.jp

1 komentar: