Fungsi ID Auto Generate di Delphi

ID auto generate adalah suatu fungsi untuk menggenerate kode atau ID sebuah standar kode atau bersifat primary key secara auto increment, untuk standar kode sendiri bervariasi menyesuaikan kebutuhan pengguna sistem itu sendiri

saya akan menjelaskan pembuatan id auto generate versi saya sendiri yang sudah saya terapkan diberbagai sistem yg saya buat, tapi hal yang paling saya suka ada pembuatan fungsi id auto generate saya lakukan didalam store Procedure (PL) tapi dalam artikel ini saya akan menjelaskan pembuatan function id auto generate disisi client programmingnya yaitu delphi

1. buat table untuk menampung id pada table mana saja yang akan diauto generate dalam suatu database (saya menggunakan database mysql)

create table tbl_nomor_id

nama_id varchar(30) not null,

format varchar(10) not null,

tanggal date null,

ukuran int not null,

flag_tgl varchar(1) not null default ‘Y’,

no_urut int not null

);

setelah dibuat tablenya lalu entry table yang terdapat id yg akan diauto generate, contoh:

1. untuk id yang akan selalu mencounter atau auto increment

insert into tbl_nomor_id (‘tbl_pegawai’,’PG’,null,5,’N’,15);

akan mendapatkan hasil ‘PG015’

2. untuk id yang akan mencounter tapi akan otomatis tereset menjadi 0 apabila terjadi pergantian waktu (hari)

insert into tbl_nomor_id(‘tbl_transaksi’,’TRX’,now(),12,’Y’,3);

akan mendapatkan hasil ‘TRX20100221003’, untuk nmer counternya hanya 3 digit ‘001’

setelah table dan datanya dibuat, maka buat fungsi didalam delphi,kebetulan saya menggunakan component zeos;

procedure ExecSQL(SQL:string);

begin

qryExec.close;

qryExec.sql.add(SQL);

qryExec.execute;

end;

procedure getdata1(SQL:string);

begin

qry1.close;

qry1.sql.add(SQL);

qry1.open;

end;

procedure getdata(SQL:string);

begin

qry.close;

qry.sql.add(SQL);

qry.open;

end;

function getIDAutoGenerate(nama_table:string):string;

var hasil:string;

begin

getdata(‘SELECT flag_tgl,tanggal FROM tbl_nomor_id WHERE nama_id=’+QuotedStr(nama_table)+”);

if qry.filedbyname(‘flag_tgl’).asstring=’Y’ then

begin

if  formatdatetime(‘yyyymmdd’,qry.fieldbyname(‘tanggal’).asdatetime)=

formatdatetime(‘yyyymmdd’,date) then

execSQL(‘UPDATE tbl_nomor_id SET no_urut=no_urut+1 WHERE nama_id=’+QuotedStr(nama_table)+’ ‘)

else

execSQL(‘UPDATE tbl_nomor_id SET no_urut=1,tanggal=NOW() WHERE nama_id=’+QuotedStr(nama_table)+’ ‘)

getdata1(‘SELECT CONCAT(format,date_format(NOW(),’%Y%m%d’),LPAD(no_urut,ukuran-length(format),0)) nomor FROM tbl_nomor_id WHERE nama_id=’+QuotedStr(nama_table)+”);

end

else

begin

execSQL(‘UPDATE tbl_nomor_id SET no_urut=1 WHERE nama_id=’+QuotedStr(nama_table)+’ ‘);

getdata1(‘SELECT CONCAT(format,LPAD(no_urut,ukuran-length(format),0)) nomor FROM tbl_nomor_id WHERE nama_id=’+QuotedStr(nama_table)+”);

end;

result:=qry1.fieldbyname(‘nomor’).asstring;

end;

end;

proses penggunaan fungsi id auto generate

TForm1.datasetPegawaiBeforePost(DataSet: TDataSet);

begin

dataset.fieldbyname(‘id_pegawai’).asstring:=getIDAoutoGenerate(‘tbl_pegawai’);

end;

TForm1.datasetTransaksiBeforePost(DataSet: TDataSet);

begin

dataset.fieldbyname(‘id_transaksi’).asstring:=getIDAoutoGenerate(‘tbl_transaksi’);

end;

NB:untuk script ini setidaknya harus diuji coba dahulu, atau dimodifikasi apabila ada yang tidak sesuai

NB:apabila para pembaca dari muslim saya, mohon berkenan membaca surat Al-fatihah untuk Eyang saya Ahmad Tahir  yang telah meninggal pada tanggal 11-Februari 2010  semoga beliau diringankan kehidupannya dialam barzah, dan tidak lupa mezakatkan sedikit rezeky utk fakir miskin

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: