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

makasih gan,
BalasHapushttp://www.brigade-antivirus.com/A/index.php?id=Ismail
ok... saya segea kunjungi balik,
Hapusdilanjut gan ^^
Hapusbuat yg mau pasang iklan baris gratis
disini : www.iklan.brigade-antivirus.com
siap gan,... hehehehe
HapusMas, mau tanya nih.
BalasHapussaya ada tbel karyawan di mysql fieldnya (idkar, kodekar,....dst)
trus saya pingin idkar pada vb tampil secara berurutan otomatis (1,2,3..dst) pada form input karyawan.
disini idkar saya jdikan PK, supaya kodekar sewaktu2 bisa diedit.
gmana donk caranya mas..
idkar itu di jadikan identity (auto incerment) jadi otomatis 1,2,3,4,5,6... ga perlu kita isi dari program/secara coding. contoh :
Hapusinsert into karyawan (kodekar,....dst) values (...)
jadi mulainya dari kodekar bukan dari idkar
contoh struktur tablenya :
CREATE TABLE table_ai (
kode_transaksi INT NULL AUTO_INCREMENT KEY,
deskripsi VARCHAR(200)
)
INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 1');
Mas,, tapi kalo mau nampilin di textbox gimana?
Hapustextbox nya saya disable. jadi tiap kali di run form karyawan, di texbox nomornya udah otomatis nambah sendiri. jadi yng diisi tinggal kodekar, namakar, dst..
ada prosedur/fungsi gak mas..
mohon pencerahannya mas.
terimakasih.
oke terima kasih mass...
BalasHapussangat bermanfaat..!!!!
lengkapnya disini :
Hapushttp://djiesoft.blogspot.com/2012/08/cara-memebuat-generate-auto-numberno.html
mas saya masih kurang jelas dengan kodingan untuk vb6.
BalasHapusitu kodingannya dimasukkan ke field kodingan mana ?.Sub_load kah ?
trims
untuk penyimpannnnya itu tergantung kebutuhan,
Hapusbisa di form_load, tombol_new_click, dll