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..
Function GenerateNumber(ByVal pMaxDigits As Integer) As StringTry
'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.
Tags:
autonumber, generate number, using function, how to generate autonumber, queue, auto increment, vbnet, c#, source code, sample, using auto increment
0 komentar:
Posting Komentar