Masino Sinaga

Web Development, PHPMaker, & PHP Report Maker

Anda di sini: Beranda / PHPMaker / Solusi Supaya Kolom Saldo Bisa Di-Export Datanya di Aplikasi Web dari PHPMaker
Cara Menghapus Extension Versi Lama dari dalam File Project PHPMaker
Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker

Solusi Supaya Kolom Saldo Bisa Di-Export Datanya di Aplikasi Web dari PHPMaker

Januari 12, 2015 oleh Masino Sinaga 6 Komentar

Masih ingat dengan artikel saya yang berjudul Mudahnya Menghitung Saldo per Transaksi di Aplikasi Web dari PHPMaker? Sekedar mengingatkan kembali, artikel itu membahas bagaimana mudahnya kita bisa menambahkan kolom baru di halaman List untuk menampilkan data yang tidak diambil langsung dari Database, tapi berdasarkan perhitungan beberapa Field.

Sayangnya, data yang ditampilkan pada kolom tambahan tersebut tidak akan terikut ketika diekspor ke media tertentu, seperti Printer Friendly, Export to Excel, Export to CSV, dan sebagainya. Nah, di artikel yang ini kita akan membahas bagaimana teknik yang bisa dilakukan oleh Web Developer supaya data di kolom tambahan tadi bisa diikutkan pada fitur Export Data.

Pertama sekali, kita harus membuat sebuah Database View yang bernama saldo_for_export dengan sintaks seperti ini:

CREATE VIEW `saldo_for_export` AS SELECT ID, Tanggal, 
CASE Jenis WHEN 'M' THEN Nominal ELSE 0 END AS Masuk, 
CASE Jenis WHEN 'K' THEN Nominal ELSE 0 END AS Keluar, 
Nominal AS Saldo 
FROM `transaksi`;

Karena solusi pada artikel ini terkait erat dengan teknik yang telah dijelaskan oleh artikel di atas tadi, maka pastikan Anda sudah membuka file project (yang dibahas pada artikel di atas) dengan menggunakan PHPMaker. Jadi, pastikan Anda sudah mengikuti semua petunjuk pada artikel di atas tadi.

Setelah itu, sekarang lakukan sinkronisasi antara Project PHPMaker dan Database, melalui menu Tools -> Synchronize, supaya Database View yang baru saja kita buat tersebut dimasukkan ke dalam project. PHPMaker akan mengkonfirmasikan adanya perubahan struktur kepada Anda, bahwa terdapat sebuah Database View yang baru. Anda akan diminta untuk menerima perubahan tersebut. Pastikan Anda menyetujuinya.

Pastikan juga Anda sudah memberi tanda centang pada object saldo_for_export dari panel Database pada project PHPMaker Anda, supaya PHPMaker memproses object baru ini. Lalu, pada tab Fields, pilih TOTAL dari kolom Aggregate yang terdapat di bawah kolom List Page.

Selanjutnya klik tab Code (Server Events, Client Scripts and Custom Templates), lalu pastikan Anda memiliki kode seperti ini pada server event Page_Load yang terdapat di bawah lokasi Server Events -> Table-Specific -> List Page, sehingga kode selengkapnya menjadi seperti ini:

// Page Load event
function Page_Load() {
	//echo "Page Load";
	$GLOBALS["final_saldo"] = 0;
}

Fungsi kode tersebut untuk menginisiasi sebuah variabel global yang bernama final_saldo dan akan digunakan juga di server event yang lain.

Masih pada bagian Server Events, pastikan Anda memiliki kode berikut di server event Row_Rendered yang terdapat di bawah lokasi Server Events -> Table-Specific -> Common, sehingga kode selengkapnya menjadi seperti ini:

// Row Rendered event
function Row_Rendered() {
	// To view properties of field class, use:
	//var_dump($this-><FieldName>);
	if ($this->RowType <> EW_ROWTYPE_AGGREGATE) {
		if ($this->Masuk->CurrentValue > 0) {
			$GLOBALS["final_saldo"] = $GLOBALS["final_saldo"] + $this->Masuk->CurrentValue;
		} else {
			$GLOBALS["final_saldo"] = $GLOBALS["final_saldo"] - $this->Keluar->CurrentValue;
		}		
		$this->Saldo->ViewValue = number_format($GLOBALS["final_saldo"]);
	} else {
		$this->Saldo->ViewValue = number_format($GLOBALS["final_saldo"]);
	}
}

Fungsi kode tadi untuk memanipulasi data di setiap baris pada kolom Saldo di mana data asli yang di Database belum menunjukkan data Saldo yang sebenarnya. Jadi, ini adalah salah satu trik yang bisa kita gunakan jika ingin menyertakan sebuah kolom yang seolah-olah baru atau kolom tambahan supaya disertakan pada fitur Export Data. Kalau Anda perhatikan kode barusan, maka sangat mirip dengan logic kode pada server event ListOptions_Rendered yang dibahas pada artikel di atas.

