Cara Membuat Generate Auto Number/No Urut/No Bukti VBNET
Kali ini saya akan sedikit menjelaskan untuk beberapa kasus dan jenis
No Urut yang biasa ada dalam aplikasi sehari hari. Baiklah saya langsung
contohkan ke coding vbnet dan cara melakukan SELECT query untuk
mendapatkan No urut terakhir dari database.
Function
djie_AutoNumber() As String
Dim
v_sql As String
'No Bukti
Dengan Format Biasa 001,002,003
v_sql = "SELECT
NO_BUKTI FROM TBL_HEAD ORDER BY NO_BUKTI DESC"
Using
con As New
SqlClient.SqlConnection("DATA
SOURCE=djiesoft;INITIAL CATALOG=test_db;USER ID=sa;PASSWORD=123"
con.Open()
Dim
cmd As New
SqlClient.SqlCommand(v_sql, con)
Dim
reader As SqlClient.SqlDataReader
reader = cmd.ExecuteReader
If
reader.HasRows Then
reader.Read()
Return
(Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
Return
"001"
End
If
End Using
End Function
Untuk kasus lain yang sedikit lebih rumit, misalanya ada kombinasi
karakter, tahun, bulan,hari dan sebagainya anda cukup ganti saja pada
bagian ini :
'Contoh
Custom No Bukti A001, A002, B001, C001, C002
'Jadi Setiap
Karakter Masing2 A,B,C punya no urut masing2
v_sql = "SELECT
RIGHT(NO_BUKTI,3) AS NO_BUKTI FROM TBL_HEAD WHERE LEFT(NO_BUKTI,1)='A' ORDER BY
RIGHT(NO_BUKTI,3) DESC"
reader.Read()
Return
"A" +
(Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
Return
"A001"
End If
'Contoh No
Bukti yyyymmdd-xxx : 20120801-001,20120801-002
'Jika Ingin
Setiap TAHUN Ganti/Reset Ke 001 Lagi
v_sql = "SELECT
RIGHT(NO_BUKTI,3) AS NO_BUKTI FROM TBL_HEAD WHERE
YEAR(LEFT(NO_BUKTI,8))=YEAR(GETDATE()) ORDER BY RIGHT(NO_BUKTI,3) DESC"
'Jika Ingin
Setiap BULAN Ganti/Reset Ke 001 Lagi
v_sql = "SELECT
RIGHT(NO_BUKTI,3) AS NO_BUKTI FROM TBL_HEAD WHERE
YEAR(LEFT(NO_BUKTI,8))+MONTH(LEFT(NO_BUKTI,8))=YEAR(GETDATE())+MONTH(GETDATE())
ORDER BY RIGHT(NO_BUKTI,3) DESC"
'Jika Ingin
Setiap HARI Ganti/Reset Ke 001 Lagi
v_sql = "SELECT
RIGHT(NO_BUKTI,3) AS NO_BUKTI FROM TBL_HEAD WHERE
YEAR(LEFT(NO_BUKTI,8))+MONTH(LEFT(NO_BUKTI,8))+DAY(LEFT(NO_BUKTI,8))=YEAR(GETDATE())+MONTH(GETDATE())+DAY(GETDATE())
ORDER BY RIGHT(NO_BUKTI,3) DESC"
If
reader.HasRows Then
reader.Read()
Return
Format(Now.Date, "yyyyMMdd") + "-" +
(Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
Return
Format(Now.Date, "yyyyMMdd") + "-001"
End If
Ini adalah cara saya sendiri yang biasa saya lakukan dan tentu harus ada
modifikasi sesuai dengan kasus dan kebutuhan anda, dan sebenarnya masih
banyak "Jalan/Cara" lain untuk melakukan generate No Urut ini, Mungkin
anda bisa lebih menyingkat/menyederhanakan lagi sintak diatas atau
mungkin anda mempunya cara lain yang lebih praktis yang bisa share
(berbagi) melalui comment dibawah atau mungkin juga anda ingin bertanya
tentang kasus No Urut lain yang saya tidak sebutkan diatas. Semoga
bermanfaat.
Assalamuallaikum, salam kenal dari zaidindayani. Mas pandji artikel anda ini menarik sekali dan saya mencoba untuk mengimplementasikannya..dari tutorial mas diatas saya menggunakan format Contoh No Bukti yyyymmdd-xxx : 20120801-001,20120801-002
BalasHapussaya mengikuti listingnya sesuai dengan yang mas buat, dari listing tersebut saya mendapati kendala pada bagian :
If reader.HasRows Then
reader.Read()
Return Format(Now.Date, "yyyyMMdd") + "-" + (Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
Return Format(Now.Date, "yyyyMMdd") + "-001"
End If
------------------------------------------------
Return Format(Now.Date, "yyyyMMdd") + "-" + (Val(Trim(reader.Item(0).ToString)) + 1).ToString
pada bagian "-" sewaktu saya ubah atau tambahkan dari : "-" menjadi "-00" maka format numbernya menjadi 001-009
tapi ketika formatnya saya ubah/kurangi menjadi "-0" maka format numbernya jadi 010-099
terakhir saya bt menjadi "-" maka formatnya menjadi 100-999
nah kira-kira gimana solusinya ya mas pandji, mohon maaf menggangu waktu anda..artikel2nya sangat menarik dan membantu para pemula seperti saya..keep pos mas
Pak Mau tanya, kalau buat nya di delphi gmn ya Pak? dlu dh pernah buat tapi lupa,,,
BalasHapusMANTABS MAS BRO ANE CUMA NAMBAHKAN PRIVATE SUB AUTO() LANGSUNG ANE CALL SAAT DI TEKAN SAVE DAN CB GANTI HARI DAN AKHIRNYA BOOOOM NOMOR URUT BERGANTI KE 1 LAGI. THANKS MAS BRO THUN LALU ANE GAGAL SM KODING INI TP SKR ANE BISA EY
BalasHapus