Skip to content Skip to sidebar Skip to footer

SQL Server - Cara Membuat Function Autonumber Format A0001

SQL Server - Cara Membuat Function Autonumber Format A0001


Assalamu'alaikum wr.wb.
Pada kesempatan ini, saya akan memberikan tutorial tentang cara membuat autonumber dengan tipe data string dengan autogenerate function format angka dan huruf dimana terdapat satu huruf di awal dan sisanya adalah angka (A0001). Saat ini sudah banyak sekali jenis - jeni autonumber yang ada. Meskipun yang paling sering digunakan adalah autoincrement int yang mana sudah dibuat secara default pada database. Sehingga id pada sebuah tabel dibuat dengan tipe data int. Namun saat ini jika kita perhatikan, id dengan tipe data integer tidak bisa menyimpan tanda baca seperti titik, koma, garis miring ataupun yang lain. Tipe data yang mendukung adalah tipe data yang dapat menyimpan huruf seperti char atau varchar. Maka dari itu, disini saya akan membahas tentang id dengan format tersebut.

Autonumber dengan format seperti ini sangat cocok untuk kemudahan dalam menampilkan, mencari, ataupun menyorting data. Karena kita hanya perlu mengambil beberapa digit dari id tersebut saja. Tentu ini juga sangat efisien karena tampilan id akan terlihat lebih bervariasi dan lebih elok untuk dilihat. Bagaimana tidak? kita bisa melihat id dengan kombinasi angka dan huruf yang sudah disusun sedemikian rupa sehingga tampil seperti yang diinginkan dan kemudian ditampilkan didalam aplikasi dengan format tersebut. Lalu dengan digit id yang sama pada tiap barisnya. Tentu saja itu membuat tampilan lebih enak dilihat.



Baca Juga

Cara yang saya berikan ini menggunkan fitur function pada SQL Server. Bagi yang belum mengetahui tentang function, silahkan kunjungi artikel yang berjudul Function Dan Stored Procedure SQL Server. Pada artikel tersebut saya membahas tentang Function dan Stored Procedure pada database SQL Server. Namun karena disini hanya menggunakan funcition. Silahkan pahami tentang Function baik - baik.

Jika anda sudah mengetahui tentang funciton, mari kita lanjutkan tutorial ini. Berikut ini adalah tutorial program untuk membuat function autonumber dengan format angka dan huruf :



1. Membuat Database Dan Tabel Dengan Id Tipe Data Char(5)

Langkah ini adalah langkah yang paling awal dimana kita harus membuat sebuah database dimana pada database tersebut memiliki tabel dengan id bertipe data char(5). Pada contoh ini, saya membuat sebuah database Contoh dan tabel Karyawan sebagai contoh saja.

Create database Contoh

Program diatas adalah program untuk membuat database SQL Server dengan Contoh sebagai nama database tersebut. Jika kita hanya menggunakan code seperti itu, maka database yang dibuat sesuai dengan settingan default dari SQL Server. Jika anda ingin mengubah kapasitas ataupun directory, silahkan kunjungi artikel saya tentang Tutorial Membuat Database SQL Server. Pada artikel tersebut, saya memberikan cara - cara untuk membuat database dan tabel menggunakan SQL Server dengan detail.

use Contoh

Setelah database selesai dibuat. Kita gunakan script diatas untuk memilih database yang akan kita gunakan. Disini kita menggunakan database yang baru saja dibuat. Yaitu database Contoh.

create table karyawan(
    id char(5) primary key not null,
    nama varchar(50) not null,
    alamat varchar (100) not null,
    tgl_lahir date not null,
    jkel char(1) not null
)

Setelah itu, kita buat sebuah tabel dengan kolom - kolom yang diinginkan. Disini saya membuat tabel dengan nama karyawan. lalu saya membuat kolom id dengan tipe data char(5), nama, alamat, tgl_lahir, dan jkel. Pada langkah ini, yang paling utama adalah id harus dengan tipe data char(5). Untuk kolom lain, bisa diganti sesuai keinginan anda.



2. Membuat Function Untuk Format Autonumber Angka Dan Huruf

Disinilah kita perlu menggunakan function karena cara yang saya buat ini menggunakan function, Hal tersebut dikarenakan dengan menggunakan function, kita dapat meringkas sebuah program agar lebih efisien.

create function auto_A001()

Script diatas adalah code untuk mendeklarasikan nama function yang akan dibuat. Disini saya membuat function dengan nama auto_A001(). Tujuan saya menggunakan nama tersebut adalah untuk memudahkan anda dalam membedakan function yang saya buat. Sehingga anda mampu untuk memahami dengan baik.

