Tip dan Trik Pemrograman Visual FoxPro

Bagian ini akan mengakhiri pembahasan mengenai Visual FoxPro.
Artikel ini berisi tip dan trik pemrograman dengan Visual FoxPro.

Namun bukan berarti tip dan trik yang dapat diterapkan hanya ini yang dapat diterapkan hanya ini saja. Masih banyak tip dan trik pemrograman Visual FoxPro lain yang dapat digunakan. Pada bagian akhir artikel ini nanti PCplus akan memberikan beberapa alamat URL yang dapat digunakan dalam mencari artikel-artikel serta tutorial-tutorial yang berbau Visual FoxPro. saja. Masih banyak tip dan trik pemrograman Visual FoxPro lain yang dapat digunakan. Pada bagian akhir artikel ini nanti PCplus akan memberikan beberapa alamat URL yang dapat digunakan dalam mencari artikel-artikel serta tutorial-tutorial yang berbau Visual FoxPro.

GRID DINAMIS


Grid merupakan salah satu tampilan data yang cukup disukai karena dengan grid banyak record dan banyak field sekaligus yang ditampilkan. Kasus yang akan dijadikan contoh adalah sebagai berikut. Ada sebuah tabel berisi data- data buku komputer yang ditampilkan dalam sebuah grid. Dalam tabel tersebut ada sebuah kolom yang merupakan kategori dari buku- buku komputer tersebut, misalnya Pemrograman, Office, Desain Grafis, Linux, dan lain- lain. Kolom kategori tersebut tidak ditampilkan dalam grid, melainkan dalam sebuah combo box(drop down). Nah, tentunya Anda bisa menduga, combo box tersebut digunakan un tuk menentukan record yang akan ditampilkan pada grid sesuai dengan kategori yang dipilih.

Tampilan awal dari form yang berisi grid tersebut ditunjukkan pada Gambar 1

Gambar 1
Jika combo box katagori diklik, maka mun cullah daftar kategori yang ada pada tabel tersebut, dan jika salah satu kategori tersebut dipilih, maka grid hanya akan memunculkan record yang sesuai dengan kategori yang dipilih. yang sesuai dengan kategori yang dipilih.
Agar form bisa dioperasikan dengan cara tersebut maka event InteractiveChange yang ada pada combo box harus diisi dengan suatu kode pemrograman. Nah, rasanya hal tersebut cukup mudah dilakukan, bukan? Kode program yang ditambahkan paling-paling adalah perintah Select untuk memilih record- record yang sesuai nilai combo box.
Misalnya form tersebut menggunakan cursor bernama lvDaftar, maka perintah Select yang bisa ditambahkan pada event Inter-activeChange akan terlihat seperti Listing 1.
Sekarang cobalah untuk menjalankan form tersebut dan pilih salah satu kategori dari combo box tersebut. Hupla! Apa yang terjadi? Ternyata grid akan menjadi kosong melompong seperti terlihat pada Gambar 2
Gambar 2

Mengapa begitu? Itu terjadi karena Visual FoxPro akan menghapus data environment yang lama dan menggantinya dengan nilai- nilai baru sesuai dengan perintah Select yang diberikan. Walaupun hal tersebut terjadi hanya dalam sekejap, tapi grid sudah terlanjur “bingung” karena properti RecordSource nya tidak dapat menemukan data yang sesuai (pada saat data-data environment dihapus).
Lalu bagaimana solusinya? Ternyata solusinya juga tidak begitu sulit. Mula-mula Anda harus membuat cursor “cadangan” terlebih dahulu dan dibuat pada event load form. Kode program pembuatan cursor tersebut diberikan pada Listing 2.
Mula-mula cursor lvDaftar diisi terlebih dahulu dengan record yang dibutuhkan, kemudian record tersebut dipindahkan ke cursor csrDaftarBuku. Jangan lupa, cursor csrDaftarBuku harus
diset sebagai nilai properti RecordSource dari grid

