Menampilkan Nilai Terbilang Di Rave Report

Menanggapi pertanyaan Delphier pengunjung.

Rave report berbeda dengan FastReport yang mendukung scripting, sehingga bila kita ingin menambahkan fungsi-fungsi baru, agak repot. Termasuk bila kita ingin menambahkan fungsi untuk mengubah nilai numerik ke nilai terbilang, misalnya 100 menjadi “seratus”. Jadi, mau tak mau kita harus membuat fungsi tersebut di Delphi, hasilnya baru di kirim ke Rave report.

Saya cenderung menggunakan event OnCalcField() pada TDataset untuk proses pengubahan ini, dan hasilnya disimpan di field baru, kemudian dikirim ke Rave report.

Kita langsung ke langah-langkahnya:

  1. Kita buat sebuah projek baru Di Delphi (Delphi 7 ke atas). Saya menggunakan Delphi 2009 for Win32. Delphi 2010 dan RAD Delphi XE pun tidak masalah.
  2. Pada form utama, kita tambahkan sebuah koneksi database, sebuah query/table (pokoknya komponen dataset), dan sebuah Datasource. Bila perlu, tambahkan juga sebuah DBGrid dan sebuah Memo untuk menampilkan data di form. Karena saya anggap perlu, saya menambahkan juga kedua komponen terakhiršŸ™‚
  3. Gunakan unit berisi fungsi-fungsi konversi. Anda bisa mendownloadnya di sini. Simpan hasil ektsraknya (file uTerbilang.pas) ke dalam satu folder dengan projek, kemudian tambahkan ke klausa useĀ unit1 (form utama) dari menu File>Use Unit…
  4. Setup koneksi ke database. Kemudian atur SQL/nama tabel untuk komponen query/table. Saya menggunakan Zeos (ZConnection dan ZQuery). Gunakanlah tabel yang mengandung field numeric/integer.Lihat gambar berikut sebagai perbandingan:
    Catatan: Anda bebas menggunakan komponen database apapun dan tabel/database apapun. Asalkan di tabel tersebut terdapat field numerik/integer (sesuai kebutuhan kita). Pada gambar di atas, saya menggunakan Delphi 2009/Zeos/MySQL.
  5. Ā Kini klik kanan pada komponen query. Klik Fields Editor…
    Klik kanan pada window Fields Editor dan klik Add All Fields.
    Setelah itu, klik kanan lagi dan klik New Field.
  6. Kini kita akan membuat sebuah Calculated Field, yaitu field yang nilainya diisi saat dataset dibuka.
    Pada window New Field berikut:

    Masukkan nama field, misalnya “terbilang”, Component biarkan saja nilai defaultnya, Type diisi string dan Size masukkan 255. Field Type pilih Calculated. Klik OK.
  7. Ā Kembali ke Fields Editor. Tutup saja window ini. Pada Ā form utama, klik pada komponen dataset (ZQuery pada contoh di atas). Pada event OnCalcFields di Object Inspector, klik ganda.
  8. Ketikkan kode seperti berikut pada event tersebut:
    procedure TForm1.ZQuery1CalcFields(DataSet: TDataSet);
    begin
      ZQuery1.FieldByName('terbilang').AsString :=
        MyTerbilang(Zquery1.FieldByName('saldo_awal').AsFloat);
    end;
    
  9. Sesuaikanlah nama field “terbilang” dengan nama field pada langkah 6 di atas. Ā Nama field “saldo_awal” disesuaikan dengan nama field dalam tabel yang akan dikonversi menjadi teks.
  10. Proses konversi sudah selesai. Kini tinggal menampilkan ke Report.
    Anda dapat membuat report di Rave report seperti yang biasanya Anda lakukan. Di sana telah ada sebuah field “terbilang” yang berisi hasil konversi. Saya tidak akan membahas tentang penggunaan Rave report di sini.
    Referensi Rave Ā report:
    http://muhal.wordpress.com/2007/03/14/membuat-rave-report-di-delphi-7/
    http://pekalongan.110mb.com/data/rave.pdf
  11. Ā Untuk menguji, gunakan event OnAfterScroll milik ZQuery:
    <pre>
    procedure TForm1.ZQuery1AfterScroll(DataSet: TDataSet);
    begin
      Memo1.Text := ZQuery1.FieldByName('terbilang').AsString;
    end;</pre>
    
  12. Ā Kini jalankan aplikasinya. Di contoh saya, tampilannya seperti ini:
Demikian. Semoga ada manfaatnya.
Salam hangat, DelphieršŸ™‚

