Oracle : Form/Report Developer Pertemuan 11 Dibuat Oleh : Lis Suryadi, M.Kom
Materi: Membuat Form Cetak Nota Lanjutan
Block PL/SQL pada object TxtKdBrg Dengan Trigger: Key-Next-Item 1 2
Block PL/SQL pada object TxtKdBrg Dengan Trigger: Key-Next-Item DECLARE ada NUMBER:=0; psn NUMBER:=0; BEGIN SELECT COUNT(*) INTO ada FROM barang WHERE kdbrg=:blokpesan.txtkdbrg; EXCEPTION WHEN NO_DATA_FOUND THEN ada:=0; END;
Block PL/SQL pada object TxtKdBrg Dengan Trigger: Key-Next-Item IF ada<> 0 THEN BEGIN SELECT nmbrg, satuan, hrgsat INTO :blokpesan.txtnmbrg, :blokpesan.txtsatuan, :blokpesan.txthrgsat FROM barang WHERE kdbrg=:blokpesan.txtkdbrg; EXCEPTION WHEN NO_DATA_FOUND THEN :blokpesan.txtnmbrg :=‘ ‘; :blokpesan.txtsatuan :=‘ ‘; :blokpesan.txthrgsat :=‘ '; END; go_item('blokpesan.txtjml_pesan'); ELSE SET_ALERT_PROPERTY('pesan',ALERT_MESSAGE_TEXT,'Kode barang tersebut tidak ada..'); psn:= SHOW_ALERT('pesan'); RAISE FORM_TRIGGER_FAILURE; GO_ITEM('blokpesan.txtkdbrg'); END IF;
Membuat Block PL/SQL Pada Object TxtJml_Pesan Dengan Trigger: Key-Next-Item 1 2
Block PL/SQL pada object TxtQty Ketika Trigger Key-Next-Item DECLARE jumlah number:=0; total number:=0; BEGIN :blokpesan.txttotal := :blokpesan.txthrgsat * :blokpesan.txtjml_pesan; FIRST_RECORD; WHILE :blokpesan.txthrgsat IS NOT NULL LOOP IF :GLOBAL.koreksi = 'T' THEN jumlah :=jumlah+ :blokpesan.txtjumlah; :blokpesan.txttotal :=jumlah; NEXT_RECORD; ELSE jumlah :=jumlah + :blokpesan.txttotal; END IF; END LOOP; :bloknota.txtgrandtot :=jumlah; END;
Membuat Block PL/SQL Pada Object Bsimpan Dengan Trigger: When-Button-Pressed 1 2
Block PL/SQL pada object BSimpan ketika Trigger: When-Button-Pressed DECLARE adaNota NUMBER:=0; adaPesan NUMBER:=0; BEGIN SELECT COUNT(*) INTO adaNota FROM nota WHERE no_nota = :bloknota.txtno_nota; EXCEPTION WHEN NO_DATA_FOUND THEN x:=0; END; IF adaNota <> 0 THEN UPDATE nota SET tgl_nota = :bloknota.txttgl_nota, kdplg=:bloknota.txtkdplg WHERE no_nota = :bloknota.txtno_nota; COMMIT; CLEAR_MESSAGE; ELSE INSERT INTO nota(no_nota,tgl_nota, kdplg) VALUES(:bloknota.txtno_nota,:bloknota.txttgl_nota,:bloknota.txtkdplg); END IF;
Block PL/SQL Continue … GO_BLOCK('blokpesan'); FIRST_RECORD; WHILE :blokpesan.txtkdbrg is NOT NULL LOOP BEGIN SELECT COUNT(*) INTO adaPesan FROM pesan WHERE no_nota=:bloknota.txtno_nota AND kdbrg=:blokpesan.txtkdbrg; EXCEPTION WHEN NO_DATA_FOUND THEN adaPesan:=0; END; IF adaPesan <> 0 THEN UPDATE pesan SET jml_pesan=:blokpesan.txtqty WHERE no_nota=:bloknota.txtno_nota AND kdbrg=:blokpesan.txtkdbrg; COMMIT; CLEAR_MESSAGE; -- *) Lanjutan…
Block PL/SQL Continue … -- *) Lanjutan … ELSE INSERT INTO pesan(no_nota, kdbrg, jml_pesan) VALUES(:bloknota.txtno_nota, :blokpesan.txtkdbrg, :blokpesan.txtjml_pesan); COMMIT; CLEAR_MESSAGE; END IF; CLEAR_RECORD; IF :blokpesan.txtkdbrg IS NULL THEN EXIT; END LOOP; CLEAR_FORM; counter_nonota(); GO_ITEM('bloknota.txtno_nota'); END;
Block PL/SQL pada object BBatal Dengan Trigger: When-Button-Pressed BEGIN CLEAR_FORM; CLEAR_RECORD; Counter_Nonota(); go_item('bloknota.txtno_nota'); END;
Block PL/SQL pada object BKeluar Dengan Trigger: When-Button-Pressed BEGIN EXIT_FORM; END;
Menyimpan Modul Form Cetak Nota Dari menu File Save As Pilih Direktori Penyimpanan, (misalkan di E:\0422502029ORA ), Beri nama FrmCetakNota.FMB, dan Disimpan dengan tipe .FMB. Seperti kotak dialog berikut :
Menyimpan Form Module Builder
Menyimpan Form Module Builder 1 2
Mengkompile PL/SQL 1 2
Proses Kompilasi Berhasil
Program Setelah Dijalankan
Selamat Mencoba