Sabtu, 25 Oktober 2008

rELaSi foxpro

Relasi antar tabel didalam mengolah data dengan Visual FoxPro 9.0 memegang peran yang sangat penting. Jika Anda mempunyai banyak tabel dalam suatu
database, dimana isi informasi ada pada beberapa tabel yang terpisah, dan Anda ingin mengumpulkan informasi tersebut dari beberapa tabel menjadi satu informasi yang dibutuhkan untuk membuat suatu laporan, maka perintah relasi ini dapat Anda gunakan.
Langkah pertama adalah membuat file baru yang terdiri dari dua buah field, yakni field no_pen, nama dan keterangan. dimana strukturnya berasal dari
tabel penduduk.dbf, lalu tabel baru tersebut diberi nama tabel dataconv.dbf.
Jalankan program Visual FoxPro 9.0, ketikan pada Jendela Command perintah dibawah ini.
SELECT a
USE c:\dtpenduduk\penduduk.DBF
COPY TO dataconv FIELDS no_pen,nama,kondisi, keterangan FOR kondisi =[MISKIN]
SELECT b
USE c:\dtpenduduk\dataconv.DBF
Penjelasan perintah diatas adalah :
Anda telah melakukan proses pembuatan satu tabel baru dengan nama dataconv.dbf yang didalamnya hanya terdapat empat buah field saja yakni :
field no_pen, nama, kondisi dan keterangan, yang diambil dari tebel penduduk.dbf, dan hanya data yang mempunyai kriteria field kondisi adalah MISKIN.
Ketiklah perintah display status untuk melihat jumlah file yang sedang dibuka saat ini. Perhatikan gambar dibawah ini, ada dua buah file yang sedang
terbuka, tampak tabel dataconv.dbf menempati area kedua dan tabel penduduk.dbf menempati area pertama.
Kemudian lihatlah isi dari kedua tabel tersebut
SELECT
z
a && a= tabel penduduk
BROWSE
SELECT b && b= tabel dataconv
BROWSE
Atau
SELECT penduduk
BROWSE
SELECT dataconv
BROWSE
Perintah diatas diberikan karena kedua buah tabel yakni tabel penduduk.dbf dan tabel dataconv.dbf telah dibuka sebelumnya.
Atau ketikan dari awal seperti perintah dibawah ini :
CLOSE ALL
USE c:\dtpenduduk\penduduk.DBF IN 0
USE c:\dtpenduduk\dataconv.DBF IN 0
SELECT penduduk
BROWSE
SELECT dataconv
BROWSE

8.2 Melakukan relasi dengan proses replace record.
Visual FoxPro 9.0 mengenal ada empat macam relasi, yakni :
Relasi satu ke banyak

Relasi banyak ke satu

Relasi satu ke Satu

Relasi banyak ke banyak

Untuk relasi satu ke satu atau banyak ke banyak sepertinya kurang banyak dipakai, karena terasa kurang lazim.
Biasanya jenis relasi satu ke banyak dan banyak ke satu yang sering dipakai.
Note:
Untuk melakukan relasi antar tabel, Visual FoxPro 9.0 meminta Anda untuk selalu melakukan proses index dari tabel yang akan direlasikan
tersebut.
8.2.1 set relation.
Perintah set relation adalah perintah yang berfungsi melakukan hubungan antar tabel sesuai dengan kunci indexnya. Tentunya dengan perintah ini Anda
dapat melakukan banyak hal didalam proses relasi antar tabel.
Mari kita mencoba melakukan proses relasi antar tabel. Intinya Saya akan mengisikan field keterangan yang ada pada tabel dataconv.dbf dengan data
yang ada pada field pekerjaan yang ada pada tabel penduduk.dbf.
Lakukan pengetikan perintah berikut ini.
USE c:\dtpenduduk\penduduk.DBF IN 0
INDEX on no_pen TO nopenp
USE c:\dtpenduduk\dataconv.DBF IN 0
INDEX on no_pen TO nopend
SELECT dataconv
SET RELATION TO no_pen INTO penduduk
REPLACE keterangan WITH penduduk->pekerjaan FOR no_pen =penduduk->no_pen
BROWSE
Lihatkan hasilnya pada field keterangan yang telah diisi oleh data dari field pekerjaan pada tabel penduduk.
Penjelasan diatas adalah sebagai berikut :
Memanggil tabel data penduduk.dbf pada lokasi paling kecil / nol

USE c:\dtpenduduk\penduduk.DBF IN 0
Melakukan proses index pada tabel penduduk.dbf menurut kata kunci no_pen dengan nama index nopenp.idx

INDEX on no_pen TO nopenp
Kemudian memanggil tabel yang bernama dataconv.dbf pada lokasi paling terkecil yang ditentukan oleh Visual FoxPro 9.0 / 0 / nol

USE c:\dtpenduduk\dataconv.DBF IN 0
Dilakukan proses index data dengan kunci index no_pen dan diberi nama index nopend.idx

INDEX on no_pen TO nopend
Aktifkan tabel dataconv
SELECT dataconv
Beri perintah relasi kedua tabel berdasarkan kata kunci no_pen dari posisi tabel aktif yakni dataconv.dbf terhadap tabel penduduk.dbf

SET RELATION TO no_pen INTO penduduk
Lakukan proses perubahan pada field keterangan yang berada pada tabel aktif yakni dataconv.dbf dengan mengambil data pada tabel penduduk untuk yang
mempunyai data yang sama pada field no_pen antara tabel dataconv.dbf dengan tabel peduduk.dbf

REPLACE keterangan WITH penduduk->pekerjaan FOR no_pen =penduduk->no_pen
Lihatlah hasilnya

BROWSE
Contoh lain.
SELECT a
USE c:\dtpenduduk\penduduk.DBF
INDEX on no_pen TO xx
SELECT b
USE dataconv
INDEX on no_pen TO yy
SET RELATION TO no_pen INTO a
REPLACE kondisi WITH 'kacian' keterangan WITH a->nama + a->status FOR no_pen =a->no_pen
BROWSE
Penjelasan perintah diatas adalah sebagai berikut.
Tentukan area kerja a

SELECT a
Buka tabel penduduk.dbf

USE c:\dtpenduduk\penduduk.DBF
Lakukan proses index field no_pen sebagai kata kunci dengan nama index xx.idx

INDEX on no_pen TO xx
Tentukan area kerja b

SELECT b
Buka tabel dataconv.dbf

USE dataconv
Disini pembukaan dataconv.dbf tidak menyertakan direktori seperti pembukaan tabel penduduk.dbf, Pemanggilan tabel diperbolehkan karena default
direktori telah ditentukan sebelumnya. Melalui menu tools-options atau pengetikan perintah set defa to ...( Bab 1
Lakukan proses index field no_pen sebagai kata kunci dengan nama index yy.idx

INDEX on no_pen TO yy
Beri perintah relasi kedua tabel berdasarkan kata kunci no_pen dari posisi tabel aktif yakni dataconv.dbf ke tabel pada area a yakni tabel
penduduk.dbf

SET RELATION TO no_pen INTO a
Lakukan proses perubahan pada field kondisi milik tabel dataconv.dbf yang berada di area b dan saat ini sedang aktif dengan kata
‘kacian’ dan field keterangan dengan data pada field nama + status yang berada pada tabel penduduk.dbf yang ada di area a. Perubahan ini diproses untuk yang mempunyai kunci relasi yang
sama antara no_pen pada tabel dataconv.dbf ( pada area b ) dan tabel pendudul.dbf ( pada area a

REPLACE kondisi WITH 'kacian' keterangan WITH a->nama + a->status FOR no_pen =a->no_pen
Lihatlah hasilnya

BROWSE
8.2.2 Set relation dengan lebih dari dua tabel.
Bagaimana jika seandainya Anda akan melakukan relasi dengan lebih dari dua tabel ?.
Visual FoxPro 9.0 memungkinkan Anda melakukan relasi beberapa tabel sekaligus tanpa masalah, tinggal Anda mampu mengingat tidak nama dan lokasi dari
tabel yang dibuka.
Untuk melakukan relasi tiga buah tabel, misalnya lihatlah contoh dibawah ini.
USE c:\dtpenduduk\penduduk.DBF IN 0
INDEX on no_pen TO nopenp
USE c:\dtpenduduk\dataconv.DBF IN 0
INDEX on no_pen TO nopend
Use c:\dtpenduduk\dataktp.DBF IN 0
INDEX on no_ktp TO noktp
SELECT dataconv
SET RELATION TO no_pen INTO penduduk, noktp into dataktp
Jadi untuk melakukan relasi lebih dari dua tabel secara sekaligus maka perintah relasi dipisahkan dengan tanda koma.
Bisa juga dengan tambahan kata ADDITIVE untuk tabel berikutnya ( setelah 2 relasi utama ). Misalnya Lihat contoh berikut :
USE c:\dtpenduduk\penduduk.DBF IN 0
INDEX on no_pen TO nopenp
USE c:\dtpenduduk\dataconv.DBF IN 0
INDEX on no_pen TO nopend
Use c:\dtpenduduk\dataktp.DBF IN 0
INDEX on no_ktp TO noktp
SELECT dataconv
SET RELATION TO no_pen INTO penduduk
SET RELATION TO no_ktp INTO dataktp ADDTIVE
8.2.3 Memutuskan satu relasi.
Jika Anda mempunyai beberapa relasi antar tabel, dan Anda akan memutuskan salah satu keterkaitan tersebut maka ketikan perintah
SET RELATION OFF dataktp
8.2.4 Set relation to.
Untuk memutuskan seluruh relasi pada tabel yang terkait maka ketikan perintah :
SET RELATION
TO
8.3 Relasi dengan proses delete record.
Jika diatas Anda melakukan relasi, dimana relasi tersebut melakukan beberapa perubahan pada data aktif, disini Saya akan ajak Anda untuk mengenal
relasi untuk melakukan penghapusan pada data aktif.
SELECT a
USE c:\dtpenduduk\penduduk.DBF
INDEX on no_pen TO oke
SELECT b
USE c:\dtpenduduk\dataconv.DBF
INDEX on no_pen TO yes
SELECT a
SET RELATION TO no_pen INTO b
DELETE FOR no_pen =b->no_pen
COUNT FOR DELETED()
BROWSE
Perhatikan baris perintah diatas. Untuk pemberian nama index, Anda bebas boleh apa saja, mau yes, oke, atau jost sekalipun tidak apa-apa.
Perhatikan untuk perintah pernghapusan data yang tertulis sebagai berikut :
DELETE FOR no_pen =b->no_pen
Artinya. Komputer disuruh melakukan proses pendeletan data bisa data pada kunci index yang ada pada tabel penduduk.dbf (a) sama dengan data kunci
index pada tabel dataconv.dbf (b).
Perintah COUNT FOR DELETED() adalah perintah untuk menghitung berapa banyak record data yang telah dihapus dalam tabel.

3 komentar:

  1. misi misi, boleh tanya sesuatu ga yah...???

    kalo untuk menghapus semua rekord dengan kode tertentu, kira kira pake command apa yah...??
    saya bingung, misal dalam satu tabel terdapat tiga jurusan ( a,b,c ), terus saya pengen menghapus semua rekord nilai dengan kondisi dia jurusan a.
    trima kasih sebelumnya

    BalasHapus
  2. ora mutu... ora ceto.....

    BalasHapus
  3. copas..........................

    BalasHapus