Kalau yang dimaksud adalah : 
- ID itu bukan dari Field Autoincrement
- Namun sbg penanda yg unik
- Bisa terus berurutan walopun ada record yg didelete dimanapun letaknya, yg 
  berarti kalo ada pendeletan dan di INSERT lagi maka mengisi lagi ID
  pada record yg didelete tersebut. Sehingga tidak ada ID yang gowang (melompat)

Kebetulan sekali saya telah juga mengalami hal semacam itu. Jengah dengan Field 
Autoincrement yang memiliki sifat yang terus increment tanpa mempedulikan ada 
ID 
yang didelete , sehingga hanya dipakai sbg penanda yg kurang begitu rapi.

Hal itu saya utak atik sendiri , disisi program dengan membuat Procedure dan 
membuat 1 table bantu untuk menampung nomor. Tapi bukan untuk menyimpan nomor 
terakhir
melainkan table itu ter-INSERT kalau ada delete Record pada ID yang di maksud 
tadi.
Lho kok ? 
Bgini , kebetulan saya kerja di lingkungan DELPHI (isoku yo iki), tapi aku yakin
dengan bahasa apapun mungkin bisa Anda terapkan. Yang penting modelnya bisa 
menjadi 
membantu referensi Anda.

Pertama, pada event OnBeforePOST Saya letakkan procedure buatan sendiri
if qmst.State=dsInsert then
            DelDtlNomor(Kunci.AsString,Inisial); // ini procedure nya

inti Procedure DelDtlNomor isinya :
          SQL(' DELETE FROM t_nomor where rtrim(fc_nomor)='+quotedstr(nomor)+' 
and rtrim(fc_dari)='+quotedstr(dari) );

Kenapa kok sesaat sebelum save pada table master apa pun itu kita lakukan 
delete ? saya berpikir mundur ke belakang, sebab
saat Event OnNEWRECORD pada table tersebut kita letakkan      
qmstKode.AsString:=Bacanomor(Inisial,tablename,size);
Procedure BacaNomor intinya membaca jumlah record pada table yang dimaksud 
SQL(' Select top 1 fc_nomor from td_nomor with(nolock) where 
rtrim(fc_dari)='+quotedstr(dari) +' order by fc_nomor');
     . Tentu saja saya selalu memakai proses di BackEnd
dengan SQL Command , jangan memakai sisi FrontEnd. Hal ini utk menjaga kalau 
dibuat program multiuser/rame-rame melakukan Penyimpanan
secara bersamaan. Kalaupun ada hal spt itu bisa di cegat (dihadang) pada saat 
OnBeforePost dan OnAfterpost kita adakan pengecekan apakah ID tersebut 
sudah dipakai belum ? (hanya menggunakan select ID saja pada table bersangkutan)

yg kedua, pada saat penghapusan reord / Delete record.
Logikanya, ID nomor yg kita inginkan adalah berurutan kan ? maka kalau ada 
penghapusan data maka ID itu juga kehapus ? 
Kita ijinkan saja dihapus dengan persayaratan ID tersebut kalau dijadikan key, 
maka kita cek korelasi ID tersbut dipakai oleh table lain ga ? 
(hal ini juga sudah saya pikirkan namun kita bahas kali ini bukan korelasi 
table kan ? Mgkin pada saat nanti kalau ada yg tanya saja)
Kalau ID tersebut kita DEL dan belum ada korelasi ke table lain, maka kita 
hapus saja. Namun, ID tersebut di "CATAT" ke dalam table penampung
misalkan table t_Nomor , intinya INSERT INTO t_nomor 
(fc_nomor,fc_dari,fd_tgl,fc_userid) VALUES(:id1,:id2,:id3,:id4) ;
Hal ini akan dibaca dan diambil nomornya saat onNewRecord pada Procedure 
BacaNomor.Sehingga apabila record dimanapun di hapus,maka pada saat append
record lagi , nomor ID yg diambil adalah urutan yg di hapus tadi. Sehingga 
memungkinkan untuk mengisi lubang didalam table 
(wah kayak lagune Letto Lubang didalam Hati wae...)
bila ada ID spt ini : 1 , 2, 3,4,5 kemudian saya hapus nomor 4 : 1,2,3,5 (yg ID 
4 ketika didelete akan tersimpan di table t_nomor), kemudian akan dipakai lagi 
saat  Append.

Kurang lebih bgitu, 
Matur nuwun...




-Hendrik-

http://hendrikc.blogspot.com




      Lebih Bersih, Lebih Baik, Lebih Cepat - Rasakan Yahoo! Mail baru yang 
Lebih Cepat hari ini! http://id.mail.yahoo.com

[Non-text portions of this message have been removed]

Kirim email ke