gambar 3
Setelah itu Event InteractiveChange dari combo box harus diubah menjadi seperti tertulis pada Listing 3. Nah, sekarang, Anda dapat mengubah ubah kategori berdasarkan combo box tanpa harus takut grid menjadi kosong. Bandingkan dengan Gambar 3

Catatan:

•Pada Listing 2 dan 3 tersebut terdapat baris Set Safety Off. Hal tersebut terpaksa dilakukan karena perintah Zap akan selalu memunculkan pertanyaan “Apakah Anda yakin melakukannya?”. Tentu hal tersebut akan mengganggu bukan? Nah, setelah perintah Zap dilakukan, Anda boleh menghidupkan kembali mode safety dengan perintah Set Safety On.
• Perintah Go Top perlu ditambahkan karena jika tidak record terakhir akan ditampilkan dalam grid di baris paling atas. Akibatnya baris berikutnya akan menjadi kosong dan Anda harus menggeser grid ke atas untuk melihat record sebelumnya. Dengan perintah Go Top, maka baris pertama grid akan terisi dengan record pertama juga.
Sebagai latihan, Anda dapat membuat program sejenis namun dengan dua tingkatan kategori. Kategori tingkat pertama adalah tema buku, misalnya komputer, sastra, manajemen, bisnis, psikologi, dan lain-lain. Kategori tingkat kedua adalah subkategori dari tema buku. Misalnya buku komputer dikategorikan lagi menjadi pemrograman, desain grafis, office, dan lain- lain, lalu buku sastra dibagi lagi menjadi sastra Indonesia, sastra Jawa, sastra Inggris, sastra Perancis, dan lain-lain, demikian seterusnya untuk kategori yang lain. Semoga tip dan trik tentang pemrograman Visual FoxPro yang PCplus berikan pada tiga edisi terakhir ini membawa manfaat yang mendalam bagi Anda sekalian, pembaca yang budiman. Selamat belajar dan sampai jumpa.




Listing 1. Event InteractiveChange Combo Box
kat = alltrim(thisform.combo1.value)
Select ISBN, Judul, Pengarang, Penerbit from lvDaftar
where alltrim(kategori) = kat
Thisform.refresh




Listing 2. Event Load Form
CREATE CURSOR csrDaftarBuku ;
( ISBN C(15), judul C(50), ;
Nama_a C(50), Nama_b C(30), Kategori C(3) )
* perintah select untuk mengisi lvDaftar
SELECT Daftarbuku.isbn, Daftarbuku.judul, Pengarang.nama,
Penerbit.nama,;
Daftarbuku.kategori;
FROM ;
DYNAMICGRID!PENGARANG ;
INNER JOIN DYNAMICGRID!DAFTARBUKU ;
INNER JOIN DYNAMICGRID!PENERBIT ;
ON Daftarbuku.penerbit = Penerbit.id ;
ON Pengarang.id = Daftarbuku.pengarang;
ORDER BY Daftarbuku.isbn;
INTO CURSOR lvDaftar
* perintah untuk mengisi cursor csrDaftarBuku
SELECT csrDaftarBuku
SET SAFETY OFF
ZAP
SET SAFETY ON
APPEND FROM DBF("lvdaftar")
GO TOP
THISFORM.refresh





Listing 3. Event InteractiveChange Combo Box

kat = ALLTRIM(thisform.combo1.Value )
.
SELECT Daftarbuku.isbn, Daftarbuku.judul, Pengarang.nama,
Penerbit.nama,;
Daftarbuku.kategori;
FROM ;
DYNAMICGRID!PENGARANG ;
INNER JOIN DYNAMICGRID!DAFTARBUKU ;
INNER JOIN DYNAMICGRID!PENERBIT ;
ON Daftarbuku.penerbit = Penerbit.id ;
ON Pengarang.id = Daftarbuku.pengarang;
ORDER BY Daftarbuku.isbn;
WHERE ALLTRIM(daftarbuku.kategori) = kat;
INTO CURSOR lvDaftar
SELECT csrDaftarBuku
SET SAFETY OFF
ZAP
SET SAFETY ON
.
APPEND FROM DBF("lvdaftar")
GO TOP
-
THISFORM.refresh

.
Previous
Next Post »