Oracle : Form/Report Developer Pertemuan 10 Dibuat oleh: Lis Suryadi, M.Kom
Materi: Membuat Form Cetak Nota
Sasaran Belajar Agar mahasiswa : Dapat mengerti dan membuat form master-detail untuk membangun sebuah aplikasi dengan menggunakan objek-objek yang ada di Form Builder. Dapat mengerti dan memahami penggunakan perintah-perintah PL/SQL dan perintah-perintah Data Manipulation Language(DML) di dalam Form. Dapat membuat cetakan formulir nota dengan menggunakan report builder.
Membuat Block Data pada Form Cetak Nota Buatlah 2 buah Block Data dengan menggunakan Wizard, kemudian beri nama sebagai berikut : BlokNota , item-itemnya adalah : TxtNo_Nota, TxtTgl_Nota, TxtKdPlg, TxtNmPlg, TxtAlamat, TxtGrandtot, BSimpan, BCetak, BBatal dan BKeluar. BlokPesan, item-itemnya adalah : TxtKdbrg, TxtNmbrg, TxtSatuan, TxtHrgsat, TxtJml_Pesan dan TxtTotal.
Langkah-1: Me-running OC4J Instance
Sebelum Membuka Form Builder Running terlebih dulu OC4J Instance Caranya: Dari Oracle Developer Suite --> Forms Developer --> Start OC4J Instance, sehingga akan tampil kotak dialog seperti berikut :
Langkah ke-2: Memanggil Forms Builder Dari : Start -> Program -> Oracle Developer Suite -> Forms Developer -> Forms Builder. Sehingga akan tampil kotak dialog sebagai berikut :
Memanggil Form Builder
Langkah ke-3: Login Koneksi
Langkah ke-4: Membuat Form Baru
Memberi Nama Module 2 1
Membuat Object Alert 2 1
Membuat Data Block “BlokNota”
Membuat Data Block Menggunakan Wizard
Membuat Data Block Menggunakan Wizard
Memilih Tipe Data Block
Mencari Tabel atau View
Memilih Tabel Nota
Memilih Kolom Yang Ada Di Tabel 1 2
Memilih Kolom Sebagai Item Di Form
Memberi Nama Data Blok 1 2
Membuat Layout
Memulai Layout Wizard
Memilih Canvas Untuk Layout
Memilih Item Yang Akan Ditampilkan 1 2
Memilih Item Yang Akan Ditampilkan
Memberi Judul, Panjang dan Lebar Item
Memilih Model Layout
Memberi Judul Pada Frame
Tahap Akhir Pembuatan Data Block
Layout Yang Terbentuk
Membuat Data Block “BlokPesan”
Membuat Data Block BlokPesan
Membuat Data Block Menggunakan Wizard
Memilih Tipe Data Block
Mencari Tabel atau View
Memilih Tabel Pesan
Memilih Kolom Yang Ada Di Tabel 1 2
Memilih Kolom Yang Akan Ditampilkan
Memberi Nama Data Block
Membuat Layout Form
Memulai Layout Wizard
Memilih Canvas Untuk Meletakkan Desain Form
Memilih Item Yang Akan Ditampilkan 1 2
Memilih Item Yang Akan Ditampilkan
Memberi Judul, Panjang dan Lebar Item
Memilih Model Layout
Memasukkan Jumlah Record Yang Akan Ditampilkan
Tahap Akhir Pembuatan Data Block
Desain Form Cetak Nota Yang Terbentuk
Mendesain Ulang Form Cetak Nota
Struktur Data Block
Membuat Block PL/SQL dengan Trigger When-New-Form-Instance
Dengan Trigger When-New-Form-Instance Block PL/SQL Dengan Trigger When-New-Form-Instance DECLARE judul VARCHAR2(100); BEGIN :global.koreksi:='F'; judul :=‘Form Cetak Nota‘; SET_WINDOW_PROPERTY('WINDOW1', WINDOW_STATE, MAXIMIZE); SET_WINDOW_PROPERTY('WINDOW1', TITLE, JUDUL); COUNTER_NONOTA(); GO_ITEM('bloknota.txtno_nota'); END;
Membuat Prosedur Counter_NoNota() 2 1
Membuat Prosedur Counter_NoNota PROCEDURE COUNTER_NONOTA IS x NUMBER:=0; vnomor CHAR(7); TH CHAR(2); BEGIN SELECT MAX(to_number(SUBSTR(no_nota,5,3))) INTO x FROM nota; EXCEPTION WHEN NO_DATA_FOUND THEN x:=0; END; TH:=SUBSTR(TO_CHAR(SYSDATE,’YYYY’),3,2); x:=NVL(x,0)+1; IF LENGTH(x) = 1 THEN vnomor :=‘NT'||TH||’00’||TO_CHAR(x); ELSIF LENGTH(x) = 2 THEN ELSE vnomor :=TO_CHAR(x); END IF; :bloknota.txtno_nota:= vnomor;
Membuat Block PL/SQL Pada Object TxtNo_Nota 1 2
Block PL/SQL pada object TxtNo_Nota ketika Trigger Key-Next-Item DECLARE ada NUMBER:=0; total NUMBER:=0; BEGIN SELECT COUNT(*) INTO ada FROM nota WHERE no_nota=:bloknota.txtno_nota; EXCEPTION WHEN NO_DATA_FOUND THEN ada:=0; END; IF ada <> 0 THEN -- Jika data nota ada, tampilkan datanya… SELECT nota.tgl_nota, nota.kdplg, pelanggan.nmplg, pelanggan.alamat INTO :bloknota.txttgl_nota, :bloknota.txtkdplg,:bloknota.txtnmplg, bloknota.txtalamat FROM nota, pelanggan WHERE nota.no_nota=:bloknota.txtno_nota AND nota.kdplg=pelanggan.kdplg; EXCEPTION WHEN NO_DATA_FOUND THEN :bloknota.txttgl_nota :=‘ ‘; :bloknota.txtkdplg :=‘ ‘; :bloknota.txtnmplg : :=‘ ‘; :bloknota.txtalamat :=‘ ‘; END;
Block PL/SQL pada object TxtNo_Nota Cont… GO_BLOCK('blokpesan'); FIRST_RECORD; DECLARE CURSOR cur_pesan IS SELECT pesan.kdbrg, barang.nmbrg, barang.satuan, barang.hrgsat, pesan.jml_pesan, barang.hrgsat*pesan.jml_pesan as totalharga FROM pesan, barang WHERE pesan.kdbrg=barang.kdbrg AND pesan.no_nota=:bloknota.txtno_nota; vtampung cur_pesan%ROWTYPE; BEGIN :GLOBAL.jumrec :=1; OPEN cur_pesan; LOOP FETCH cur_pesan INTO vtampung; EXIT WHEN cur_pesan%NOTFOUND; :blokpesan.txtkdbrg := vtampung.kdbrg; :blokpesan.txtnmbrg := vtampung.nmbrg; :blokpesan.txtsatuan := vtampung.satuan; :blokpesan.txthrgsat := vtampung.hrgsat; :blokpesan.txtjml_pesan := vtampung.jml_pesan; :blokpesan.txttotal := vtampung.totalharga; NEXT_RECORD; total :=total+(vtampung.hrgsat * vtampung.jml_pesan); END LOOP; :bloknota.txtgrandtot :=total; END;
Block PL/SQL pada object TxtNo_Nota (Lanjutan) GO_ITEM('blokpesan.txtkdbrg'); ELSE -- Jika data nota tidak ada, maka entri data baru… GO_ITEM('bloknota.txttgl_nota'); END IF; END;
1 Mengatur Properti Object TxtTGL_NOTA 2
Membuat Block PL/SQL Pada Object TxtTGL_NOTA 1 2
Block PL/SQL pada object TxtTgl_Nota ketika Trigger Key-Next-Item BEGIN GO_ITEM('bloknota.txtkdplg'); END;
Membuat Block PL/SQL Pada Object TXTKDPLG dengan Trigger: Key-Next_Item 1 2
Block PL/SQL pada object TxtKdPlg ketika Trigger: Key-Next-Item DECLARE ada NUMBER :=0; psn NUMBER :=0; BEGIN SELECT COUNT(*) INTO ada FROM pelanggan WHERE kdplg=:bloknota.txtkdplg; EXCEPTION WHEN NO_DATA_FOUND THEN ada:=0; END; IF ada <> 0 THEN SELECT nmplg, alamat INTO :bloknota.nmplg, :bloknota.alamat FROM pelanggan WHERE kdplg=:bloknota.kdplg; EXCEPTION WHEN NO_DATA_FOUND THEN :bloknota.nmplg :=‘ ’; :bloknota.alamat :=‘ ’; END; GO_ITEM(‘blokpesan.kdbrg’); ELSE SET_ALERT_PROPERTY('PESAN',ALERT_MESSAGE_TEXT,'Kode pelanggan tidak ada..'); psn:=SHOW_ALERT('PESAN'); RAISE FORM_TRIGGER_FAILURE; GO_ITEM('bloknota.txtdplg'); END IF;
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
Selamat Mencoba