returns char(5)
as begin

Pada tabel karyawan yang kita buat menggunakan tipe data char(5). karena itu nilai yang dikembalikan harus char(5). Dengan begitu maka tidak akan ada kesalahan dalam input data. Sebenarnya bisa juga menggunakan varchar ataupun char dengan kapasitas lebih besar seperti char(6). Namun hal itu tentu hanya membebani kinerja ram. Mungkin tidak akan berpengaruh saat ini. Hal itu dapat dirasakan ketika data yang disimpan sudah mencapai ribuan. Maka dari itu saya sarankan untuk membuat function dengan nilai kembali secukupnya saja.

Untuk as begin, itu adalah code pembuka dalam membuat program logika pada SQL Server. Kita mulai membuat perintah pada function dimulai dari as begin sampai end. Diantara kedua script itulah kita buat perintah untuk menyusun angka dan huruf sebelum dikembalikan.

declare @urut int, @hasil char(5)

Disini kita deklarasikan variabel yang dibutuhkan. Yaitu @urut dan @hasil. Kita bisa melihat variabel @hasil bertipe data char(5). variabel inilah yang nantinya akan diisi dengan hasil dari susunan autonumber nanti. Untuk @urut, nanti akan saya jelaskan keduanya lebih lanjut.

SELECT @urut = CONVERT(INT, isnull(max(right(id,4)),0)) from karyawan 

Pada program diatas, kita memasukkan nilai pada variabel @urut. @urut sendiri adalah variabel dengan tipe data integer. Sementara yang pada tabel karyawan, id bertipe data char. Karena itu kita Convert id dari char ke int.

Pada tabel yang baru kita buat, belum ada data sama sekali. Karena itu kita gunakan code isnull. Code tersebut berfungsi untuk menghasilkan angka nol(0) jika data yang dimaksud tidak ada. Dengan begitu maka function bisa dibuat ketika data masih nol dan menghasilkan nilai null. Dengan isnull, maka akan mengganti nilai null dengan 0.

Pada dasarnya, program diatas adalah program untuk menampilkan semua data karyawan. Bagaimana jika sudah ada data yang terisi? Padahal yang kita butuhkan adalah data terakhir dari karyawan. Karena itu kita gunakan code max. Code tersebut berfungsi untuk mengambil nilai terakhir dari data karyawan.

Lalu kita ingat bahwa format dari autonumber tersebut adalah angka dan huruf dimana huruf ada di paling depan dilanjutkan dengan angka (A0001). Padahal huruf tidak bisa di convert ke integer. Karena itulah, kita gunakan code right yang mana code tersebut berfungsi untuk mengambil digit dari kanan. Code dasar dari right adalah right(kolom, jumlah_digit). Pada contoh program diatas, kita mengambil jumlah digit 4. artinya kita mengambil 4 digit dari sebelah kanan (A0001) menjadi 0001. Namun karena integer tidak mendukung 0 didepan, maka nilai yang didapat adalah 1 atau nilai terakhir setelah nol).

Karena data pada tabel karyawan belum ada. maka nilai yang didapat dan disimpan ke variabel @urut adalah 0.

SET @hasil = 'A'+right('000'+CAST( @urut+1 as VARCHAR(4)), 4)

Program diatas adalah untuk menginput variabel @hasil. Dimana hasil digunakan untuk menyimpan format autonumber yang sudah jadi. Autonumber yang kita gunakan adalah A0001. Karena itu kita tambahkan huruf A di awal.

Setelah kita menyimpan @urut sebelumnya, kita tadi sudah mendapatkan nilai tersebut. Namun yang kita butuhkan adalah nilai yang berbeda dengan @urut karena @urut menyimpan nilai yang sudah disimpan di tabel karyawan. Maka dari itu kita tambahkan @urut+1. Hal ini untuk menambah jumlah @urut sendiri. Misal @urut bernilai 0. Maka ditambahkan 1 dan menjadi 1. Yang kemudian kita Convert ke varchar(4). Varchar sendiri bersifat fleksibel.

Format dari autonumber yang kita buat adalah A0001. Jika kita hanya menggunakan A+@urut+1, maka hasil yang diperoleh adalah A1. Karena itu diantaranya kita tambahkan '000'. Hal tersebut dikarenakan @urut bertipe data integer yang mana tidak mendukung angka nol didepan.

