Setiap sistem aplikasi yang dibuat haruslah dapat menyimpan data yang di-entry ke dalam suatu wadah, dalam hal ini sebuah table. Selain table, data yang di-entry dapat disimpan dalam sebuah file yang telah ditentukan saat sistem akan dibuat. Tabel yang dimaksud di atas adalah table yang merupakan bagian dari database. Selanjutnya database yang digunakan oleh buku ini adalah database Oracle 10g. Pembahasan Oracle Form 6i dengan Database Oracle 10g dilakukan dua macam, yaitu pembuatan Form Wizard dan Form Manual. Keduanya akan dibahas di buku ini guna pengenalan terhadap Oracle Form 6i lebih dalam. Selain itu, buku ini juga akan membahas pembuatan Form Master Detail. Dalam pembuatan Form bisa dilakukan secara langsung lebih dari satu buah. Baik Form yang satu dengan form yang lain ada hubungannya ataupun tidak. Begitupun dengan menjalankan formform dapat dijalankan lebih dari satu form, secara bersamaan. Jika ingin menjalankan form pastikan form tersebut tidak dalam keadaan running. Jika form yang akan dijalankan berada dalam keadaan running, form tersebut akan menampilkan kesalahan/error. Walaupun oracle developer form dapat membuat sekaligus beberapa form, tetapi untuk dapat berkoneksi ke database oracle hanya dapat diberikan izin satu user saja. Jika kita hendak pindah ke user lain, kita dapat mengganti user serta nama database yang lain. Untuk selanjutnya bab ini akan menggunakan user scott dan passwordnya tiger, sesuai dengan settingan saat database oracle 10g diinstal (lihat Gambar 1.10). 71
3. Pilihlah menu use data block wizard dan tekanlah button OK, maka akan tampil window di bawah ini.
72
4. Window ini merupakan tampilan utama. Jika kita memilih uncheck, tampilan window ini untuk ke depannya akan hilang. Untuk melanjutkannya, pilihlah tombol NEXT, maka akan tampil gambar di bawah ini.
5. Pilihlah menu TABLE OR VIEW karena form ini memang akan memfokuskan pada atribut tersebut. Pilih tombol NEXT, maka akan tampil gambar di bawah ini.
73
6. Pada item TABLE OR VIEW isilah nama table. Untuk melihat field pada table tersebut, pilihlah tombol REFRESH. 7. Jika tidak tahu nama table, pilihlah tombol BROWSE, maka akan tampil gambar berikut ini.
8. Pilihlah salah satu atribut pada window ini, pada buku ini memilih table emp. 9. Semua field pada tombol emp akan berada pada item available column. 10. Untuk menampilkan field pada canvas/form pilihlah nama field pada list Available Column dan tekanlah tombol > 74
atau tombol >> untuk memilih semua nama field. Nama field yang terpilih akan pindah ke list database items. Gambar di bawah ini merupakan hasil pemilihan semua nama field yang akan ditampilkan pada form.
11. Pilihlah button Next jika sudah yakin item yang akan ditampilkan pada form. Setelah itu tampilan window akan tampil seperti di bawah ini.
12. Karena sejak awal pembuatan form belum ada canvas, maka window ini menawarkan pembuatan object Canvas. Untuk selanjutnya pilihlah Finish. Setelah menekan tombol Finish, akan tampil window berikut ini.
75
13. Ini adalah tampilan pertama membuat Canvas secara Wizard. Jika menu display this page next time tidak dicentang, selanjutnya tampilan window ini tidak akan ada. Untuk meneruskan pekerjaan ini, tekanlah tombol Next.
14. Window ini memilih canvas jika canvas sudah dibuat sebelumnya. Dan membuat sendiri canvas bila belum ada, berikut dengan type canvas yang akan digunakan. Untuk mempercepat pada item canvas, isilah data dengan NEW CANVAS dan item type dengan pilihan CONTENT. Setelah selesai, tekanlah tombol NEXT, maka akan tampil sesuai pada gambar berikut.
76
15. Pada item data block harus sama dengan nama table yang dipilih sebelumnya (lihat Gambar 3.6). Pindahkanlah data-data pada list available items ke list displayed items untuk dapat ditampilkan pada form. Buku ini menganjurkan agar semua data dipindahkan ke item Displayed Form. Tekanlah tombol NEXT, maka akan tampil gambar berikut ini.
16. Maksud window ini adalah mengatur panjang dan lebar semua item yang dipilih untuk ditampilkan pada form. Window berikutnya tampak pada gambar berikut.
77
17. Selanjutnya tampilan ini memilih jenis tampilan untuk semua item. Tabular berarti item-item akan ditempatkan ke samping semua, sedangkan pilihan form akan menempatkan item-item sesuai panjang dan lebar objek window. Buku ini menyarankan untuk memilih menu form dan tekanlah tombol NEXT, akan tampil window di bawah ini.
18. Item form title untuk memberikan judul pada form. Item record displayed berguna untuk menampilkan jumlah semua item yang akan ditampilkan dan item selanjutnya berfungsi untuk menentukan lebar jarak sebuah item dengan item yang lain.
78
19. Tampilan ini akan memberi tahu jika proses pembuatan form wizard telah selesai dan berhasil. Jika dijalankan, program ini akan tampil seperti pada gambar berikut ini.
79
1. Field yang memiliki property not null pada table harus ditampilkan pada form agar field tersebut di isi datanya. Jika field yang memiliki property not null tidak ditampilkan maka akan terjadi kesalahan/error pada form tersebut akan menyimpan data. 2. Primary Key dan Secondary Key. Sebaiknya, jika field memiliki primary key, isilah field tersebut dengan data yang unik dari data yang lain. Sedangkan secondary key, sebaiknya data tersebut diisi menggunakan fungsi LOV dari table primary key yang ditunjuk sebelumnya. Untuk form yang sederhana cukup memiliki object canvas, block, dan item-item. Sebab, object window telah ada saat pertama form builder dijalankan. Untuk memulai, bukalah baru form builder lalu ikutilah langkahlangkah berikut ini: 1. Buatlah object canvas dan block baru, masing-masing 1 buah. 2. Pada object block, ikutilah setting property sebagai berikut.
Property Name Query Data Source Name Block EMPLOYEE EMP
Maksud isi property di atas, yaitu block tersebut memiliki nama employee dan terkoneksi ke table EMP. 3. Buatlah lima buah item pada block employee dan ikutilah property sebagai berikut.
Property Name Data Type Maximum Length Format Mask Column Name Canvas X Position Y Position Width Height Item 1 EMPNO Char 4 Empno Canvas2 69 20 41 15 Item 2 ENAME Char 10 Ename Canvas2 110 20 119 15 Item 3 HIREDATE Date 10 dd-mm-yyyy Hiredate Canvas2 69 37 53 15 Item 4 DEPTNO Char 2 Deptno Canvas2 69 54 41 15 Item 5 DEPTNAME Char 14
80
Pada item Deptname tidak memiliki nilai pada property Column Name, dimaksudkan bahwa item tersebut tidak terkoneksi pada table Emp. Memang pada table Emp tidak memiliki field Deptname. Maksud item ini, yaitu untuk menjelaskan nama departemen dari karyawan yang akan ditampilkan. Nama departemen tersebut akan diambil dari table lain, yaitu table Dept. 4. Untuk menampilkan nama departemen untuk item Deptname, buatlah trigger pada item Deptno dengan nama trigger POSTCHANGE dengan isi program sebagai berikut.
begin select dname into :employee.deptname from dept where deptno = :employee.deptno ; exception when no_data_found then :employee.deptname := 'NO DEPT' ; end ;
Dari langkah-langkah di atas, block sudah terkoneksi ke table. Begitu pun dengan item-item sudah terkoneksi ke field-field yang berada pada table dan form dapat dijalankan. Form yang dijalankan akan menghasilkan gambar berikut ini.
Jika form dapat berjalan sesuai dengan gambar di atas, selanjutnya simpanlah form ini dengan nama file B3MAN.FMB.
ini akan terhubung dengan table yang saling berhubungan. Maksud form master-detail, yaitu satu buah block yang menjadi master dan block lain menjadi detail. Satu record pada block master akan memiliki banyak record pada block detail. Baik block master maupun block detail akan tampil pada satu canvas dan tampil bersama-sama agar dapat terlihat datanya. Selanjutnya dalam simulasi ini, form manual yang dibuat sebelumnya akan digunakan kembali. Block yang berada pada form tersebut, yaitu block Employee akan digunakan sebagai master block. Jadi, sebaiknya form di atas dibuka kembali untuk simulasi selanjutnya. Block detail akan terhubung pada table family. Untuk selanjutnya ikutilah beberapa langkah berikut: 1. Buatlah table family dengan ketentuan di bawah ini.
Nama Field Empno Nama Tgl_lahir Status Null Not null Type Varchar2(4) Varchar2(15) Date Varchar2(10)
Dari tabel di atas, script pembuatan table family akan menjadi seperti berikut ini.
create table family ( empno varchar2(4) not null, nama varchar2(15), tgl_lahir date, status varchar2(10) );
2. Pada form B3man.fmb buatlah block baru dan lengkapilah property-nya sebagai berikut.
Property Name Query Data Source Name Number of Record Displayed Show Scroll Bar Scroll Bar Canvas Scroll Bar Orientation Scroll Bar X Postition Scroll Bar Y Position Scroll Bar Width Scroll Bar Length Block KELUARGA family 5 Yes Canvas2 Vertical 20 97 16 74
82
3. Pada block keluarga ini buatlah empat item yang memiliki property sesuai dengan table berikut ini.
Property Name Item Type Data Type Maximum Length Format Mask Column Name Canvas X Position Y Position Width Height Item 1 EMPNO Text Item Char 4 Empno Canvas2 69 20 41 15 Item 2 ENAME Text Item Char 10 Ename Canvas2 110 20 119 15 Item 3 HIREDATE Text Item Date 10 dd-mm-yyyy Hiredate Canvas2 69 37 53 15 Item 4 DEPTNO Text Item Char 2 Deptno Canvas2 69 54 41 15
4. Untuk membuat relasi block employee dan keluarga, taruhlah kursor pada submenu Relation pada object block employee. 5. Pilihlah menu Create pada window navigator dan akan tampil sebuah window. 6. Pada item Detail Block isilah Keluarga, atau untuk memilih nama block, pilihlah tombol Select. 7. Isilah item Join Item dengan query employee.empno = keluarga.empno. sebagai berikut
8. Jika pengaturan selesai, pilihlah tombol OK dan akan tampil beberapa trigger secara otomatis seperti tampak berikut ini. 83
84
3. Buatlah block baru dan berilah nama FOC. 4. Pada block FOC buatlah 2 item yang memiliki property seperti di bawah ini. Property Name Item Type Data Type Maximum Length Label Canvas X Position Item 1 Persen Text Item Char 30 Canvas2 69 Item 2 Proses Push Button
Proses Canvas2 68 85
71 53 15
104 53 15
5. Pada item Proses buatlah trigger item dengan nama trigger WHEN-BUTTON-PRESSED lalu ketiklah program berikut ini.
declare cursor simulasi is select empno, ename, hiredate, deptno from emp ; vemp_no varchar2(4); vemp_name varchar2(30); vtgl_masuk date ; vdept_no number ; total_row number := 0 ; jumlah number := 0 ; begin begin delete from karyawan ; commit ; end ; begin select count(*) into total_row from emp ; end ; open simulasi ; loop fetch simulasi into vemp_no, vemp_name, vtgl_masuk, vdept_no ; exit when simulasi%notfound ; jumlah := jumlah + 1 ; begin insert into karyawan values (vemp_no, vemp_name, vtgl_masuk, vdept_no) ; commit ; end ; :foc.persen := to_char((jumlah/total_row)*100, '999,999')||' %'; end loop ; close simulasi ; end ;
6. Jika dijalankan dan memilih button Proses, akan tampil error. Semua itu karena saat program berjalan ada proses commit. Untuk menghilangkan error tersebut buatlah trigger form dengan nama POST-FORMS-COMMIT dan ketik program ini.
Begin :sistem.message_level := '25'; End;
86
7.
CATATAN
Block employee dan block Foc tidak ada hubungan. Item proses akan tampil lambat jika datanya banyak, dan akan tampil cepat jika data pada table EMP sedikit Hasilnya dapat dilihat pada PL/SQL di table karyawan dengan perintah:
Select * from Karyawan ;