Namun demikian ada saatnya kita memerlukan penomoran dengan format yang berbeda, katakanlah kita memerlukan prefix atau suffix pada penomoran. Untuk menjawab persoalan tersebut pada kesempatan kali ini saya akan mencoba menguraikan langkah-langkah yang dilakukan untuk membuat penomoran otomatis.
Penomoran otomatis dapat dilakukan dengan semua bahasa pemograman, baik itu terhubung ke database atau tidak, namun pada kesempatan ini saya hanya akan mencontohkannya dalam bahasa pemrograman Delphi dan PHP dengan asumsi telah terhubung ke database. Semoga dapat dipahami dan disesuaikan pada bahasa pemograman lain. Untuk penomoran otomatis pada Stored Procedure MySQL akan saya uraikan pada artikel saya selanjutnya.
Langkah-langkah yang dilewati dalam pembuatan nomor otomatis ini antara lain:
- Ambil nomor terakhir pada database, jika tidak ada maka nomor terakhir adalah 0 (nol).
- Tambahkan nomor tersebut dengan 1 (satu).
- Hasil pada langkah ke 2 (dua) merupakan nomor baru pada inputan selanjutnya.
Perlu dicermati, point 1 dan 3 begitu sederhana jika penomorannya hanya angka, tanpa prefix ataupun suffix. Untuk permasalahan tersebut Anda dapat menggunakan fungsi-fungsi pengolah string pada bahasa pemrograman yang Anda gunakan.
Untuk memudahkan tutorial saya kali ini, saya tentukan penomoran yang akan kita pelajari dengan format : KODE-00001.
Sebelum kita mulai, buatlah sebuah database "penomoran" dan tabel "otomatis", berikut saya sertakan query untuk create tabelnya.
Sebelum kita mulai, buatlah sebuah database "penomoran" dan tabel "otomatis", berikut saya sertakan query untuk create tabelnya.
CREATE TABLE `otomatis` (
`nomor` CHAR(10) NOT NULL,
`nama` VARCHAR(30) NULL DEFAULT NULL,
PRIMARY KEY (`nomor`)
)
ENGINE=InnoDB;
Kemudian tambahkan beberapa baris ke tabel tersebut, nomor diisi sesuai format:Seperti saya sebutkan sebelumnya, pada tutorial kali ini saya asumsikan Anda sudah memahami tentang koneksi dan sudah terhubung ke database.
Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
no_urut : string;
no_baru : string;
begin
with ZQuery1 do begin
{ query mengambil nomor urut terakhir }
sql.text := 'SELECT nomor FROM otomatis ORDER BY nomor DESC LIMIT 1';
open;
{ nomor urut saat ini }
no_urut := fieldbyname('nomor').AsString;
{ karena nomor urut sebenarnya adalah 5 angka terakhir
contoh: Kode-00001, nomor urutnya adalah 00001,
maka perlu fungsi mengambil 5 karakter dari kanan. }
no_urut := rightStr(no_urut,5);
{ nomor urut baru adalah nomor lama + 1}
no_baru := inttostr( strtointdef( no_urut,0) + 1);
{ tambahkan kembali prefix "Kode" }
no_baru := 'Kode-'+formatfloat('00000',strtofloat(no_baru));
{ hanya untuk ujicoba hasil }
showmessage(no_baru);
end;
end;
PHP
<?php
mysql_connect('localhost','root','');
mysql_select_db('penomoran');
#query ambil urut terakhir
$qry = mysql_query('SELECT nomor FROM otomatis ORDER BY nomor DESC LIMIT 1');
#ambil 5 angka terakhir, jika tidak ada record otomatis 0
if (mysql_num_rows($qry) == 1){
$nomor = mysql_result($qry,0,0);
$nomor = substr($nomor,-5);
}else
$nomor = 0;
#tambahkan 1, increment
$nomor++;
#format kembali
$nomor = 'Kode-' . str_pad($nomor, 5, '0', STR_PAD_LEFT);
echo $nomor;
?>
Jika kedua script di atas dijalankan, maka Anda akan mendapat hasil "Kode-00003", dikarenakan nomor urut terakhir di table adalah "Kode-00002".Demikian contoh sederhana pembuatan nomor otomatis pada Delphi dan PHP, Anda yang menggunakan Lazarus tentunya dapat menggunakan script Delphi juga.
Untuk pembuatan penomoran otomatis pada Stored Procedure akan saya jelaskan pada tulisan saya berikutnya.
6 komentar
uwaaahh... terima kasih, dari kemarin nyoba2 gagal terus, tapi pake cara ini berhasil :))
sama-sama semoga bermanfaat :)
kalo setelah di sve nom otomatis ga muncul lagi gimana tuh pak, tapi kalo form ditutup trus dibuka lagi baru muncul lagi pak.
jangan lupa direfresh dataset (query atau tabel) nya,
terkadang harus close dan open
kalo format autonumber buat ribuan record gimana bang?
Caranya sama saja, yg membedakan cuma jumlah karakter yang dipotong, sesuaikan.
Untuk menuliskan Syntax: [code] code disini [/code]
Untuk menuliskan Quote: [quote] quote disini [/quote]
Berkomentarlah sesuai topik