Home » Delphi » Database, Delphi, Reader Request, Sample Apps, Tips & Tricks » Menampilkan Nilai Terbilang Di Rave Report

Menampilkan Nilai Terbilang Di Rave Report

Print Friendly



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 :

    Unit Fungsi Terbilang (1.5 KiB)

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


Incoming search terms:

 

Comments

comments

Powered by Facebook Comments

19 Responses to Menampilkan Nilai Terbilang Di Rave Report

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

       New Post

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

       New Post

  3. 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!

       Visit Related Post

  4. 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;

       New Post

  5. 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

       New Post

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

       New Post

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

       New Post

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

         New Post

  8. 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?

       New Post

    • 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

         New Post

  9. 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.

       New Post

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

       New Post

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

         New Post

  11. mas joko ni mang mantap ilmu databasenya

       New Post

  12. 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?

       New Post

  13. [...] Untuk menampilkan angka terbilang di Rave Report, lihat di sini: http://cenadep.org/2011/04/27/menampilkan-nilai-terbilang-di-rave-report/ [...]

       New Post

  14. [...] posting tentang Menampilkan Nilai Terbilang Di Rave Report, saya telah menuliskan trik untuk menampilkan tulisan nilai terbilang di Rave Report, kini kita [...]

       New Post

  15. wahhh mantap pisannnnnn …. terima kasihhh…
    sangat bermanfaat sekali ,,, :) :)

       New Post

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>