Home > Contoh Aplikasi, Database, Delphi, Delpih Tip & Trik, Request Pembaca > Menampilkan Nilai Terbilang Di Rave Report

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 :)
Advertisement
  1. 29 April 2011 at 5:55 am | #1

    Terima kasih banget artikelnya..
    ini sangat membantu sekali .. aq coba dulu!

    • Rivalina
      29 April 2011 at 9:02 am | #2

      siiiip :)

  2. 28 May 2011 at 8:24 am | #3

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

  3. 12 July 2011 at 9:33 am | #4

    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!

  4. 14 July 2011 at 12:54 am | #5

    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;

  5. 14 July 2011 at 11:16 am | #6

    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

  6. 15 July 2011 at 3:25 am | #7

    [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;

  7. 15 July 2011 at 7:21 pm | #8

    Mw minta pencerahan aja mas, untuk angsuran_ke dan JmlAngsuran itu nanti dibuat bilangan integer ya pada variablenya?

    • Rivalina
      16 July 2011 at 3:07 am | #9

      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 ;)

  8. 16 July 2011 at 3:18 am | #10

    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?

    • Rivalina
      19 July 2011 at 11:56 am | #11

      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

  9. 20 July 2011 at 2:15 am | #12

    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.

  10. asdir
    9 September 2011 at 8:48 pm | #13

    adakah fungsi terbilang yg bisa membaca koma (,) .. misal 50,75 dibaca lima puluh koma tujuh lima ..

    • Rivalina
      15 September 2011 at 7:59 am | #14

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

  11. 14 September 2011 at 5:45 pm | #15

    mas joko ni mang mantap ilmu databasenya

  12. cahyo
    18 September 2011 at 4:28 am | #16

    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?

  1. No trackbacks yet.

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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.