Ketika membuat program seringkali kita membuat no urut yang dibuat dari bawaan database, seperti kode yang bertipe integer dan yang bersifat increment. Cara tersebut memberikan keuntungan yaitu mudah dan cepat, namun saya seringkali mendapat masalah saat menghapus record/data paling terakhir, yaitu no urut akan terus bertambah seiring banyak data yang pernah ada. Misal seperti ini, ada 10 data mulai no urut 1-10. Bila data ke-9 dan ke-10 saya hapus, berarti tinggal 8 data kan, kemudian saya menambahkan 1 data ke database, timbulah permasalah yaitu no urut yang dihasilkan bukanlah no-9 melainkan no 11. Itu terjadi karena database masih menyimpan no urut yang pernah di hapus. Untuk mengatasi hal ini akhirnya saya menggunakan code seperti ini, walaupun masih memiliki kelemahan, tetapi untuk kasus seperti yang saya ceritakan bisa diatasi. Berikut source code nya :


var kd,st,newKd:string;
i,n:integer;
....
ADOTable1.Last;
if not(ADOTable1.eof and ADOTable1.Bof) then
begin
kd:=ADOTable1.FieldByName('kode').AsString;
// auto generate
for i:=1 to 2 do
st:=st+kd[i+1];
n:=strtoint(st)+1;
case length(inttostr(n)) of
1 : newKd:='K0'+inttostr(n);
2 : newKd:='K'+inttostr(n);
end;
end
else newKd:='K01';
Edit1.Text:=newKd;

nb: Untuk field kode bertipe varchar/text dengan length 3.
Hasil akhir akan menghasilkan kode yang berurut yang mulai diawali dengan huruf :
K01
K02
K03

K99

Silahkan dimodifikasi dan selamat mencoba…
Diposting oleh Borland7

0 komentar:

Visit the Site
MARVEL and SPIDER-MAN: TM & 2007 Marvel Characters, Inc. Motion Picture © 2007 Columbia Pictures Industries, Inc. All Rights Reserved. 2007 Sony Pictures Digital Inc. All rights reserved. blogger templates