Assalamualaikum Wr. Wb
Melanjutkan tutorial author yang sebelumnya Koneksi Database MySql Dengan Visual Studio – Part 2 , dimana tutorial kali ini sama dengan tujuan tutorial sebelumnya yang bertujuan untuk membuat Aplikasi Online Shop , bagi yang masih kebingungan mengenai project ini bisa kalian lihat di tutorial sebelumnya. Nah, Kali ini author bakal membahas tentang Generate ID.
Generate ID adalah sebuah ID yang di buat secara otomatis yang bertujuan membedakan data satu dengan lainnya dan juga untuk penamaan data agar jenis data lebih mudah dibedakan.
Contoh , kita punya data pegawai dan data barang , Nah, agar mudah dibedakan jenisnya pada database, kita Asumsikan Pegawai berawalan PGW sedangkan untuk Barang berawalan BRG. Maka dari itu data untuk Pegawai , ID nya akan seperti ini :
PGW001
PGW002
PGW003
…
Sedangkan untuk Barang , ID nya akan serpeti ini :
BRG001
BRG002
BRG003
…
Seperti itu contoh dari Generate ID Varchar, Daripada ID data yang hanya angka saja. Ini memang Tidak Wajib , akan tetapi karena author lebih menyukai cara ini dari pada Auto Increment biasa.
SCRIPT GENERATE ID VARCHAR
Dim conn As New MySqlClient.MySqlConnection
Function generateID()
Dim id As String = "" '<- id yang akan di return'
'urutkan data dari yang paling besar'
Dim sql As String = "SELECT * FROM tbl_user ORDER BY id_user DESC"
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read() 'read data'
If Not rd.HasRows Then
id = "USR" + "001" 'jika tidak data maka kita mulai dari 1'
Else
'jika ada kita ambil ketiga kata terakhir lalu convert ke int'
'data yang diambil adalah id_user atau uniqe id nya'
id = Val(Mid(rd("id_user"), 4, 3)) + 1 'tambahkan 1'
'berapa digit angka yang ada'
If Len(id) = 1 Then
id = "USR00" + id
ElseIf Len(id) = 2 Then
id = "USR0" + id
ElseIf Len(id) = 3 Then
id = "USR" + id
End If
End If
rd.Close() 'close data reader'
Return id
End Function
Logikanya seperti ini :
1. Kita mengambil semua data uniqe atau primary ID pada database yang sudah kita urutkan dari yang terbesar
2. Setelah itu kita cek, apakah datanya masih kosong, jika iya maka mulai dari 1.
3. Jika tidak kita ambil data ID nya, lalu kita potong 3 kata terakhir , diconvert dan di tambah 1.
4. Lalu tinggal kita gabungin dengan varchar nya. Dan di Return.
Itu adalah penjelasan dari Script Generate ID nya, mungkin agak rumit ya, tapi kalau di praktekkin kita bisa memahaminya. Dan itu mungkin hanya bertahan sampai urutan ke 999 , karena masih 3 digit. Kalian bisa memodifikasi script itu dengan kreatifitas dan logika kalian.
FUNCTION CLASS
Nah, untuk melanjutkan project kita Online Shop, Sekarang, author bakal melanjutkan codingan kita :
1. Buat Module lagi pada project kalian dan kita namai saja dengan FunctionClass.
*) Tujuan author buat module functionClass adalah untuk mempermudah kita dalam Generate ID Varchar setiap data yang kita insert ke database. Kalian bakal tau sendiri nanti.
2. Lalu inilah scriptnya :
Imports MySql.Data
Public Class FunctionClass
Dim conn As New MySqlClient.MySqlConnection
Dim rd As MySqlClient.MySqlDataReader
Function generateID(ByVal idfor As String, ByVal sql As String, ByVal conn As MySqlClient.MySqlConnection)
Dim id As String = "" '<- id yang akan di return'
If idfor = "User" Then
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read() 'read data'
If Not rd.HasRows Then
id = "USR" + "001" 'jika tidak data maka kita mulai dari 1'
Else
'jika ada kita ambil ketiga kata terakhir lalu convert ke int'
id = Val(Mid(rd("id_user"), 4, 3)) + 1 'tambahkan 1'
'berapa digit angka yang ada'
If Len(id) = 1 Then
id = "USR00" + id
ElseIf Len(id) = 2 Then
id = "USR0" + id
ElseIf Len(id) = 3 Then
id = "USR" + id
End If
End If
rd.Close() 'close data reader'
Return id
ElseIf idfor = "Petugas" Then 'Generate ID Petugas'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "PTG" + "001"
Else
id = Val(Mid(rd("id_petugas"), 4, 3)) + 1
If Len(id) = 1 Then
id = "PTG00" + id
ElseIf Len(id) = 2 Then
id = "PTG0" + id
ElseIf Len(id) = 3 Then
id = "PTG" + id
End If
End If
ElseIf idfor = "Pembelian" Then 'Generate ID Pembelian'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "PMB" + "001"
Else
id = Val(Mid(rd("id_beli"), 4, 3)) + 1
If Len(id) = 1 Then
id = "PMB00" + id
ElseIf Len(id) = 2 Then
id = "PMB0" + id
ElseIf Len(id) = 3 Then
id = "PMB" + id
End If
End If
ElseIf idfor = "Order" Then 'Generate ID Order'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "ORD" + "001"
Else
id = Val(Mid(rd("id_order"), 4, 3)) + 1
If Len(id) = 1 Then
id = "ORD00" + id
ElseIf Len(id) = 2 Then
id = "ORD0" + id
ElseIf Len(id) = 3 Then
id = "ORD" + id
End If
End If
ElseIf idfor = "Terima" Then 'Generate ID Terima'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "TRM" + "001"
Else
id = Val(Mid(rd("id_terima"), 4, 3)) + 1
If Len(id) = 1 Then
id = "TRM00" + id
ElseIf Len(id) = 2 Then
id = "TRM0" + id
ElseIf Len(id) = 3 Then
id = "TRM" + id
End If
End If
ElseIf idfor = "Distributor" Then 'Generate ID Distributor'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "DST" + "001"
Else
id = Val(Mid(rd("id_distributor"), 4, 3)) + 1
If Len(id) = 1 Then
id = "DST00" + id
ElseIf Len(id) = 2 Then
id = "DST0" + id
ElseIf Len(id) = 3 Then
id = "DST" + id
End If
End If
ElseIf idfor = "DetailOrder" Then 'Generate ID Detail Order'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "DOR" + "001"
Else
id = Val(Mid(rd("id_det_order"), 4, 3)) + 1
If Len(id) = 1 Then
id = "DOR00" + id
ElseIf Len(id) = 2 Then
id = "DOR0" + id
ElseIf Len(id) = 3 Then
id = "DOR" + id
End If
End If
ElseIf idfor = "Barang" Then 'Generate ID Barang'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "BRG" + "001"
Else
id = Val(Mid(rd("id_barang"), 4, 3)) + 1
If Len(id) = 1 Then
id = "BRG00" + id
ElseIf Len(id) = 2 Then
id = "BRG0" + id
ElseIf Len(id) = 3 Then
id = "BRG" + id
End If
End If
ElseIf idfor = "Log" Then 'Generate ID Log'
Dim cmnd As New MySqlClient.MySqlCommand(sql, conn)
rd = cmnd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
id = "LOG" + "001"
Else
id = Val(Mid(rd("id_log"), 4, 3)) + 1
If Len(id) = 1 Then
id = "LOG00" + id
ElseIf Len(id) = 2 Then
id = "LOG0" + id
ElseIf Len(id) = 3 Then
id = "LOG" + id
End If
End If
End If
rd.Close()
Return id
End Function
End Class
Nah itu adalah Script untuk Generate ID , jadi author pengen setiap table memiliki Varchar ID yang bisa di automatic increment. Nah untuk mempermudah kita dalam insert database dalam setiap table nanti , author membuat Module itu, agar bisa author gunakan untuk di setiap Form yang memiliki insert function.
Mungkin cukup untuk tutorial Membuat Generate ID Varchar Dengan MySql kalian tidak harus mengikuti gaya coding author, kalian bisa memiliki gaya coding kalian sendiri – sendiri, Kalau mau pakai Auto Increment pada mysql ya terserah kalian, Author hanya memberi saran. Sekian dari author , Semoga bermanfaat.
Wassalamualaikum Wr. Wb
No comments: