SQL*Forms V3.0


Pengenalan

Selain daripada CASE*Generator, anda boleh bina FORM dengan menggunakan SQL*Forms. Terdapat dua cara untuk masuk ke SQL*Forms iaitu melalui CASE*Dictionary (menu Impl, sqL*forms v3.0) atau melalui prompt Unix. Arahan pada prompt Unix adalah seperti berikut:-

sqlforms30 -c sun:sun (di workstation)

atau

sqlforms30 -c vt100:vt100 (di PC)

Di sini juga akan diterangkan bagaimana cara mengubahsuai FORM yang sudah dijana dengan CASE*Generator.

Isi Kandungan

Penerangan Berkenaan Menu

  1. Action

    Di dalamnya terdapat menu untuk operasi seperti dapatkan FORM (Load atau Open), jana (Generate), simpan (Save), hapus (Delete), Salin (Copy) dan laksana (Execute).

  2. fOrm

    Menu ini hanya boleh digunakan setelah anda Load atau Open FORM.Terdapat dua menu di dalamnya iaitu Modify dan Trigger. Anda tidak perlu ubah apa-apa di sini.

  3. Block

    Terdapat tiga menu iaitu Modify, Trigger dan Default. Hanya menu Modify sahaja yang perlu dipilih. Ia mengandungi rekod bagi blok yang terdapat dalam FORM anda. Blok pertama biasanya mempunyai simbol $ pada namanya, misalnya CG$CTRL. Ia wujud dalam FORM yang dibina dengan menggunakan CASE*Generator. Blok lain pula ialah bagi table yang digunakan dalam FORM ini. Gunakan [DOWN] atau [UP] untuk memilih blok yang hendak di ubahsuai.Kemudian tekan [ACCEPT].

  4. Field

    Di bawahnya terdapat dua menu iaitu Modify dan Trigger. Pilih menu Modify. Field yang akan dipaparkan adalah field bagi blok yang anda pilih dalam menu Block, Modify. Di sini anda boleh ubahsuai tertib (seq) bagi nilai field mana yang hendak dimasukkan dulu, format output dan lain-lain lagi.

  5. Trigger

    Dalam menu ini anda boleh bina trigger untuk melaksanakan pelbagai proses seperti mendapatkan rekod dari table lain, melakukan pengiraan dan sebagainya. Bagi FORM yang dijana dengan menggunakan CASE*Generator, terdapat beberapa TRIGGER di dalamnya. Anda tidak perlu ubah apa-apa pada TRIGGER yang sudah ada ini.

  6. Procedure

    Dalam menu Procedure, terdapat prosedur-prosedur yang melakukan proses QUERY, menentukan sama ada sesuatu rekod itu wujud atau tidak dan jika wujud, adakah rekod tersebut unik atau tidak. Anda boleh lakukan perubahan di sini jika anda benar-benar faham proses yang dilakukan oleh prosedur tersebut. Sebarang perubahan pada prosedur biasanya akan melibatkan TRIGGER kerana kebanyakan TRIGGER menggunakan prosedur ketika dilaksanakan.

  7. Image

    Terdapat dua menu di dalamnya iaitu Modify dan Painter. Menu yang diperlukan untuk mengubah screen layout ialah menu Painter

    Kembali Ke Atas

Langkah-langkah Pengubahsuaian FORM

Berikut ialah langkah-langkah yang diperlukan untuk mengubahsuai FORM yang sudah dibina dengan menggunakan CASE*Dictionary.

  1. Dapatkan FORM

    Ada dua cara bagaimana anda boleh dapatkan FORM iaitu dengan menu Open atau Load.

    • Open (Action, Open).

      Menu ini digunakan untuk mendapatkan FORM yang tersimpan dalam database Oracle. Anda boleh tekan [LIST] untuk dapatkan senarai FORM yang ada. Setelah anda lakukan pengubahsuaian, anda perlu generate menggunakan menu Generate (Action, Generate). Kemudian save dengan menggunakan menu Save (Action, Save). Jika tidak, perubahan terkini yang anda lakukan tidak akan disimpan.

    • Load (Action, Load).

      Menu ini digunakan untuk mendapatkan FORM yang berada dalam direktori anda. Ia tersimpan dalam bentuk fail kod sumber (source code) yang mempunyai penambahan .inp pada namanya. Anda perlu tahu nama fail tersebut.

      Isikan nama FORM tanpa penambahannya. Misalnya bagi TRY0010.inp, isikan TRY0010. Huruf kecil dan besar dianggap berbeza. Selepas pengubahsuaian dilakukan, jana FORM tersebut menggunakan menu Generate (Action, Generate). Anda tidak perlu Save FORM ini kerana semua perubahan disimpan dalam fail kod sumber dalam direktori anda.

    Saya galakkan anda guna cara kedua (Load) kerana tidak perlu Save selepas dijana (Generate).

  2. Pengubahsuaian Skrin

    Perubahan pada screen layout boleh dilakukan dalam menu Painter (Image, Painter). Anda perlu pastikan terlebih dahulu apa yang ingin anda ubah. Jika ia melibatkan field, pastikan anda telah memilih blok yang mengandungi field tersebut di dalam menu Block, Modify. Jika perubahan hanya pada prompt field, tajuk FORM atau kotak FORM anda, ia boleh dilakukan tanpa perlu mengubah blok semasa.

    Cara mengubah kedudukan field

    Andaikan anda mempunyai field seperti di bawah dan anda ingin pindahkan field Name ke kedudukan X yang terletak di bawah field IC ITM.

                                   |                                |
                                   V                                V
           IC ITM : ________       Name : ___________________________
    
           X
    
    
    Caranya adalah seperti berikut:-

    1. Gerakkan kursor ke huruf N pada prompt Name sebagaimana yang ditunjukkan dengan anak panah.
    2. Tekan kunci [SELECT] untuk tandakan tempat permulaan bagi bahagian yang hendak dipindahkan.
    3. Pastikan di bahagian bawah FORM di sebelah kanan, nilai bagi field select: ialah 1.
    4. Gerakkan kursor ke hujung field Name tersebut dan tekan kunci [SELECT] sekali lagi untuk tandakan tempat akhir bahagian yang hendak dipindahkan.
    5. Pastikan field select:sekarang bernilai 2.
    6. Seterusnya gerakkan kursor ke kedudukan X. Tekan [CUT]. Bahagian yang anda tandakan tadi akan hilang.
    7. Tekan kunci [PASTE]. Bahagian yang hilang tadi akan dipaparkan di X.
    8. Jika anda ingin batalkan operasi terakhir yang telah dilakukan, tekan [UNDO].
    9. Jika operasi terakhir anda ialah [PASTE] dan anda batalkannya dengan UNDO, jangan tekan [CUT] kerana ia akan delete terus field anda dari FORM berkenaan.
    10. Apa yang anda perlu lakukan hanyalah pindahkan kursor ke tempat yang difikirkan sesuai dan tekan [PASTE] supaya bahagian yang ditandakan berpindah ke tempat baru.

    Cara mengubah prompt dan tajuk

    Prompt dan tajuk yang diberi biasanya mengikut nama column dalam table dan nama modul. Ia boleh diubah. Misalnya anda ingin mengubah prompt Ic Itm kepada IC ITM. Gunakan [SPACEBAR] untuk memadamnya dan tulis kembali seperti biasa. Perkara yang sama boleh dilakukan pada tajuk FORM anda. Pastikan dipenjuru kanan bahagian bawah prompt terdapat tanda <Rep>. Ia boleh ditukar kepada <Ins> dengan menekan [INSERT/REPLACE] supaya anda boleh selit aksara di antara aksara-aksara lain. Gunakan [INSERT/REPLACE] untuk menukar mod <Rep> kepada <Ins> dan sebaliknya.

    Cara melukis garis atau kotak

    Untuk melukis garis atau kotak, caranya hampir sama dengan cara untuk mengubah kedudukan field. Tandakan dua tempat dengan menekan [SELECT].Kemudian tekan [DRAWBOX/LINE]. Garis yang boleh dibuat hanyalah dalam bentuk melintang atau membujur sahaja.

  3. Pengubahsuaian Field

    Dalam menu Field anda boleh ubahsuai field tertentu. Pastikan anda telah pilih blok bagi field yang hendak diubahsuai. Di antara pengubahsuaian yang boleh dilakukan ialah dengan meletakkan nilai default pada column Default. Misalnya anda boleh letak nilai F (female) bagi field SEX. Dengan itu setiap kali anda ingin mengisi rekod baru dalam FORM berkenaan, nilai tersebut telah sedia ada. Jika nilai sebenar ialah M (male), anda boleh overwrite sahaja nilai F tersebut.

    Andaikan anda ada field TELEFON. Bagi nilai 074242018, anda mahu nilainya dipaparkan dalam bentuk 07-4242018. Maka isikan 09"-"9999999 pada column Format Mask.

    Biasanya selepas pengubahsuaian skrin dilakukan, tertib field dalam FORM berkenaan akan berubah. Anda perlu betulkan semula sequence pada column Seq Num mengikut tertib menaik 1,2,3 dan seterusnya iaitu mengikut field mana yang hendak diisi nilainya terlebih dahulu.

    Pada column Select Attributes pula terdapat senarai ciri-ciri yang ada bagi field berkenaan. Tekan [SELECT] untuk dapatkan senarai ciri-ciri tersebut seperti yang dipaparkan di bawah.

    +----------------------+
    | [ X ] Base Table     |
    | [   ] Primary Key    |
    | [ X ] Displayed      |
    | [ X ] Required       |
    | [ X ] Input Allowed  |
    | [ X ] Update Allowed |
    | [   ] Update if Null |
    | [ X ] Query Allowed  |
    | [ X ] Uppercase      |
    | [ X ] Echo Input     |
    | [   ] Fixed Length   |
    | [   ] Automatic Skip |
    | [ X ] Automatic Hint |
    +----------------------+
    
    Nilai X menandakan field ini mempunyai ciri tersebut. Jika ia boleh dibiarkan kosong apabila anda mengisi FORM berkenaan, buangkan X pada atribut Required dengan menekan [SPACEBAR]. Bagi ciri Uppercase pula, pastikan ia bernilai X supaya semua input yang dimasukkan adalah dalam huruf besar. Ini adalah kerana Oracle membezakan data dalam huruf besar dan kecil sewaktu proses QUERY atau RETRIEVE dilakukan. Kesemua ciri-ciri ini telah ditetapkan sewaktu penjanaan FORM menggunakan CASE*Generator mengikut maklumat yang telah anda isi dalam CASE*Dictionary.

  4. Bina TRIGGER

    TRIGGER digunakan untuk melakukan proses selain dari proses asas yang dilakukan oleh FORM seperti INSERT, RETRIEVE, UPDATE dan DELETE. Proses tersebut ialah seperti mengira jumlah Jam Kredit, CGPA bagi STUDENT dan sebagainya.Terdapat banyak TRIGGER yang boleh digunakan. Apa yang akan diterangkan di sini ialah TRIGGER KEY-NXTFLD.

    Pengiraan pada rekod semasa

    
      X : _________      Y : _________        Z : _________
    
    Andaikan anda ingin jumlahkan nilai bagi column X dan Y di mana hasilnya akan dimasukkan ke dalam column Z. TRIGGER KEY-NEXTFLD akan digunakan pada column Y di mana apabila kita tekan [RETURN] selepas mengisi nilai di dalamnya, TRIGGER ini akan melakukan pengiraan. Nilai bagi hasil pengiraan akan dipaparkan terus dalam column Z. Caranya adalah seperti berikut:-

    1. Mula-mula pilih menu Block, Modify. Pilih blok di mana column tersebut berada.
    2. Kembali ke menu utama dengan menekan [ACCEPT].
    3. Pilih menu Trigger. Dalam skrin tersebut terdapat banyak TRIGGER (yang dihasilkan oleh CASE*Generator).
    4. Gunakan [DOWN]untuk ke rekod terakhir sekali.
    5. Guna [INSERTRECORD] untuk menambah satu TRIGGER baru.
    6. Tekan [LIST] untuk dapatkan senarai TRIGGER yang ada. Isi column Trigger Name dengan KEY-NXTFLD (anda boleh terus taip KEY-NXTFLD tanpa mengambilnya dari senarai nama TRIGGER).
    7. Pergi ke column Field Name. Tekan [LIST] untuk dapatkan senarai nama column. Pilih nama column Y.
    8. Tekan [CHANGEDISPLAYTYPE] untuk dapatkan gambaran yang lebih jelas bagi memudahkan kita membuat TRIGGER.
    9. Pergi ke column Trigger Text. Di sini kita akan mengisi program bagi proses pengiraan tersebut. Isikan:-

      :Blk.Z := :Blk.X + :Blk.Y;
      NEXT_FIELD;

    10. Blk ialah nama blok. Ia boleh dirujuk di bahagian bawah skrin iaitu pada prompt Blk:.
    11. Setiap field dimulakan dengan ':' (dua titik bertindih) sebagai menandakan nilai yang hendak dikira ialah nilai semasa iaitu nilai yang kita isi dalam form.
    12. Ia diikuti dengan nama blok, . (titik) dan nama field.
    13. NEXT_FIELD pula ialah arahan supaya selepas kita tekan [RETURN] pada column Y, kursor akan pergi ke column yang berikut iaitu Z.
    14. Kita boleh gunakan arahan GO_FIELD('nama field') untuk pergi ke column tertentu. Andaikan ada column lain bernama R, caranya ialah:-

      GO_FIELD('R'); /* menggantikan arahan NEXT_FIELD */

    15. Setelah siap, tekan [COMMIT] dan jana FORM tersebut.
    16. Execute FORM dan cuba isi nilai pada column berkenaan dan pastikan hasil yang didapati adalah betul.

    Pengiraan melibatkan dua blok (table) atau lebih.

    Andaikan anda ada satu FORM yang menggunakan dua table di mana table berkenaan iaitu REKOD_BULANAN mempunyai hubungan ONE TO MANY dengan table BARANGAN (ini bermakna di dalam table BARANGAN terdapat satu Foreign Key yang menyimpan nilai Bulan dari table REKOD_BULANAN). Anda boleh mengira jumlah HARGA bagi semua NAMA_BARANG yang dijual dalam bulan OCT-95 (atau bulan-bulan lain) untuk dimasukkan ke dalam field JUMLAH seperti yang dipaparkan di bawah:-

    +--Rekod Bulanan---------------------------------------------+
    |                                                            |
    |       Bulan : OCT-95       Jumlah : ________               |
    |                                                            |
    +--Barangan--------------------------------------------------+
    |                                                            |
    |    Nama Barang                              Harga          |
    |    ____________________________              _______       |
    |    ____________________________              _______       |
    |    ____________________________              _______       |
    |    ____________________________              _______       |
    |    ____________________________              _______       |
    |    ____________________________              _______       |
    +------------------------------------------------------------+
    
    Sekali lagi kita akan pilih TRIGGER KEY-NXTFLD yang akan digunakan pada field Bulan. Setelah kita isi nilai dalam field Bulan dan menekan [RETURN] kita mahu pengiraan dilakukan di mana jumlah harga setiap nama barang bagi bulan OCT-95 dipaparkan pada field JUMLAH dalam blok REKOD_BULANAN. Caranya adalah seperti berikut:-

    1. Dalam menu Block, Modify pilih blok yang mempunyai field BULAN.
    2. Kemudian pilih menu TRIGGER. Guna [INSERTRECORD] untuk membina TRIGGER baru.
    3. Isi KEY-NXTFLD pada Trigger Name.
    4. Isi BULAN dalam column Field Name. Tekan [CHANGEDISPLAYTYPE] untuk melihat rekod TRIGGER ini dengan lebih jelas supaya mudah untuk kita mengisi program dalam column Trigger Text.
    5. Andaikan RKB ialah nama blok manakalan BULAN dan JUMLAH ialah nama field dalam blok RKB. Pada column Trigger Text, isi kod aturcara seperti berikut:-
      select sum(HARGA) into :RKB.JUMLAH 
             from Barangan
      where RKB_BULAN = :RKB.BULAN;
      NEXT_BLOCK;
      
    6. Berdasarkan kod aturcara di atas, nilai dalam column HARGA akan dijumlahkan bagi semua nilai dimana nilai RKB_BULAN sama dengan OCT-95.
    7. Jumlah tersebut akan dimasukkan ke dalam field JUMLAH. Pastikan terdapat column HARGA dan RKB_BULAN (foreign key) dalam table Barangan.
    8. Arahan NEXT_BLOCK pula ialah supaya kursor pergi ke blok Barangan selepas menekan [RETURN] pada field BULAN.
    9. Tiada nilai pada field JUMLAH jika tiada rekod pada blok Barangan atau tiada nilai pada field HARGA. Oleh itu pastikan terdapat rekod dalam blok Barangan dan anda sudah [COMMIT] rekod tersebut.

  5. Salin (Copy) FORM

    Anda boleh salin FORM kepada FORM baru dengan nama yang lebih bermakna. Misalnya bagi nama FORM TRY0010 yang digunakan untuk manipulasi rekod dalam table STUDENT, anda boleh salin ke FORM STUDENT. Dengan itu anda tahu bahawa FORM STUDENT digunakan untuk manipulasi table STUDENT. FORM yang lama pula boleh dibiarkan sebagai backup.

    Caranya adalah seperti berikut:-

    1. Dapatkan dulu FORM yang hendak disalin dengan menu Open atau Load.
    2. Pilih menu Action, Copy. Skrin seperti di bawah akan dipaparkan.
      +--------------------------------------+
      |                Copy Form             |
      |                                      |
      |                                      |
      | From: TRY0010                        |
      |                                      |
      | To:                                  |
      |                                      |
      +--------------------------------------+
      
    3. Isikan STUDENT pada column To. Kemudian tekan [RETURN]
    4. Pilih menu Action, Generate. Skrin seperti di bawah akan dipaparkan.
      +--------------------------------------+
      |              Generate Form           |
      |                                      |
      |                                      |
      | Name: STUDENT                        |
      |                                      |
      | File: STUDENT                        |
      |                                      |
      +--------------------------------------+
      
    5. Pastikan nama FORM pada Name dan File adalah sama. Rujuk pada skrin di atas di mana kedua-duanya ialah STUDENT. Tekan [RETURN] untuk jana FORM ini.
Kembali Ke Atas

Masalah-masalah Yang Biasa Di hadapi

Berikut adalah masalah yang biasa dihadapi ketika pengubahsuaian FORM hendak dilakukan.

Kembali Ke Atas



1