Rabu, 18 Mei 2011

Perhitungan Tabel Dengan Query Pada Delphi 7


Uhuk-uhuk (batuk , karena ngunjungin blog yang udah berdebu lantaran lama kagak di update) ..
Saya gak tau apa judulnya tepat atau enggak , tapi silahkan baca aja dehPerhitungan Tabel Dengan Query Pada Delphi 7.
Begin , kali ini saya menemukan permasalahan ketika hendak menjumlahkan isi dari field pada tabel.Lihat gambar dibawah ini 





itu adalah report yang saya buat menggunakan Quick Report pada delphi 7.MySQLDac sebagai konektornya , dan XAMPP sebagai server SQL-nya.Aplikasi yang saya bernama Saritel - Basic Edition V.1.0.0 ini merupakan permintaan dari sebuah bengkel di daerah saya.Dibawah ini penampakan laporan sebelum di Run

Niatnya , saya ingin menjumlahkan semua field harga beli , harga jual dan stock.Dengan tujuan agar ketauan berapa jumlah total stock dan modal biaya yang di keluarkan untuk membeli barang tersebut.Juga perkiraan laba bila semua barang tersebut laku terjual.Trus , mulai darimanakah !?

Pertama , saya rubah tampilan laporannya menjadi seperti ini

Lalu biar lebih simple , saya bikin procedure dengan nama cetakSemua.Kodenya , kayak gini nih :



procedure cetakSemua;
var totalBeli,totalJual,jual,beli,stock:Integer; //variabel untuk perhitungan
begin
  with FstockBarang do //nama formnya
    begin
      totalJual:=0;  //inisialisasi awal
      totalBeli:=0;
      with Q_stock_barang do  //saya menggunakan Query pada tab data Acces.
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from t_master_barang');  //inisialisasi query
          Prepare;
          if Prepared=true then
            begin
              Open;
            end;
          end;
      with Q_total_harga_beli do  //query perhitungan data harga beli , dengan query string sama dengan Q_stock_barang
        begin
          try //fungsi try , untuk membangkitkan eksepsi
          First;  //memposisikan kursor pada field pertama dari tabel
          while not Eof do  //Eof=end of field , bila belum sampai pada field terakhir , maka perintah setelahnya akan terus dieksekusi
            begin
              beli:=StrToInt(fieldbyname('harga_beli').AsString);   //var beli diisi dengan field harga_beli
              stock:=StrToInt(fieldbyname('stock_barang').AsString);  //var stock diisi dengan field stock
              totalBeli:=totalBeli+(beli*stock); //menjumlahkan hasil perkalian tiap field
              Next; // berfungsi agar kursor berpindah pada field selanjutnya
            end;
          finally //fungsi finally , di eksekusi bila fungsi  try telah mencapai kondisi tertentu , dalam hal ini Eof.
            lblTotalHargaBeli.Caption:=IntToStr(totalBeli); //mengisi lblTotalHargaBeli dengan var totalBeli
          end;
        end;
      with Q_total_harga_jual do
        begin
          try
          First;
          while not Eof do
            begin
              jual:=StrToInt(fieldbyname('harga_jual').AsString);
              stock:=StrToInt(fieldbyname('stock_barang').AsString); // penjelasannya sama dengan query total beli
              totalJual:=totalJual+(jual*stock);
              Next;
            end;
          finally
            lblTotalHargaJual.Caption:=IntToStr(totalJual);
          end;
        end;
    with Q_total_stock_barang do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select SUM(stock_barang) AS total from t_master_barang'); //menjumlahkan semua stock barang
        Prepare;
        if Prepared=true then // agar lebih afdol query siap di eksekusi.
          begin
            Open;
            lblTotalStockBarang.Caption:=fieldbyname('total').AsString;
          end;
      end;
    lblTotalPerkiraanLaba.Caption:=IntToStr(totalJual-totalBeli); //menghitung perkiraan laba
    end;
end;

Selanjutnya , saya men-triger procedure tadi pada tombol cetak , seperti di bawah ini :

procedure TFstockBarang.btnCetakClick(Sender: TObject);
begin
      cetakSemua;
      if Q_stock_barang.Prepared=true  then
        begin
          QRstockBarang.Refresh;
          QRstockBarang.Prepare;
          QRstockBarang.PreviewModal;
        end;
end;
 

Maka , penampakan laporan stock barang tersebut setelah di rubah menjadi seperti ini ::


Taraaa !!!
Hehe , akhirnya beres juga.Dan setelah itu , saya mulai melanjutkan lagi proses testing dari saritel yang masih dalam tahap on going test.Okey , bila saya menemukan masalah yang terpecahkan lainnya , pasti saya share lagi.
Sekian untuk posting kali ini , semoga bermanfaat.

Oia , bila anda berminat untuk mempelajari delphi 7 dari tingkat dasar sampai mahir membuat aplikasi database sendiri.Silahkan kunjungi blog video tutorial saya DISINI.Tersedia video tutorial praktek selama 3 jam yang akan menuntun anda dengan mudah mempelajari pemrograman Delphi 7.

Simak Juga Tutorial Lainnya:

6 komentar:

Anonim mengatakan...

Kenapa mesti susah2 pake koding gan??? kan ada komponen QRExpression??? tinggal di sum()... jadi deh... :)

Bayu Idham Fathurachman mengatakan...

awalnya gitu gan ..
Cuma pas mau milih database fieldnya , gak nongol tuh field yang ane mau SUM ..
Makanya ngoding gitu !! hehe ..
tenkyu ..

Anonim mengatakan...

Biasanya klo nama fieldnya ga nongol, kemungkinannya :
1. Dataset belom active
2. Dataset terpisah dari report (di datamodule misalnya)

Bayu Idham Fathurachman mengatakan...

Yuph , saya emang nyimpen semua tabel and datasetnya di data module , biar lebih gampang organisirnya.Yaa kadung koding , jadi cara saya gak salah juga dong !? hehe ..

Unknown mengatakan...

komponen yang dipake buat bikin tabel kaya gitu apa ya? soalnya saya juga mau bikin report yang pake tabel, cuma belum bisa juga.

Unknown mengatakan...

bikin garis vertical di dalam tabel itu gimana sih caranya ? pake apa ?

Posting Komentar