17 thoughts on “Menampilkan Nilai Terbilang Di Rave Report

  1. Top markotop , maknyus ditambah es campur deh blog ini.
    Terima kasih banget ma artikelnya. btw knp gk dikembangin, misal dibuat buku gt?

  2. mw tanya lagi nih,
    gimana cara looping data waktu insert table?
    saya punya 2 table = angsuran dan bayar,
    di table angsuran ada 1 record data, di table bayar kosong,
    waktu nanti di inputkan dari table angsuran ke table bayar, hasilnya di table bayar nanti ada 3 record, jadi looping data 3 x.
    inputan 3 x berdasarkan waktu angsur. jika ada angsur 4 x,
    hasilnya nanti 4 record.
    dan seterusnya…

    mohon bantuannnya!

  3. Pasti kan ada catatan, berapa jumlah uang yang dibayar per 1 kali angsuran, misal Rp 1.000.
    Nah, Saat penginputan angsuran, looping:

    insert into tblAngsuran(…) values(….);

    for i:=1 to JmlAngsuran do
    begin
    Insert into tblBayar(…..,jumlah_bayar,…..) values (….., 1000, ……);
    end;

  4. Betul sekali mas, berarti yg JmlAngsuran itu table?
    Btw klo looping berapa kali angsur dan menjumlahkan bulan gimna ya?
    Misal saya buat table seperti dibawah ini:
    Table JmlAngsuran :
    nomor , tanggal , bayar , berapakaliangsur
    1234 , 11/11/2011 , 1.000.000 , 3

    Jadi nanti hasilnya waktu di looping:
    Table tblBayar :
    nomor , tanggalangsur, jumlah_bayar, angsuranke
    1234 , 11/11/2011 , 320.000 , 1
    1234 , 11/12/2011 , 320.000 , 2
    1234 , 11/01/2012 , 320.000 , 3

    Mohon bantuannya ya Master

  5. [JmlAngsuran] itu nilai yang akan dimasukkan ke tabel [angsuran] pada field [berapakaliangsur].

    A. Masukkan ke tabel angsuran
    Insert into Angsuran (nomor, tanggal, bayar, berapakaliangsur) values (1234, ‘2011-0-11-11’, 1000000,3); —>angka 3 ini adalah [jmlAngsuran]

    B. Ambil ansguran terakhir

    angsuran_ke := select max(angsuranke) as x from Angsuran;

    for i := 1 to 3 do —> for i := 1 to JmlAngsuran do
    begin
    angsuran_ke := angsuran_ke + 1;
    insert into bayar(nomor, tanggalangsur, jumlah_bayar, angsuranke) values (1234, ‘2011-0-11-11’, 320000, angsuran_ke);
    end;

    • Sowry saya yg jawab ^^

      Iya betul, dibuat variabel baru bertipe integer.

      angsuran_ke := select max(angsuranke) as x from Angsuran; artinya nilai angsuran ke diambil dari database menggunakan

      Query1.SQL.Text := select max(angsuranke) as x from Angsuran';
      Query1.Open;
      Angsuran_ke := Query1.Fields[0].AsInteger;
      Query1.Close;
      ...
      

      Semoga membantušŸ˜‰

  6. Siiiip banget, sudah bisa berjalan, tapi untuk tanggal gimana ya?
    karena saya inputin tanggal di dbedit.
    makasih sebelumnya, markotop deh..

    Btw di blog ini ada 2 orang yang berbeda ya?

    • 1. Di Dataset yang terkoneksi ke DBEdit tanggal, klik kanan, pilih Fields Editor…
      2. Klik field tanggal.
      3. Di Object Inspector, cari property DisplayFormat, isi nilainya: dd/MM/yyyy
      4. Tanggal akan tampil sesuai format yang diberi.

      Btw di blog ini ada 2 orang yang berbeda ya?

      Hm…. sudah nakal mulai tanya-tanya nih… bahaya… :p

  7. Yaaaa cuma tanya aja, pasti cantik .., wong fotonya ja ky gt!
    Maksudnya gimana cara nambahin bulan, saya inputin tanggal di dbedit?
    nomor , tanggal , bayar , berapakaliangsur
    1234 , 11/11/2011 , 1.000.000 , 3

    nanti hasilnya seperti ini waktu di looping:
    nomor , tanggalangsur, jumlah_bayar, angsuranke
    1234 , 11/11/2011 , 320.000 , 1
    1234 , 11/12/2011 , 320.000 , 2
    1234 , 11/01/2012 , 320.000 , 3

    makasih sebelumnya.

    • var
      s: string;
      hasil: double;
      begin
      s := ‘50.75’;
      s:= stringreplace(s, ‘,’,’.’,[rfReplaceAll]); //——-> mengganti semua tanda koma ke titik…
      hasil := strToFloat(s);
      end;

  8. Mas, mungkin agak menyimpang, sy gunakan delphi+zeos+postgresql utk bikin program client server.
    yg mo sy tanyakan, bagaimana mengatasi kondisi koneksi client yg terputus secara tiba-tiba?
    misalnya pada wireless terjadi RTO biasanya muncul eror koneksi.
    Tx

    Ohya..kayaknya klo siang nama Joko Rivai and klo malam Riva…lina he..he..he.. tul g?

  9. bagaimana cara menampilkan dari data dari form langsung ke quick report didelphi 7?
    kan habis nulis di edit.text selsai smua lngsung mw preview ke quick report gimana caranya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s