Arsip: tips : Bikin AutoNumber buat nomor faktur

 
user image
more 15 years ago

tox2wow

Hmmm, gw ga pernah make autonumber yang disediain oleh database, semisal acces. Tapi, gw bikin sendiri algoritmanya. Misalnya kita punya tabel T_Faktur dengan 1 field Nomor. Algoritmanya kira2 :

// sediakan variabel untuk menampung nilai maksimal dari field Nomor
var
 N : Byte;
 with AdoQuery1 do
   begin
    // ambil dulu nilai maksimal dari field nomor
   Close;
   SQL.Clear;
   SQL.Add('Select Max(Nomor) from T_Faktur');
   Open;
   if IsEmpty then
    N := 0
   else
    N := FieldByName('Nomor').AsInteger;
   //input nomor selanjutnya
   Close;
   SQL.Clear;
   SQL.Add('Insert into T_Faktur values(' + IntToStr(N + 1) + ')');
   ExecSQL;
   end;
[/code:1:db5944322d]
Dengan algoritma diatas, maka field Nomor akan diincrement setiap kali kita inginkan, tergantung pemakaian code nya. Gw juga ga pernah make autonumber default dari database, soalnya susah untuk update jika ada field yang di hapus, sehinga value di field nomor ga bisa urut lagi. Sedangkan untuk algoritma di atas, untuk menjaga urutan Nomor, walaupun ada data yang di hapus, algoritmanya seperti ini :
[code:1:db5944322d]
 //misalkan, prosedur hapus adalah seperti ini
var
 N : Integer; // variabel untuk menyimpan value nomor yang di hapus
              
 with AdoQuery1 do
  begin
   Close;
   SQL.Clear;
   SQL.Add('Delete from T_Faktur where Nomor = N');
   ExecSQL;
   //update nilai nomor yang lebih besar dari nomor yang dihapus
   Close;
   SQL.Clear;
   SQL.Add('Update T_Faktur set Nomor = N - 1 where Nomor > N');
   ExecSQL;
  end;
And ... ting .. ting .. nomor pasti akan selalu berurutan ... :lol:
user image
more 15 years ago

cyber_hecker

cool....
user image
more 15 years ago

tox2wow

whew ... kalo udah di bilang keren sama cyber_hecker berarti udah bener2 keren nihh ... wakakkakaa .... :lol:
user image
more 15 years ago

deLogic

kekeke koreksi dikit, itu mah bukan algoritma tapi code snippet.... mm cuman salah syntax aja kok, di perintah Delete ama Update, N nya mas..... :)

   SQL.Add('Delete from T_Faktur where Nomor = N');
   SQL.Add('Update T_Faktur set Nomor = N - 1 where Nomor > N');
mungkin begini ya..????

   SQL.Add('Delete from T_Faktur where Nomor = ' + IntToStr(N));
   SQL.Add('Update T_Faktur set Nomor = ' + IntToStr(N - 1) + ' where Nomor > ' + IntToStr(N));
user image
more 15 years ago

marvel

gimana kalo auto numbernya gini... if table1.bof then table1.last; edit1.text:=['no faktur']+1; ketikkan semua sourcecode ini di formshow,btsimpan,btbatal selamat mencoba :mrgreen: yg jadi masalah.. kalo menggunakan source code seperti ini kok.. kita nga bisa menggunakan huruf ya ? NB: dengan syarat table1 di field No Faktur record no.1 harus sudah ada no.nya.. jadi sebelum sourcecode tsb di run.. kita harus memasukkan angka dulu di database tablenya.. thanks
user image
more 14 years ago

R960XT

bro.. itu kan no faktur nya cuman nomor doank... kalo gw mau didepan no fakturnya ada char biasa giman ?? misal FAK00001 trus nanti udah di save langsung nambah sendiri jadi FAK00002
user image
more 14 years ago

kaka-delphi

Untuk jenis pengkodean seperti itu sudah banyak dibahas disini .. silahkan search dulu
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com