Sebelumnya saya minta maaf, lama saya gak buka buka web, karena lagi ngerjakan Interprise untuk database mysql. jadi "Ora Kopen web'e ".
baru buka artikel masuk ternyata ada 4 pertanyaan yang masuk. Saya akan coba menjawab satu persatu, semoga bisa membantu anda.
Generate code otomatis memang memudahkan bagi user, namun terkadang membawa kesulitan pada saat program di akses secara bersamaan. hal ini dikarenakan program akan mengambil nilai record terakir terus ditambah 1.
Dengan Alur program dibawah ini :
misal struktur code = PEG0807001
kalau kita lihat sekilas kita dapatkan 3 bagian dalam code tersebut :
- PEG --> awal kode
- 0807 --> tahun + bulan
- 001 --> nomor urut
Alur logika yang kita pakai adalah :
apakah table pegawai masih kosong atau tidak..?
if Tpegawai.IsEmpty then nopeg:='PEG'+formatdatetime('yy',date())+formatdatetime('mm',date())+'001';
itu jika kondisi record masih belum ada alias table empty. atau jika tidak perlu mengisi tahun+bulan langsung saja nopeg:='PEG0807001';
Jika record ada atau table tidak kosong, maka kita mabil dari record terakhir terus nilainya di tambah 1.
teknik ini sudah dikuasai oleh penanya (Mas Ricky) namun tetap saya share siapa tahu yang lain belum tahu.
permasalan penanya jika program diakses secara bersamaan maka akan menimbulkan code pegawai yang kembar...
kenapa.. karena semua mengacu pada table yang sama dengan nomor last record yang sama. sehingga kita perlu mengantisipasi.
- Kita harus melakukan proses dengan menggunakan Edit bukan dbedit.
- Lakukan proses append, pengisian record dan simpan secara bersambung dalam sebuah peritah button simpan. jadi begitu tekan button simpan langsung melakukan append, isi record dan post.
- Pada table pegawai yang anda pakaidi event before Insert berikan perintah tpegawai.refresh;
- Bisa juga before post tergantung urutan coding
- Tujuannya kita bisa mendapatkan record yang uptodate( benar-benar last record)
- satu langkah yang paling penting kita harus menggunakan blok try except end;. jadi begitu tidak bisa dilakukan artinya recod kembar maka masuk blog except terus kita langsung tambah aja nilainya 1 angka lagi.
Tpegawai.post;
except
begin
Buat kode urut lagi
Tpegawai.post;
end;
end;
berikut ini contoh coding untuk generate code (untuk share bagi yang lain)
if THtransaksi.IsEmpty then
begin
if copy(etempat.text,1,1)='D' then
notrans:='G'+formatdatetime('ddmmyy',now()) +'-001'
else
notrans:='M'+formatdatetime('ddmmyy',now()) +'-001';
end
else
begin
THtransaksi.Last;
// showmessage(THtransaksi['kode']);
p:=length(THtransaksi['notrans']);
notrans:=copy(THtransaksi['notrans'],1,1);
no:=inttostr(strtoint(copy(THtransaksi['notrans'],p-2,3))+1);
no:=copy('000'+no,length('000')-1,3);
notrans:=notrans+formatdatetime('ddmmyy',now())+'-'+ no;
end;
0 komentar:
Posting Komentar