Sekarang, pastikan Anda sudah mengaktifkan fitur Export Data dari tab menu PHP -> Page Options (Global) -> Export.

Terakhir, generate ulang semua file script dengan menggunakan PHPMaker. Setelah selesai, jalankan aplikasi web dari browser favorit Anda, lalu cobalah untuk mengekspor data dari menu saldo for export, maka seharusnya sekarang kolom Saldo akan muncul di sana.

Wow! Mudah sekali bukan? PHPMaker, gitu lho! 😀

Ditempatkan di bawah: PHPMaker Ditag dengan:ListOptions_Rendered, Page_Load, PHPMaker Indonesia, Row_Rendered, Server Events, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com dan ilovephpmaker.com.

Cara Menghapus Extension Versi Lama dari dalam File Project PHPMaker
Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker

Comments

  1. ame mengatakan

    Agustus 30, 2017 pada 3:18 pm

    Pak masino,
    Bgmna jika setiap transaksi mempunyai kategori account bank, misalnya account BCA, BII, Mandiri dll
    Bagaimana cara membuat tampilan view saldonya dibedakan berdasarkan account2 tsb? Thanks

    Balas
    • dodo ananto mengatakan

      September 22, 2017 pada 3:26 pm

      // Page Load event
      function Page_Load() {
          //echo "Page Load";
          $GLOBALS["final_saldo"] = 0;
          $GLOBALS["account_id"] = 0;
          // field account_id adalah asumsi sebagai pembeda dari beberapa account bank
      }
      
      // Row Rendered event
      function Row_Rendered() {
          // To view properties of field class, use:
          //var_dump($this->FieldName);
      
          if ($GLOBALS["account_id"] == $this->account_id->CurrentValue) {
          }
          else {
            $GLOBALS["final_saldo"] = 0;
          }
      
          if ($this->RowType != EW_ROWTYPE_AGGREGATE) {
              if ($this->Masuk->CurrentValue > 0) {
                  $GLOBALS["final_saldo"] = $GLOBALS["final_saldo"] + $this->Masuk->CurrentValue;
              } else {
                  $GLOBALS["final_saldo"] = $GLOBALS["final_saldo"] - $this->Keluar->CurrentValue;
              }       
              $this->Saldo->ViewValue = number_format($GLOBALS["final_saldo"]);
          } else {
              $this->Saldo->ViewValue = number_format($GLOBALS["final_saldo"]);
          }
      
          $GLOBALS["account_id"] = $this->account_id->CurrentValue;
      }
      
      Balas
  2. usman mengatakan

    Februari 6, 2018 pada 11:18 am

    selamat pagi pak masino saya ada buat buku besar dengan menggunakan fungsi row_rendered diatas dan berhasil,kemudian hasil total dari buku besar seperti kas dipindahkan kekolom kas dineraca begitu juga untuk tipe akun lain juga berhasil,yang jadi masalah pada saat di lakukan fungsi sum dineraca hasilnya tidak sesuai jumlah dana,yang dijumlahkan jumlah dari field bukan dari jumlah total saldo per akun dari fungsi row_rendered tersebut..mohon bantuannya,apakah ada script tambahan untuk mengatasi masalah tersebut….

    Balas
    • Masino Sinaga mengatakan

      Februari 21, 2018 pada 7:59 pm

      Saya tidak bisa menjawab kalau tidak melihat kode Anda di server event tersebut seperti apa yang sebenarnya.

      Balas
  3. amran mengatakan

    Oktober 25, 2018 pada 10:11 am

    pak saya coba sama persis seperti diatas di phpmaker 2018 trial tp ketika di export muncul fatal error
    ( ! ) Fatal error: Cannot redeclare cbuku_transaksi_list::ListOptions_Rendered() in C:\Temporary\Ampps\www\belajar\buku_transaksilist.php on line 1909

    namun ketika ListOptions Rendered event tidak saya masukkan g eror, tapi ya saldonya g muncul.. mohon solusinya pak

    Balas
    • Masino Sinaga mengatakan

      November 8, 2018 pada 6:07 pm

      Solusinya, periksa lalu perbaiki kode Anda pada baris 1909 dalam file buku_transaksilist.php. Jangan lupa sesuaikan juga kode tersebut pada server event ListOptions_Rendered.

      Balas

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pos-pos Terbaru

  • Server Event Page_Render dan Page_Rendering di PHPMaker, Apa Sih Bedanya?
  • Begini Mudahnya Mengubah Judul Browser Secara Dinamis di PHPMaker 2021
  • Solusi Supaya PreviewRow dan PreviewOverlay Bisa Sama-Sama Berfungsi di PHPMaker 2021
  • Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Seperti Ini Mudahnya Menyembunyikan Data Label di Chart dari PHPMaker 2021

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Masino Sinaga pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Masino Sinaga pada Mudahnya Menambahkan Global Function untuk Auto-Update Field di PHPMaker
  • Abu Syifa pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Abu Syifa pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2019 | WordPress | Catat masuk | Kembali ke atas