Ini merupakan penjelasan tambahan (lebih lanjut) dari postingan saya tentang Basic Generate Auto Number, 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.
Functiondjie_AutoNumber() As String
Dimv_sql As String
'No Bukti Dengan Format Biasa 001,002,003
v_sql = "SELECT NO_BUKTI FROM TBL_HEAD ORDER BY NO_BUKTI DESC"
Usingcon As NewSqlClient.SqlConnection("DATA SOURCE=djiesoft;INITIAL CATALOG=test_db;USER ID=sa;PASSWORD=123"
con.Open()
Dimcmd As NewSqlClient.SqlCommand(v_sql, con)
Dimreader As SqlClient.SqlDataReader
reader = cmd.ExecuteReader
Ifreader.HasRows Then
reader.Read()
ReturnMid("000",1,3-(Val(Trim(reader.Item(0).ToString)) + 1).ToString.Length) + (Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
Return"001"
EndIf
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" + Mid("000",1,3-(Val(Trim(reader.Item(0).ToString)) + 1).ToString.Length) +(Val(Trim(reader.Item(0).ToString)) + 1).ToString
Return"A" + Mid("000",1,3-(Val(Trim(reader.Item(0).ToString)) + 1).ToString.Length) +(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"
Ifreader.HasRows Then
reader.Read()
ReturnFormat(Now.Date, "yyyyMMdd") + "-" + (Val(Trim(reader.Item(0).ToString)) + 1).ToString
Else
ReturnFormat(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.
Tags:
cara generate autonumber, cara membuat nobukti bertambah, cara generate nobukti otomatis, cara membuat auto nourut, cara membuat custom nourut vbnet, generate auto increment sqlserver , cara membuat norutu berdasarkan tahun tangal bulan , cara membuat nourut berganti setiap tahun atau bulan, membuat no bukti pertanggal, membuat nourut transaksi vbnet sql
0 komentar:
Posting Komentar