Sekarang masalahnya adalah bagaimana jika @urut bernilai lebih dari satu digit? 99 misal. Jika kita hanya menggunakan format 'A'+'000'+@urut+1, maka yang dihasilkan adalah A000100. Padahal id pada tabel karyawan hanya menyimpan 4 digit saja. Artinya yang tersimpan adalah A0001. Itu menyebabkan error dimana autonumber tersebut sebelumnya sudah ada. Karena itu kita membutuhkan code right. dimana code tersebut digunakan untuk mengambil 4 digit terakhir dari data yang dihasilkan. 'A'+right('000'+@urut+1) Begitulah kasaran dari contoh program.

RETURN @hasil
END

Setelah semuanya selesai. Format id sudah dibuat dan sudah dimasukkan ke variabel @hasil. Maka kita hanya tinggal mengembalikan nilai tersebut menggunakan perintah return. Lalu kita gunakan end untuk mengakhiri function. Dengan begitu, function sudah berhasil dibuat.

Hasil keseluruhan function
create function auto_A001()
--Nilai yang dikembalikan
returns char(5)
as begin
--Deklarasi variabel yang dibutuhkan
declare @urut int, @hasil char(5)

--Mengambil 4 digit terakhir dari kolom id pada table karyawan
SELECT @urut = CONVERT(INT, isnull(max(right(id,4)),0)) from karyawan 

--Membuat autonumber dengan format A0001 dan dimasukkan ke variabel @hasil
SET @hasil = 'A'+right('000'+CAST( @urut+1 as VARCHAR(4)), 4)

--Mengembalikkan nilai @hasil
RETURN @hasil
END

Dari berbagai penggalan program diatas yang sudah dijelaskan satu persatu, maka program diatas ini adalah hasil dari keseluruhan program function autonumber yang sudah dijadikan satu. Penggalan program sebelumnya adalah bagian dari function diatas yang mana saya pisahkan dan dijelaskan satu persatu.



3. Menginput Data Dengan Format Autonumber Angka Dan Huruf Lalu Menampilkan Data Tersebut. 

Setelah kita mengikuti langka satu dan langkah dua diatas, artinya kita sudah membuat tabel dan function sesuai kebutuhan. Saat ini kita hanya perlu menambahkan data pada tabel karyawan dengan id berformat autonumber dari function tersebut.

INSERT INTO karyawan (id, nama, alamat, tgl_lahir, jkel) VALUES 
(dbo.auto_A001(), 'Febri Nugroho', 'Seyegan Yogyakarta', '1995-02-14','L'),
(dbo.auto_A001(), 'Hartono Lapan Suroto', 'Kalasan Yogyakarta', '1992-06-12','L'),
(dbo.auto_A001(), 'Ramdhan Lathifah Ridho', 'Pugeran Yogyakarta', '1994-10-11','L'),
(dbo.auto_A001(), 'Ramadhan Rozan Wirahadi', 'Umbulharjo Yogyakarta', '1996-04-12','L')

Disini kita inputkan 3 data pada tabel karyawan. Pada masing - masing data yang diinput, kita menginput id dengan cara memanggil function dengan cara yang sama, sementara untuk kolom yang lain bisa diisi dengan bebas. Disini saya menginput dengan data diatas. Silahkan kunjungi artikel saya tentag CRUD Pada SQL Server.

Lalu excute dan lihat hasilnya

Membuat Function Untuk Format Autonumber Angka Dan Huruf

Dari gambar diatas, kita bisa melihat bahwa id menggunakan format angka dan huruf secara berurutan dan terus bertambah seiring dengan data yang ditambahkan. Jika tampilan sudah seperti diatas. Maka autonumber dengan format angka dan huruf sudah berhasil dibuat.


Penutup

Cara diatas memang sangat efisien dan membuat tampilan lebih menarik. Namun perlu diketahui bahwa tipe data char adalah tipe data yang berat. Dan tipe data tersebut memakan ram lebih banyak daripada integer yang notabene sangat ringan. Karena itu saya sarankan jika project yang dibuat adalah project yang benar - benar digunakan pada sebuah perusahaan untuk tidak menggunakan cara ini. Cara ini hanya memberat - beratkan ram dan mengakibatkan penyimpanan data tidak maksimal. Namun bila project yang dibuat hanya sekedar tugas akhir atau final project, anda boleh - boleh saja menggunakan cara ini asalkan tidak benar - benar digunakan di perusahaan atau toko saja.

Demikianlah tutorial yang saya berikan. Apabila ada kekurangan saya mohon maaf . Terimakasih telah berkunjung di blog saya yang sederhana ini. Silahkan tinggalkan jejak di kolom komentar. Assalamu'alaikum wr.wb.


Post a Comment for "SQL Server - Cara Membuat Function Autonumber Format A0001"