Anda di halaman 1dari 126

PANDUAN PENGEMBANG

GASY Software

DISUSUN OLEH:
GEDE JULIARSA, SE.MSi

1
1
Pendahuluan

Pokok Bahasan:
Pemrograman Dalam Microcomputer
Konsep Pemrograman Berorientasi Object
Elemen-Elemen Program
Mengenal Visual FoxPro

Pemrograman Dalam Microcomputer


Microcomputer adalah suatu alat canggih yang mempunyai kemampuan dalam berbagai hal
misalnya pengolahan kata, pengembangan analisis keuangan suatu proyek, menyajikan grafik
terhadap suatu laporan, membuat skedul pekerjaan dan monitoring perkembangan pekerjaan,
transmisi laporan secara elektronik antar kantor, design teknik permesinan, diagnosis medis
dan integrasi data antar komputer melalui jaringan internet. Microcomputer (sering disebut
personal computer atau desktop computer) adalah suatu komputer kecil berisi sejumlah
komponen yang dapat bekerja bersama sebagai system microcomputer.

Komponen microcomputer system terdiri dari: keyboard, mouse, monitor, system unit,
data storage device, printer dan controller device. Komponen fisik dalam system
microcomputer disebut perangkat keras (hardware), sebaliknya sebagai perantara perangkat
keras disebut perangkat lunak (software) yang berisi kumpulan instruksi yang dapat dimengerti
oleh hardware. Kumpulan instruksi-instruksi yang terstruktur disebut dengan program.
Proses membaca instruksi dalam suatu program oleh perangkat keras disebut menjalankan
program (running the program). Tahapan instruksi berjalan melibatkan berbagai fungsi,
prosedur, metod, dan object. Goldstein (1987), menyebutkan bahwa tahapan pemrograman
yaitu menampilkan data di layar; menerima data dari user melalui keyboard atau device input
lainnya; merespon data yang diterima dari user, benar atau salah; proses menggambarkan
data dalam bentuk graphics di layar; mencetak data ke printer; menyimpan data untuk
kemudian bisa diambil atau dibuka kembali.

Proses memberikan instruksi kepada komputer sesuai langkah-langkah program pada


setiap tujuan disebut dengan pemrograman. Program ditulis dengan menggunakan bahasa
pemrograman yang telah diubah kedalam bahasa Inggris. Instruksi-instruksi yang ada dalam
bahasa pemrograman kemudian di terjemahkan kedalam bahasa mesin sehingga dapat
dijalankan secara langsung oleh komputer. Banyak sekali bahasa pemrograman yang
tersedia untuk microcomputer, diantara bahasa Basic, IBM Advance Basic, Microsoft Quick

2
Basic, Turbo Basic, dBase, FoxBase, FoxPro, Visual FoxPro, Delphi, Oracle, Clipper, Visual
Basic, Microsoft Access, dan masih banyak lagi.

Konsep Pemrograman Berorientasi Object


Ide dasar pada bahasa berorientasi obyek (PBO) adalah mengkombinasikan data dan fungsi-
fungsi untuk mengakses data menjadi sebuah kesatuan unit. Unit ini dikenal dengan nama
obyek (object). Jika anda membuat suatu program, menyimpan dan mengelola data dalam
program adalah dengan suatu rangkaian instruksi. Data dan tempat penyimpanan data
adalah bahan baku pemrograman. Alat-alat (tools) yang digunakan untuk mengelola bahan
baku ini adalah command, function dan operators.

Penyimpanan Data
Jenis data sangat menentukan bagaimana data tersebut disimpan dan bagaimana data dapat
digunakan. Anda dapat mengalikan dua angka secara bersama, tetapi anda tidak dapat
mengalikan karakter. Anda dapat mencetak karakter dalam huruf besar, tetapi anda tidak
dapat mencetak angka dalam huruf besar. Beberapa jenis data primer dalam Visual FoxPro
dijelaskan dalam tabel berikut ini:

Jenis Data

Jenis Contoh

Numeric 123
3.1415
7

Character "Test String"


"123"
"01/01/98"

Logical .T.
.F.

Date {^1998-01-01}

DateTime {^1998-01-01 12:30:00 p}

Data Containers
Data containers menyediakan fasilitas bentuk operasi sama dalam suatu kelompok data secara
multiple. Jika anda menyimpan informasi dalam container, dan mengembangkan operator-
operator dalam container, anda dapat mengganti data lama dengan data baru dan
menjalankan program yang sama. Tabel berikut menjelaskan beberapa container utama untuk
data dalam Visual FoxPro:

3
Jenis Keterangan

Variables Element tunggal data yang disimpan dalam RAM (Random Access
Memory) komputer

Table Records Kumpulan baris dengan field yang telah ditentukan, dan disimpan
dalam disk.

Arrays Elemen kelompok dari data yang disimpan dalam RAM

Kontainer dan jenis data merupakan satu bangunan saling terkait dalam mengelola data,
dengan menggunakan operator, function, dan command.

Menggunakan Operator
Operasi logika yang digunakan dalam Visual FoxPro adalah sebagai berikut:

Operator Jenis Data Contoh Hasil


? n = 7
= Semua Jenis Data .T. jika nilai variabel n =
7, sebaliknya .F.
? "Fox" + "Pro"
+ Numeric, Character, "FoxPro"
Date, DateTime
? !.T.
! atau NOT Logical .F.
? 5 * 5
*, / Numeric ? 25 / 5 25
5

Perlu diingat bahwa anda harus menggunakan jenis data yang sama dalam satu operator.
Perhatikan contoh berikut ini:
nFirst = 123 nSecond = 45
cFirst = "123" cSecond = "45"
Dua operasi berikut akan memberikan hasil berbeda, karena jenis data dalam variabel tersebut
berbeda.
? nFirst + nSecond Hasilnya adalah 168
? cFirst + cSecond Hasilnya adalah 12345
Operator pertama mengerjakan jenis variabel numerik, sedangkan operator yang kedua jenis
variabel karakter.

Akan terjadi kesalahan (mismatch error) apabila anda mencoba membuat operator seperti
berikut ini:
? cFirst + nSecond

4
Visual FoxPro menyediakan fasilitas untuk menangani perbedaan jenis data, yaitu dengan
menggunakan fungsi-fungsi konversi. Misalnya STR(), VAL(), LTRIM(). Dengan fungsi
tersebut, maka kesalahan dapat diperbaiki dengan menulis operator sebagai berikut:
? cFirst + LTRIM(STR(nSecond)) Hasilnya: 12345
? VAL(cFirst) + nSecond Hasilnya: 168

Menggunakan Function
Functions (Fungsi) menghasilkan nilai spesifik sesuai jenis data. Misalnya, fungsi STR()
menghasilkan nilai Character, sedangkan VAL() menghasilkan nilai Numerik. Begitu juga
halnya dengan fungsi-fungsi lainnya.

Ada lima cara atau teknik pemanggilan fungsi dalam Visual FoxPro, yaitu:

Menentukan variabel untuk merekam nilai yang dihasilkan dari fungsi. Misalnya
variabel dHariIni digunakan untuk merekam tanggal hari ini, maka penulisan code
programnya adalah:
dHariIni = DATE( )
Digabungkan dalam perintah Visual FoxPro yang lain. Misalnya membuat perintah
untuk mengubah default direktory.
CD GETDIR( )
Menampilkan nilai kedalam screen / Window. Contoh penulisan code program untuk
menampilkan waktu.
? TIME( )
Memanggil fungsi tanpa menyimpan nilai dari hasil yang dikembalikan oleh fungsi.
Misalnya, fungsi untuk membuat cursor dalam kondisi off, adalah:
SYS(2002)
Menggabungkan beberapa fungsi dalam satu baris perintah. Misalnya mengubah nilai
variabel tanggal menjadi karakter hari, yaitu:
? DOW(DATE( ))

Menggunakan Command
Sebuah perintah mengakibatkan aksi yang ditunjukkan. Setiap command mempunyai syntax
khusus, yang mengindikasikan bahwa apa yang harus dimasukkan atau diikutkan sehingga
suatu perintah dapat bekerja. Ada clausul optional dikaitkan dengan commands dari cakupan
clausul yang lebih detil dalam sebuah commands.

Sebagai contoh adalah command USE memberikan instruksi untuk membuka atau menutup
sebuah tabel.

Syntax: USE Penjelasan


USE
Menutup file tabel dalam area kerja aktif

5
USE customer
Membuka file tabel CUSTOMER pada area kerja aktif, dan
sekaligus menutup file tabel yang sedang dibuka pada area aktif
tersebut
USE customer IN 0
Membuka file tabel CUSTOMER pada area berikutnya yang
tersedia dan belum digunakan
USE customer IN 0 ;
ALIAS mycust Membuka file tabel CUSTOMER pada area berikutnya yang
tersedia dan belum digunakan dengan nama alias/samaran
MYCUST.

Pengendalian Alur Program


Visual FoxPro mempunyai commands dan functions yang bersifat Wrap Around artinya
adalah diantara command dan fungsi dapat saling terkait dan digunakan bersama dalam satu
baris perintah, sehingga perlu ditentukan kapan dan bagaimana comands dan fungsi
dijalankan. Comands tersebut membolehkan adanya branching dan looping kondisional, yaitu
dua alat pemrograman yang sangat bermanfaat.

Sebagai illustrasi, misalnya sebuah perusahaan mempekerjakan 10.000 karyawan dan setiap
karyawan diberikan tambahan Rp.30.000 setiap peningkatan volume penjualan 3%, dan
tambahan Rp.10.000 apabila peningkatan penjualan mencapai 6%. Asumsi bahwa nama field
untuk menampung jumlah tambahan adalah Insentif, dan kenaikan penjualan adalah
GrowSales.

Contoh program untuk menyimpan nilai insentif:

Code Keterangan
SCAN
SCAN dan ENDSCAN adalah mengeksekusi setiap
rekord yang ada dalam tabel, dan kemudian
memindahkan pointer ke rekord berikutnya
IF growsales = 0.03
REPLACE ; Setiap rekord, jika kenaikan penjualan = 3%, maka
Insentif WITH 30000 nilai 30000 akan direkam dalam field insentif
Tanda semicolon (;) setelah REPLACE berarti bahwa
command dilanjutkan pada beris berikutnya.
ENDIF
Akhir dari kondisional pernyataan IF
IF growsales = 0.06
REPLACE Insentif ; Setiap rekord, jika kenaikan penjualan = 6%, maka
WITH 40000 nilai 30000+10000 akan direkam dalam field insentif
ENDIF
Akhir dari kondisional pernyataan IF
ENDSCAN

Contoh tersebut menggunakan dua pencabangan dan pengulangan kondisional untuk


mengontrol alur program.

6
Pencabangan Kondisional (Conditional Branching)
Pencabangan kondisional menunjukkan suatu pengujian kondisi dan kemudian tergantung dari
hasil pengujian tersebut akan mengakibatkan operasi berbeda. Ada dua perintah dalam Visual
FoxPro yang menunjukkan pencabangan kondisional, yaitu:

IF ... ELSE ... ENDIF

DO CASE ... ENDCASE


Contoh:
** Menyimpan variabel lDapatInsentif = .T. jika pertumbuhan = 3%
IF nGrow=.03
lDapatInsentif = .T.
ENDIF
Catatan: Asterisk (*) pada awal baris menunjukkan komentar. Komentar ini membantu
programmer mengingat setiap segment code yang dirancang.

Pengulangan (Looping)
Pengulangan menunjukkan bahwa proses eksekusi satu atau lebih baris perintah dalam
lingkup waktu yang sama. Ada tiga perintah pengulangan dalam Visual FoxPro, yaitu:
DO WHILE ... ENDDO
FOR ... ENDFOR
SCAN ... ENDSCAN
Contoh:

FOR nCnt = 1 TO FCOUNT( )


? FIELD(nCnt)
ENDFOR

** Penggunaan Do While Enddo

Select Employee
GO TOP
DO WHILE NOT EOF() && Lakukan pengulangan jika belum
&& sampai akhir file (eof = end of file )
IF GROWSALES=.03
REPLACE ;
INSENTIF ;
WITH 30000
ENDIF
SKIP && memindahkan pointer rekord berikutnya
ENDDO

Pemrograman Dalam Visual FoxPro


Menentukan/menetapkan Masalah
Operasionalkan masalah kedalam elemen-elemen dengan ciri-ciri khusus
Kembangkan setiap bagian elemen
Pengujian setiap elemen

7
Mengumpulkan elemen-elemen yang sejenis
Pengujian program keseluruhan

Pemrograman artinya adalah menyuruh mesin untuk melakukan apa yang kita inginkan. Pada
awalnya, program dibuat dengan cara yang sederhana. Seorang pemrogram harus
menuliskan program satu per satu dan memeriksa kesalahan sendiri. Hal ini memerlukan
waktu yang lama. Perangkat lunak telah berkembang sehingga sekarang anda dapat
membuat dan memeriksa program dengan mudah karena sudah disediakan fasilitas-fasilitas
yang mudah dan menarik.

Walaupun Visual FoxPro masih mendukung pemrograman prosedural,


pengembangan-pengembangan bahasa memberikan kemampuan dan fleksibelitas dalam
pemrograman berorientasi object. Pengembangan berorientasi object dan pemrograman
berorientasi object menunjukkan suatu perubahan fokus dari standar pemrograman prosedural.
Pemrograman prosedural adalah proses alur program dari baris pertama sampai pada akhir
baris, sedangkan pada pemrograman berorientasi object, pola berfikir dalam pengembangan
suatu program adalah bagaimana membuat object-object yang merupakan komponen aplikasi.

Pemrograman berorientasi object saat ini dikembangkan karena 1). aplikasi yang
dibutuhkan semakin kompleks, perilaku user terhadap perkembangan Microsoft Windows yang
mana pemakai komputer tidak lagi memerlukan aplikasi yang mengontrol pemakai tetapi
pemakai ingin mengontrol jalannya program, 2) proses pengembangan relatif cepat/hemat
waktu, 3) tampilan visual, 4) kebutuhan untuk mengakses data dari berbagai format, 5)
pengembangan database client/server.

Pemrograman berorientasi object adalah perluasan dari pemrograman prosedural


yang mengutamakan pemakaian ulang program melalui pengembangan class library. Class
Library adalah kumpulan object yang dapat digunakan pada setiap aplikasi yang
dikembangkan, misalnya perintah-perintah untuk memindahkan pointer rekord dalam tabel,
perintah help, dan perintah-perintah berulang yang selalu digunakan dalam aplikasi atau setiap
object.

Elemen-Elemen Program
Dalam sebuah aplikasi program berisi kumpulan kata-kata yang merupakan bahasa
pemrograman yang disediakan, dan kumpulan bahasa interface lainnya yang digabungkan
membentuk suatu bahasa sehingga dapat dijalankan oleh mesin komputer. Pada umumnya
susunan elemen-elemen dalam aplikasi program berisi:

Perintah dasar dan function yang sudah ada, untuk melaksanakan aksi
tertentu.
Literal dan konstanta yang bernama, yang dipakai dalam operasi.
Data yang permanen yang disimpan dalam tabel.

8
Operator aritmatik yang dipakai pada bilangan, operator string untuk
memanipulasi data karakter
Evaluator logic untuk proses perbandingan.
Pengulangan.
Komentar.

Mengenal Visual FoxPro


Perkembangan Fox Software bermula dari FoxBase pada tahun 1984, dan kemudian
berkembang menjadi FoxPro pada tahun 1989 dengan memperkenalkan Graphical Unit
Interface. Kemudian pada tahun 1995 diperkenalkan Visual FoxPro. Hingga kini, Visual
FoxPro sudah disempurnakan lagi pada release 7.0 dan 8.0. Kemampuan pemrograman
prosedural tetap dipertahankan dan dilengkapi dengan pemrograman berorientasi objek. Visual
FoxPro 6.0 dilengkapi dengan kemampuan untuk berinteraksi dengan produk desktop dan
client/server lain dan juga dapat membangun aplikasi yang berbasis Web. Dengan adanya
Visual Studio, FoxPro menjadi anggotanya. Sasaran utama Visual Studio adalah menyediakan
alat bantu pemrograman dan database untuk mengembangkan perangkat lunak yang
memenuhi tuntutan zaman.

Menjalankan Program Visual FoxPro


Jika telah dilakukan installasi program Visual FoxPro, maka pada layar
monitor atau desktop dapat dibuat shortcut menu untuk memmpercepat
memanggil program Visual FoxPro 6.0. Kemudian Double-Click
Icon/Shortcut Microsoft Visual FoxPro 6.0 untuk memanggil program, atau
dapat juga dipanggil melalui menu Start, atau dengan menggunakan
fasilitas Windows Explorer

Gambar 1.1: Flash Screen

Tampilan pada gambar 1.1 akan nampak dalam beberapa detik dan selanjutnya akan
ditampilkan screen Visual FoxPro 6.0 seperti pada gambar 1.2.

9
Gambar 1.2. Screen Visual FoxPro 6.0

Bagian-bagian yang ada pada Screen Visual FoxPro 6.0 dapat diuraikan sebagai berikut:

Caption Bagian yang


terletak di
bagian kiri atas tampilan utama. Caption dapat diubah dengan
memberi instruksi:

_Screen.Caption=D3 Akuntansi Fe Unud

Control Box Bagian yang terletak di bagian kanan atas


tampilan utama, berisi control Minimize,
Restore dan Close

Main Menu
Bar Bagian yang terletak di baris menu, berfungsi untuk memandu pemakai
dalam menggunakan program.

10
ToolBar Bagian yang
berfungsi untuk mempercepat pemanggilan instruksi. Berisi Toolbar
standar yaitu New, Open, Save, Print, Explorer, Cut, Copy, Paste,
Undo, Redo, Run.

Jendela Bagian yang berfungsi


Perintah untuk menulis instruksi

Status Bar Bagian yang terletak dibagian bawah


tampilan utama.

Mengakhiri Program Visual FoxPro


Untuk mengakhiri program Visual FoxPro, Ada beberapa cara yang dapat dilakukan, yaitu:

1. Pada menu File, Klik sub-menu Exit


2. Melalui jendela perintah, ketik instruksi QUIT
3. Dari tampilan utama, perhatikan Control Box, lalu Klik Icon Close

11
2
Persiapan Pemrograman

Pokok Bahasan:
Membuat Folder Aplikasi
Mengubah Direktory Default
Membuat File Project
Membuat File Program/Aplikasi

Membuat Folder Aplikasi


Sebelum mengembangkan suatu aplikasi program, maka langkah awal yang diperhatikan
adalah menyediakan tempat atau lokasi penyimpanan setiap jenis file yang menjadi bagian dari
program. Tahapan ini merupakan implementasi dari proses pengelolaan file, oleh karena itu
tahapan akan menjadi penting dan bermanfaat.

Sebagai contoh susunan folder nampak seperti gambar 2.1. Folder aplikasi dibuat dalam
kelompok ProD3. Didalam folder ProD3 berisi sub-folder yang digunakan untuk menyimpan
setiap jenis file yaitu file Data, Forms, Reports, Library, Programs, Include, Help, Graphics
dan Menu.

Gambar 2.1
Susunan Folder

Untuk membuat folder, dapat digunakan fasilitas Windows Explorer.

Mengubah Default Direktory


Setelah folder dibuat, lalu tentukan bahwa tempat penyimpanan data dapat dibaca pada folder
yang telah dibuat. Langkah-langkah untuk mengubah default directory adalah sebagai berikut:

1. Pada menu Tools, Klik Options. Setelah perintah ini dilakukan maka akan muncul
tampilan seperti gambar 2.2

12
Gambar 2.2. Options File Locations

2. Pilih jenis file Default Directory, lalu Klik Modify

Gambar 2.3 Change File Location

3. Dari gambar 2.3, kemudian ubah lokasi direktory dengan nama folder yang telah dibuat.
Selanjutkan pilih perintah Ok. Jika langkah ini benar dilakukan maka tampilan akan
kembali seperti gambar 2.2, lalu pilih perintah Set As Default, dan perintah Ok.

Membuat File Project


Untuk membuat suatu file project, Visual FoxPro menyediakan fasilitas yang dapat digunakan
yaitu dengan project manager. Langkah-langkah yang dilakukan adalah:

1. Dari menu File, pilih New. Selanjutnya muncul seperti gambar 2.3.

13
Gambar 2.3
Kotak Dialog New

2. Dari kotak dialog New ( seperti Gambar 2.3) tentukan jenis file Project dan pilih New File.
Kemudian muncul tampilan kotak dialog Create seperti gambar 2.4.

Gambar
2.4
Kotak
Dialog
Create

3. Dari gambar 2.4 tentukan nama project, misalnya Proj1. Kemudian pilih command Save.

Bila langkah 1, 2, dan 3 telah dilakukan dengan benar maka selanjutnya akan ditampilkan
project manajer seperti pada gambar 2.5. Dari gambar 2.5, kemudian dibangun aplikasi
program sesuai dengan rancangan sistem yang dikembangkan.

14
Gambar 2.5
Kotak Dialog
Project
Manager

a. Membuat Main Program


Main Program adalah prosedur yang diletakkan pada top program atau program yang
mengawali dan mengendalikan semua prosedur yang dikembangkan. Main Program berisi
instruksi-instruksi yang menangani konfigurasi lingkungan kerja aplikasi Visual FoxPro
yang dikembangkan.

Untuk membuat main program, caranya adalah:

a. Dari project manager, Pilih Code, kemudian Klik New. Setelah proses ini akan muncul
kotak editor seperti gambar 2.5.

Gambar 2.5
Kotak Editor Code

b. Dari tampilan kotak Editor Code, ketiklah instruksi berikut ini:


*-- Prosedur Program Utama
DO Progs\Prg2
READ Events

CLEAR ALL
CLEAR EVENTS
c. Setelah menulis instruksi, simpan instruksi tersebut pada folder Progs dengan nama
file Prg1. Tekan Tombol [Ctrl-W] untuk menyimpan instruksi. Jika benar dilakukan

15
maka muncul kotak dialog seperti gambar 2.6. Selanjutnya isi nama file program dan
pilih command Save.

Gambar 2.6
Kotak Dialog
Save As

d. Membuat sub-program menu. Caranya adalah dari project manajer Code, Pilih New
sehingga muncul kotak dialog Code Editor, lalu ketik instruksi berikut ini dan simpan
dengan nama Prg2 pada folder Progs.
** Nama File: Progs\Prg2.Prg
DEFINE PAD Menu1 OF _Msysmenu PROMPT "\<Menu"
DEFINE PAD Menu2 OF _Msysmenu PROMPT "E\<XIT"

ON PAD MENU1 OF _Msysmenu ACTIVATE POPUP Menu1


ON SELECTION PAD MENU2 OF _Msysmenu pQuit()

DEFINE POPUP MENU1 MARGIN RELATIVE SHADOW COLOR SCHEME 4


DEFINE BAR 1 OF MENU1 PROMPT "\<1. Data Mahasiswa"
DEFINE BAR 2 OF MENU1 PROMPT "\<2. Laporan"
DEFINE BAR 3 OF MENU1 PROMPT "\-"
DEFINE BAR 4 OF MENU1 PROMPT "\<3. Backup Data"

ON SELECTION BAR 1 OF MENU1 Do Form Forms\Form1


ON SELECTION BAR 2 OF MENU1 Do Form Forms\Form2
ON SELECTION BAR 4 OF MENU1 Do Form Forms\Form3
ACTIVATE MENU _Msysmenu NOWAIT
e. Membuat sub-program untuk menutup aplikasi dengan instruksi berikut ini, dan simpan
dengan nama file pQuit pada folder Progs.
** Nama File: Progs\pQuit.Prg
CLEAR ALL
CLEAR EVENTS
b. Membuat Form
Membuat Form1. Perhatikan project manajer, lalu pilih Documents. Kemudian pilih
command New, dan New Form

16
Gambar 2.7
Project Manajer
Documents dan Kotak
Dialog New Form

Selanjutnya muncul form designer seperti gambar 2.8

Gambar 2.8
Form
Designer

Dari form designer ini (seperti gambar 2.8), simpanlah form tersebut pada folder Forms
dengan nama Form1. Caranya adalah dari menu File, pilih Save-As, dan perhatikan kotak
dialog save-as, lalu beri nama form. Ulangi langkah membuat form untuk mendesign form2
dan form3.

Membuat File Program


Setelah tahapan-tahapan pemrograman dilalui, maka selanjutnya adalah melakukan proses
penerjemahan dari bahasa pemrograman kedalam bahasa mesin yang dapat dimengerti oleh
komputer. Proses ini disebut Building Program. Caranya adalah sebagai berikut:

17
1. Dari project manajer, pilih Build. Setelah proses ini muncul seperti gambar 2.9.

Gambar 2.9
Kotak Dialog Building
Program

2. Lalu pilih Ok. Setelah proses selesai, dan tidak ada kesalahan penulisan instruksi maka
aplikasi sudah siap dijalankan.

18
3
Mengenal Class dan Object

Pokok Bahasan:
Class dan Object Visual FoxPro
Form Property, Event dan Method
ToolBar Form Control
Merancang Form

Class dan Object Visual FoxPro


Kelas (Class) dan obyek (object ) dalam terminologi pemrograman berorientasi obyek
sebenarnya adalah saling terkait, tetapi tidak sama. Suatu kelas berisi informasi mengenai
bagaimana obyek akan melihat dan menunjukkan reaksi atau berjalan. Suatu kelas adalah
skema dari suatu obyek. Sebagai contoh misalnya, skema dan jaringan elektronik dari sebuah
telpon adalah mendekati suatu kelas,. sedangkan yang menjadi obyek adalah telpon itu
sendiri.

Benda atau sesuatu yang nampak disekeliling kita adalah object. Obyek mempunyai
sifat-sifat, perilaku dan interaksi antar obyek. Misalnya, mobil adalah benda yang mempunyai
sifat-sifat seperti bentuk, warna, ukuran dan berat. Mobil dapat digunakan karena adanya
mesin yang terpasang, dan setiap komponen yang dimiliki saling berhubungan sehingga terjadi
gerak. Dalam kontek pemrograman Visual FoxPro, dan kalau disimak dari contoh obyek mobil
maka sifat-sifat mobil tersebut disebut dengan property, jaringan mesin-mesin disebut method
dan interaksi jaringan mesin yang mengakibatkan gerak disebut event. Object utama dalam
Visual FoxPro adalah Form.

Mobil Form

Property:
Nama, Tinggi, Berat Property: Tinggi,Lebar, Judul

Gambar 3.1: Object dan Property Object

19
Obyek: Property, Event dan Method
Sebuah obyek mempunyai berbagai property atau attribut. Sebuah telpon misalnya, adalah
mempunyai warna dan ukuran. Jika telpon digunakan di kantor, maka tentu ditempatkan pada
suatu lokasi misalnya diatas meja kerja, sehingga akan memudahkan untuk digunakan baik
menerima maupun mengirim pesan.

Obyek yang dibuat dalam Visual FoxPro juga mempunyai berbagai property yang
ditentukan oleh kelas didasarkan pada obyek tersebut. Property tersebut dapat di tentukan
pada saat merancang atau pada waktu dijalankan.

Sebagai contoh misalnya, beberapa property dari Check Box adalah sebagai berikut:

Property Keterangan
Caption Teks disebelah check box
Enabled Menentukan apakah user dapat memilih atau mengubah nilai.
ForeColor Warna teks caption
Left Posisi kiri dari check box
Top Posisi atas dari check box
Visible Menentukan apakah check box nampak (visible) atau tidak
Setiap obyek yang dibuat dan dapat merespon aktivitas dengan benar disebut events.
Event adalah suatu yang spesifik dan akan timbul karena aktivitas, dapat diprakarsai oleh user
yang lain atau karen sistem. Events, dalam kontek ini adalah disebabkan oleh interaksi user.
Misalnya, pada contoh pesawat telpon, event dipicu ketika user menggunakan telpon, atau
ketika user menekam tombol-tombol untuk memanggil.

Perilaku pemakai termasuk dalam pemicu event adalah klik dan memindahkan mouse
dan menekan tombol keyboard. Metode-metode (Methods) adalah prosedur-prosedur yang
berhubungan dengan suatu obyek. Event dapat memiliki method yang sesuai.

Events dari check box:

Event Keterangan
Click User meng-Klik check box.
GotFocus User memilih check box dengan meng-Klik atau menekan tombol Tab
LostFocus User memilih kontrol lain, meninggalkan check-box
Methods dari check box:

Method Keterangan
Refresh Mengupdate nilai dari check box yang memperlihatkan adanya
perubahan data
SetFocus Fokus ada pada check box karena menekan tombol TAB

20
Karakteristik Class
Class mempunyai karakteristik karakteristik yang membuatnya sangat berguna untuk
menciptakan software yang reusable (mempunyai banyak fungsi), dan mudah dipelihara dan
dikembangkan, yaitu: Encapsulation, Subclasses, Inheritance

Encapsulation meliputi proses penggabungan method dan property secara bersama-sama


kedalam suatu obyek sehingga dapat memberikan manfaat abstraksi yang dapat dilihat
apabila ada interaksi penggunaan. Misalnya, property yang menentukan item-item dalam
suatu list box dan code yang berjalan ketika item-item dalam daftar dipilih dapat dienkapsulasi
menjadi satu kontrol tunggal dalam suatu form.

Subclass dapat memberikan fungsi setiap class yang dibuat dan berbagai penambahan kontrol
yang diinginkan. Fleksibelitas ini merupakan feature yang diberikan class. Proses pembuatan
subclass adalah satu langkah pemrograman utuk mengurangi jumlah code yang harus ditulis.

Class dapat digunakan pada setiap kontrol, sifat ini disebut inheritance. Kemampuan ini
sangat bermanfaat dalam pemrograman karena apabila ada perubahan dalam suatu class,
maka perubahan tersebut dapat berlaku untuk semua kontrol yang ada.

Jenis Class
Ada dua jenis class dan merupakan perluasan dari obyek Visual FoxPro yaitu container class
dan control class.
Container Class
Containers dapat berisi obyek-obyek lain dan dapat diakses oleh obyek-obyek yang ada dalam
container. Misalnya, jika anda membuat suatu container class yang berisi dua list-box dan dua
command button dan kemudian menambahkan pada obyek form, maka setiap obyek dapat
dimanipulasi, dan dapat ditambahkan obyek lain.

Berikut ini adalah daftar kontrol yang terdapat dalam setiap container class yaitu:
Container Control
Command button groups Command buttons
Container Any controls
Control Any controls
Custom Any controls, page frame, container, custom
Form sets Forms, toolbars
Forms Page frames, any controls, containers, custom
Grid columns Headers and any objects except form sets,
forms, toolbars, timers, and other columns
Grids Grid columns
Option button groups Option buttons
Page frames Pages
Pages Any controls, containers, custom
Project Files, servers
Toolbars Any controls, page frame, container

21
Hirarki Class
Hirarki class dan container adalah dua entitas terpisah. Visual FoxPro melihat code events
melalui hirarki class, sedangkan obyek-obyek melihat referensi hirarki container. Sebagai
contoh dalam memanipulasi suatu form dalam form set, diperlukan referensi form set, form dan
control.

Penggunaan Pengenal/Referensi
Visual FoxPro menggunakan kata kunci Parent, THIS, THISFORM dan THISFORMSET untuk
penulisan dalam method dan event. Contoh instruksi yang terkait dengan kata kunci tersebut
adalah:
THISFORMSET.frm1.cmd1.Caption = "OK"
THISFORM.cmd1.Caption = "OK"
THIS.Caption = "OK"
THIS.Parent.BackColor = RGB(192,0,0)

Menentukan Properties
1. Menggunakan sintaks tunggal : Container.Object.Property = Value

Contoh:
frmPhoneLog.txtDate.Value = DATE( )
frmPhoneLog.txtDate.Enabled = .T.
frmPhoneLog.txtDate.ForeColor = RGB(0,0,0)
frmPhoneLog.txtDate.BackColor = RGB(192,192,192)

2. Menggunakan WITH . ENDWITH


WITH THISFORMSET.frmForm1.grdGrid1.grcColumn1
.Width = 5
.Resizable = .F.
.ForeColor = RGB(0,0,0)
.BackColor = RGB(255,255,255)
.SelectOnEntry = .T.
ENDWITH

Memanggil Methods
Menggunakan syntax : Parent.Object.Method
Contoh:
frsFormSet.frmForm1.Show
frsFormSet.frmForm1.txtGetText1.SetFocus
Methods mengembalikan nilai dan digunakan sebagai ekspresi, misalnya:
Form1.Caption = Form1.GetNewCaption( )

Prosedur dan UDF (User Defined Function)


Prosedur dan fungsi adalah sebagai tempat pendefinisian dan penulisan code (bahasa
program). Code yang ditulis kemudian dapat dijalankan untuk menangani berbagai jenis data

22
dan obyek yang ada dalam aplikasi. Pendefinisian prosedur dan fungsi dalam Visual FoxPro
dapat dijelaskan sebagai berikut:
PROCEDURE myproc
**instruksi-instruksi
ENDPROC
Dalam pemrograman tradisional, prosedur berisi code yang ditulis untuk suatu proses tertentu,
tanpa mengembalikan suatu nilai, sedangkan fungsi berisi code untuk melakukan suatu
operasi dan mengembalikan suatu nilai. Dalam Visual FoxPro, fungsi merupakan
penyederhanaan dari prosedur. Penulisannya sebagai berikut:
FUNCTION myfunc
**instruksi-instruksi
ENDFUNC
Prosedur dan fungsi dapat dibuat pada suatu file program secara terpisah, dan untuk
menggunakan setiap prosedur dan fungsi digunakan perintah SET PROCEDURE TO.
Misalnya file prosedur diberikan nama FUNPROC.PRG, maka instruksi untuk mengaktifkan
adalah:
SET PROCEDURE TO funproc.prg
SET PROCEDURE TO funproc.prg

Memanggil Procedure atau Function


Ada dua cara untuk memanggil procedure atau function dalam program:

Menggunakan perintah DO
DO myproc
Menambahkan tanda kurung (parentheses) setelah nama fungsi
myfunc( )
Setiap method dalam class dapat dikembangkan melalui pengiriman dan penerimaan nilai dari
procedure atau function

Mengirim Nilai ke Procedure atau Function

Untuk dapat mengirim nilai ke dalam procedure atau function, maka perlu menambahkan
parameters. Misalnya:
PROCEDURE myproc( cString )
* The following line displays a message
MESSAGEBOX ("myproc" + cString)
ENDPROC
Penulisan seperti pada contoh (PROCEDURE myproc(cString)) berarti bahwa lingkup
parameter tersebut adalah lokal. Untuk memanggil prosedur tersebut dapat digunakan teknik
dibawah ini:
DO myproc WITH cTestString
DO myproc WITH "test string"
Atau
Myfunc(cTestString)
Myfunc("test string")

23
Pengiriman nilai dapat pula lebih dari satu, untuk membedakan setiap parameter diisi tanda
comma. Contoh:
PROCEDURE myproc( dDate, cString, nTimesToPrint )
FOR nCnt = 1 to nTimesToPrint
? DTOC(dDate) + " " + cString + " " + STR(nCnt)
ENDFOR
ENDPROC
Instruksi berikut adalah untuk memanggil prosedur, yaitu:
DO myproc WITH DATE(), "Hello World", 10
Menerima Nilai dari Function

Kondisi default nilai yang dikembalikan adalah true (.T.), namun dapat digunakan perintah
RETURN untuk mengembalikan suatu nilai. Contoh berikut adalah suatu fungsi tanggal untuk
mengetahui tanggal dua minggu lagi, yaitu:
FUNCTION plus2weeks
PARAMETERS dDate
RETURN dDate + 14
ENDFUNC
Instruksi untuk memanggil dan mengambil nilai yang dikembalikan disimpan dengan variabel
dDeadLine, adalah sebagai berikut:
dDeadLine = plus2weeks(DATE())

Mengelola Return Value


Nilai yang dikembalikan (return value) kemudian dapat disimpan kedalam suatu variabel,
ditampilkan langsung ke layar/window atau dicetak langsung ke printer atau disimpan dalam
suatu field file tabel. Dalam proses pemrograman berorientasi obyek, karakteristik inheritance
adalah merupakan implikasi dari pengelolaan return value. Hal ini akan terlihat pada
pengembangan suatu prosedur yang mempunyai hasil yang berbeda-beda hanya dengan
mengubah isian atau parameter yang diisinya/dikirimkan.

Contoh penulisan code dalam mengelola return value

CVar1 = myfunc ( )

? myfunc( )

This.Value=myfunc ()

@ 2,10 SAY myfunc( )

Verifikasi Parameter
Untuk mengenai jenis nilai yang dikirim atau yang dikembalikan oleh suatu prosedur atau
fungsi, apakah sesuai dengan kriteria yang ditentukan dalam penulisan parameter maka dapat
digunakan fungsi TYPE() dan PARAMETERS()

24
Fungsi berikut adalah penggunaan fungsi TYPE() untuk mendeteksi apakah variabel jenis
tanggal benar dikirimkan.
FUNCTION plus2weeks( dDate )
IF TYPE("dDate") = "D"
RETURN dDate + 14
ELSE
MESSAGEBOX( "Isilah dengan data jenis tanggal)
RETURN { - - }
ENDIF
ENDFUNC
Penggunaan fungsi PARAMETERS() adalah untuk mengetahui jumlah nilai parameter yang
dikirimkan. Prosedur berikut adalah suatu contoh nilai parameter yang harus dikirimkan adalah
3, dan jika kurang akan menghasilkan nilai .F..
PROCEDURE SaveValue( cStoreTo, cNewVal, lIsInTable )
IF PARAMETERS( ) < 3
MESSAGEBOX( "Kekurangan nilai parameter)
RETURN .F.
ENDIF
IF lIsInTable
REPLACE (cStoreTo) WITH (cNewVal)
ELSE
&cStoreTo = cNewVal
ENDIF
RETURN .T.
ENDPROC

Object Form
Form memiliki property yang menentukan bentuk form seperti posisi, ukuran dan warna dan
aspek perilaku form seperti apakah dapat diubah ukurannya atau tidak. Untuk memberikan
pemahaman mengenai object form, cobalah tuliskan perintah berikut dari jendela perintah.

Gambar 3.2
Membuat
Object Form

25
CREATE FORM adalah suatu bahasa perintah untuk membuat form. Syntax selengkapnya
adalah:

CREATE FORM [FormName | ?] [AS cClassName FROM cClassLibraryName | ?]


[NOWAIT] [SAVE] [DEFAULT] [[WINDOW WindowName1] [IN [WINDOW]
WindowName2 | IN SCREEN]]
Form yang telah dibuat adalah sebuah object yang mempunyai property, event dan method.
Berikut ini disebutkan property, event dan method yang ada pada sebuah object form.

Form Property, Method dan Events


Property: ActiveControl, ActiveForm, AlwaysOnBottom, AlwaysOnTop,
Application, AutoCenter, BackColor, BaseClass, BorderStyle, BufferMode, Caption,
Class, ClassLibrary, ClipControls, Closable, ColorSource, Comment, ContnousScroll
Property, ControlBox, ControlCount, Controls, CurrentX, CurrentY, DataEnvironment,
DataSession, DataSessionID, DefOLELCID Property, Desktop, DrawMode, DrawStyle,
DrawWidth, Enabled, FillColor, FillStyle, FontBold, FontCondense, FontExtend,
FontItalic, FontName, FontOutline, FontShadow, FontSize, FontStrikeThru,
FontUnderline, ForeColor, HalfHeightCaption, Height, HelpContextID,
HScrollSmallChange Property, Icon, KeyPreview, Left, LockScreen, MacDesktop,
MaxButton, MaxHeight, MaxLeft, MaxTop, MaxWidth, MDIForm, MinButton, MinHeight,
MinWidth, MouseIcon, MousePointer, Movable, Name, Objects, OLEDragMode,
OLEDragPicture, OLEDropEffects, OLEDropHasData, OLEDropMode, Parent,
ParentClass, Picture, ReleaseType, RightToLeft, ScaleMode, ScrollBars,
ShowInTaskbar, ShowTips, ShowWindow, SizeBox, TabIndex, TabStop, Tag, TitleBar
Property, Top, ViewPortHeight, ViewPortLeft, ViewPortTop, ViewPortWidth, Visible,
VscrollSmallChange, WhatsThisButton, WhatsThisHelpID, Width, WindowType,
WindowState, ZoomBox.

Events: Activate, Click, DblClick, Deactivate, Destroy, DragDrop, DragOver, Error,


GotFocus, Init, KeyPress, Load, LostFocus, MiddleClickEvent, MouseDown,
MouseMove, MouseUp, MouseWheel, Moved, OLECompleteDrag, OLEDragDrop,
OLEDragOver, OLEGiveFeedBack, OLESetData, OLEStartDrag, Paint, QueryUnload,
Resize, RightClick, Scrolled, Unload

Methods: AddObject, AddProperty, Box, Circle, Cls, Draw, Hide, Line, Move,
NewObject, OLEDrag, Point, Print, Pset, ReadExpression, ReadMethod, Refresh,
Release, RemoveObject, ResetToDefault, SaveAs, SaveAsClass, SetAll, SetViewPort,
Show, ShowWhatsThis, TextHeight, TextWidth, WhatThisMode, WriteExpression,
WriteMethod, Zorder.

Didalam form designer, property, event dan method tersebut ditampilkan dalam sebuah jendela
properties. Gambar 3.3 Menunjukkan Properties FormDoc1.

26
Gambar 3.3

Jendela Properties Form

ToolBar Form Control


Untuk mengisi layout form dengan bentuk input yang akan dibuat, tersedia dalam form control
yang berisi label, textbox, line, perintah, check kontrol, gambar, container, grid, combo box,
listbox, timer dan hyperlink. Apabila form designer aktif maka form kontrol dapat diaktifkan
sehingga dengan mudah melakukan modifikasi form.

Gambar 3.4
Form Controls

Kontrol untuk mengembalikan object pada kondisi netral.


Select Object

Kontrol untuk menampilkan pilihan Class


New Classes
String yang ditampilkan pada form. Label dipakai untuk judul dan
keterangan dari object-object lain.
Label
Berisi variabel yang bertipe string (karakter), tanggal, numerik,
dan logika. TextBox dapat berisi data dari tabel atau mewakili
sebuah variabel memori . Dengan TextBox, Anda dapat mengubah
Text Box data.

Berisi variabel yang bertipe memo, atau untuk isian karakter yang
panjang.
Edit Box

27
Object perintah untuk melakukan proses atau perintah-perintah
Command tertentu.
Button

Object perintah berkelompok.


Command
Group

Sekelompok alternatif pilihan.


Option Group

Untuk menyatakan keadaan biner. Misalnya benar atau salah, ya


atau tidak.
Check Box

Kombinasi dari sebuah daftar dan textbox. Anda dapat memilih


data dari dafar atau mengisikan data yang tidak ada dalam daftar.
Combo Box

Untuk menampilkan daftar pilihan.


List Box
Untuk mimilih nilai numerik. Object ini dilengkapi dengan anak
panah atas untuk menambah nilai dan anak panah bawah untuk
Spinner mengurangi nilai
Object untuk menampilkan variabel baik array ataupun dari sebuah
tabel.
Grid

Object untuk menampilkan gambar dalam sebuah file .BMP, JPG,


dan jenis file gambar lainnya.
Image

Object untuk mengatur waktu suatu event


Timmer

Adalah form yang dapat dibagi-bagi menjadi beberapa halaman.


Page Frame

ActiveX Object untuk menciptakan link ke aplikasi lain yang mendukung


Control OLE dan ActiveX.
(Ole Control )

ActiveX Bound Ole Bound Control, adalah sebuah link ke aplikasi lain yang
Control biasanya berupa file vcx.
( Ole Bound
Control )

28
Line, adalah object garis
Line

Shape control adalah kontrol grafis untuk menampilkan suatu kota,


lingkaran atau ellip.
Shape

Object Container dapat berisi object lain dan biasanya dibuat


Container untuk suatu even yang berhubungan dengan container itu sendiri.

Kontrol dalam suatu toolbar biasanya ditempatkan berdekatan


diantaranya, object ini merupakan pemisah diantara object-object
Separator yang ada dalam toolbar. Atau dalam suatu kelompok kontrol.
Suatu object HyperLink merupakan kemampuan navigasi Aplikasi
Visual FoxPro dan Active Documents dalam suatu kontainer seperti
Microsoft Internet Explorer. Dengan fasilitas object ini, sebuah
HyperLink aplikasi dapat dihubungkan atau berpindal ke URL (Uniform
Resource Locator)

Kontrol ini berfungsi untuk menampilkan builder wizard secara


Builder Lock langsung ketika suatu object diletakkan pada sebuah form.

Kontrol ini berfungsi untuk mengunci kontrol yang digunakan.


Button Lock

Merancang Form
Untuk memberikan pemahaman mengenai object form, dan attribut object yang dimiliki yaitu
property, method dan event akan dijelaskan dalam illustrasi contoh contoh berikut ini.
Contoh 1. Membuat Form Pendataan Mahasiswa

Gambar 3.5: Contoh Form Pendataan Mahasiswa

29
Urutan Penyelesaian:
1. Membuka form designer
Melalui jendela command, ketik CREATE FORM
2. Mengubah nama form (Caption), dengan nama Pendataan Mahasiswa
Perhatikan properties window, pilih Caption, kemudian ganti nama form1 dengan
Pendataan Mahasiswa.

3. Mengisi object form dengan string dibawah ini melalui control form dengan
object Labels. String yang dibuat yaitu NIM, Nama, Tgl.Pendaftaran, Umur,
Hobby dan Pekerjaan Orang Tua.
a. Melalui form control, Klik Button Lock
b. Klik Labels, kemudian klik area form pada posisi yang sesuai dengan lay
out sehingga muncul Label1, ulangi mengklik sebanyak 6x sehingga
muncul Label1, Label2, Label3, Label4, Label5 dan Label6. Kembalikan
kondisi form control ke Select Object.
c. Ubah property Caption label1 dengan NIM, label2 dengan Nama
Mahasiswa, label3 dengan Tgl.Pendaftaran, label4 dengan Umur, label5
dengan Hobby, label6 dengan Pekerjaan Orang Tua
4. Membuat isian setiap variabel.
a. Klik TextBox, dan letakkan disebelah kanan NIM, Nama Mahasiswa,
Tgl.Pendaftaran dan Umur
b. Klik Option Group, dan letakkan disebelah kanan hobby.
c. Klik ComboBox, dan letakkan disebelah kanan Pekerjaan Orang Tua.
5. Membuat Garis, Klik Line dan letakkan pada bagian bawah pekerjaan orang tua
6. Membuat perintah (Rekam), (Bersihkan Isian/Ulangi) dan (Kembali). Klik
Command Button dan letakkan dibawah garis. Ubah property caption
command1 dengan Rekam. Ulangi langkah ini untuk membuat perintah yang
lainnya.
7. Menyimpan Form. Melalui menu File, Klik Save As, kemudian dari kotak dialog
Save As beri nama form dengan FormMhs.
8. Menjalankan Form. Klik Kanan pada area form, kemudian pilih Run Form.
Atau tekan Tombol Ctrl+E.
9. Modifikasi Form. Melalui jendela perintah, ketik: MODIFY FORM
10. 10. Menutup Form. Klik Control Box - Close

Latihan 1: Merancang Berbagai Form Isian


Buatlah form untuk pendataan karyawan, barang dagangan/Inventory,
Daerah/Segmen Pemasaran, Daftar Wajib Pajak Di Bali, Aktiva tetap, Daftar
rekening akuntansi, nasabah tabungan BPD Bali, debitur BPD Bali, Pelanggan Tiara
Dewata, dan Supplier Tiara Dewata, Pelanggan Telkomsel (Kartu Hallo).

30
4
Mengenal Data

Pokok Bahasan:
Database dan Tabel
Teknik Merancang Struktur Tabel
Membuat, Membuka dan Menutup Tabel Melalui File Program

Database dan Tabel


Database dan Tabel adalah dua istilah yang berbeda. Kedua istilah tersebut pernah dipakai
untuk mengacu sebuah tabel, tetapi cara tersebut salah. Tabel menyatakan sebuah file (DBF)
yang berisi data. Sedangkan Database berisi kumpulan tabel. Pada tahun 1995, FoxPro
memperkenalkan database container yang berisi kumpulan tabel. Database container juga
menyediakan fasilitas tambahan yaitu:

Mengizinkan nama panjang untuk field dan table


Klausa validasi record dan validasi field
Nilai devault
Caption yang telah disimpan
Database container (DBC) adalah fasilitas aplikasi yang memungkinkan untuk mendefinisikan
atau menulis kode/program sebagai methods, function, atau procedure. Berbagai kode
program dapat ditulis seperti membuka database, membuka tabel, mencetak isi tabel dan
perintah-perintah lainnya.

Tabel adalah file yang berisi kumpulan informasi yang disimpan dalam field/kolom tertentu
sesuai dengan jenis field. Jenis field dalam program Visual FoxPro dibedakan kedalam
karakter ( C ), tanggal (D), tanggal dan waktu (T), numeric (N), numeric (F), Integer (I), Double
(B), Currency (Y), Logical (L), Memo (M) dan General (G). Tabel 4.1 menunjukkan jenis field
yang digunakan dalam aplikasi Visual FoxPro.

Tabel 4.1: Jenis Field

Jenis Field Lebar Width Decimal


Keterangan
(FieldType) (nField Width) (nPrecision)
C N - Character
D - - Date/Tanggal
T - - DateTime

31
N N d Numeric
F N d Floating Numeric
I - - Integer
B - d Double
Y - - Currency
L - - Logical
M - - Memo
G - - General

Teknik Merancang Struktur Tabel


Bila aplikasi spreadsheet seperti Microsoft Excel, Lotus, dan sejenisnya dapat dipahami
dengan baik maka tidaklah asing dalam mempelajari struktur tabel. Mengapa demikian,
karena spreadsheet adalah ibunya database/tabel. Walaupun demikian tidaklah cukup bila
wawasan mengenai perilaku data tidak diketahui.

Kumpulan kertas-kertas yang berisi teks sebagai hasil proses pekerjaan bagian administrasi,
akuntansi, atau tugas-tugas kantor yang selalu bergelut dengan kertas dan ballpoint adalah
sumber informasi yang dapat dipahami dan tentu selanjutnya adalah mengkaji lebih lanjut
mengenai sifat informasi yang diperoleh.

Dalam bahasan ini, penulis ingin memberikan bayangan bahwa bagaimana tahapan untuk
merancang struktur tabel. Walaupun dalam topik ini tidak mengharuskan mahasiswa untuk
mampu menganalisa dan menyusun rancangan struktur tabel.

Sebagai contoh sederhana, cobalah bayangkan daftar absensi yang saudara tanda tangani
setiap mengikuti kuliah. Anggaplah daftar absensi seperti tabel 3.1. Berdasarkan daftar
absensi tersebut, dapat disusun rancangan struktur tabel sesuai dengan sifatnya.

Tabel 4.2: Daftar Absensi


No. TANDA TANGAN
NIM NAMA
Urut 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Berdasarkan tabel 4.2, maka dapat disusun struktur tabel dalam program Visual FoxPro
sebagai berikut:
Field Fieldname Type Width
1 Nim Character 12
2 Nama Character 40
3 Paraf01 Character 1
4 Paraf02 Character 1
5 Paraf03 Character 1
6 Paraf04 Character 1
7 Paraf05 Character 1

32
8 Paraf06 Character 1
9 Paraf07 Character 1
10 Paraf08 Character 1
11 Paraf09 Character 1
12 Paraf10 Character 1
13 Paraf11 Character 1
14 Paraf12 Character 1
15 Paraf13 Character 1
16 Paraf14 Character 1

Membuat, Membuka dan Menutup Tabel Melalui File Program


Dalam membuat, membuka dan menutup sebuah tabel atau file tabel maka perlu diketahui
bahasa yang terkait. Bahasa pemrograman yang terkait adalah:

MODIFY COMMAND, yaitu perintah untuk membuat file program


DO, yaitu perintah untuk menjalankan file program
IFENDIF, yaitu perintah kondisional yang didasarkan pada nilai expresi logika
FILE(), yaitu perintah yang menghasilkan nilai .T. (True/Benar) bila sebuah file
terdapat dalam sebuah disk.
CREATE TABLE, yaitu perintah untuk membuat tabel.
USE, yaitu perintah untuk membuka atau menutup sebuah file tabel
USED, yaitu perintah untuk mengetahui bahwa suatu tabel aktif atau tidak aktif
ALIAS(), yaitu perintah untuk mengenai nama samaran dari suatu tabel aktif
BROWSE, yaitu perintah untuk menampilkan isi tabel
EDIT, yaitu perintah untuk menampilkan isi tabel dalam bentuk form entry
CLOSE TABLE [ALL], yaitu perintah untuk menutup tabel aktif

Membuat File Tabel


1. Melalui jendela perintah, ketik instruksi:
MODIFY COMMAND pCreaTbl
Jika perintah benar ditulis maka muncul kotak Text Editor, seperti gambar
4.1.

Gambar 4.1
Kotak Text Editor

2. Melalui kotak Text Editor, ketik perintah sebagai berikut:

33
NB Elemen Program
1 IF !FILE('TBLMHS.DBF')
2 CREATE TABLE TBLMHS ( NIM C(12), NAMA C(40), ;
3 PARAF01 C(1), PARAF02 C(1),PARAF03 C(1),;
4 PARAF04 C(1),PARAF05 C(1),PARAF06 C(1),;
5 PARAF07 C(1),PARAF08 C(1),PARAF09 C(1),;
6 PARAF10 C(1),PARAF11 C(1),PARAF12 C(1),;
7 PARAF13 C(1),PARAF14 C(1) )
8 ENDIF
3. Simpan file program dengan menekan Tombol Ctrl+W
4. Jalankan program pCreaTbl dengan mengetik perintah DO pCreaTbl
Maka file tabel yang diberi nama TBLMHS akan dibuat.

Membuka, Menampilkan dan Menutup File Tabel


1. Melalui jendela perintah, ketik instruksi:
MODIFY COMMAND pBukaTbl
2. Melalui kotak Text Editor, ketik perintah sebagai berikut:
NB Elemen Program
1 CLOSE TABLE ALL
2 IF FILE('TBLMHS.DBF')
3 USE TBLMHS
4 ENDIF
5 BROWSE
6 CLOSE TABLE ALL
3. Simpan file program dengan menekan Tombol Ctrl+W
4. Jalankan program pBukaTbl dengan mengetik perintah DO pBukaTbl

34
5
Mengenal Function dan Command

Pokok Bahasan:
Function dalam Visual FoxPro
Command dalam Visual FoxPro

Function dalam Visual FoxPro

ABS( )
Mengembalikan nilai absolut dari ekspresi numeric
ABS(nExpression)
Contoh:
? ABS(-45) && Displays 45
? ABS(10-30) && Displays 20
? ABS(30-10) && Displays 20
STORE 40 TO gnNumber1
STORE 2 TO gnNumber2
? ABS(gnNumber2-gnNumber1) && Displays 38

ACLASS( )
Membuat array class dari object, dan mengembalikan nilai numeric
ACLASS(ArrayName, oExpression)
Contoh:
CLEAR
frmMyForm = CREATEOBJECT("FormGrandChild")
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm) && Creates an
array
? gaNewarray(nCount) && Displays the names of the classes
ENDFOR
RELEASE frmMyForm

DEFINE CLASS FormChild AS FORM


ENDDEFINE

DEFINE CLASS FormGrandChild AS FormChild


ENDDEFINE

35
ACOPY( )
Menyalin element dari satu array ke array lain
ACOPY(SourceArrayName, DestinationArrayName
[, nFirstSourceElement [, nNumberElements [, nFirstDestElement ]]])
Contoh:
CLOSE DATABASES
OPEN DATABASE (D:\prod3\data\testdata)
USE mhsd3
SELECT nama FROM mhsd3 ORDER BY jurusan ;
WHERE nilai>=70 INTO ARRAY gaJurusan

= ACOPY(gaJurusan, gaJurusanTemp)
CLEAR
DISPLAY MEMORY LIKE gaJurusanTemp

ADATABASES( )
Membuat array dari semua database terbuka termasuk lokasi tempat penyimpanan
ADATABASES(ArrayName)
Contoh:
SET PATH TO (d:\prod3\data\') && Sets path to database
OPEN DATABASE testdata && Buka database
CLEAR
? ADATABASES(gaDatabase) && Creates an array of open databases
DISPLAY MEMORY LIKE gadatabase && Displays the contents of the array
CLOSE DATABASES

ADBOBJECTS( )
Membuat variabel array dari database yang aktif
ADBOBJECTS(ArrayName, cSetting)

cSetting Nama
CONNECTION Nama Connection
RELATION Relasi Table
TABLE Nama Table
VIEW Nama View

Contoh:
OPEN DATABASE (d:\prod3\Data\testdata')

* Function call with cSetting for table names


=ADBOBJECTS(gaTables, "TABLE")

* Displays array gaTables created by ADBOBJECTS( ) function


DISPLAY MEMORY LIKE gaTables

36
ADDBS( )
Menambah backslash ( \ ) jika diperlukan pada ekspresi path
ADDBS(cPath)
Contoh:
CLEAR
? ADDBS(D:\PROD3) && Display D:\PROD3\
? ADDBS(D:\PROD3\) && Display D:\PROD3\

ADEL( )
Menghapus suatu elemen array dari satu array dimensional, atau suatu baris atau kolom dari
dua array dimensional. Jika proses menghapus berhasil maka fungsi ini mengembalikan nilai
1, sebaliknya 0.
ADEL(ArrayName, nElementNumber [, 2])
Contoh:
CLOSE DATABASES
OPEN DATABASE ('d:\prod3\Data\testdata')
USE mhsd3 && buka tabel nilai mahasiswa
SELECT JURUSAN FROM mhsd3 ;
WHERE nilai>=70 ;
INTO ARRAY gaJurusan
gnCount = _TALLY
gcJurusan= 'Akuntansi'
CLEAR
DISPLAY MEMORY LIKE gaNilai*

gnPos = ASCAN(gaJurusan, gcJurusan) && Mencari Jurusan Akuntansi


IF gnPos != 0
*** Jurusan ditemukan, hapus dari array
= ADEL(gaJurusan, gnPos)
gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaJurusan NOCONSOLE

ADIR( )
Membuat informasi mengenai file kedalam suatu array dan kemudian mengembalikan daftar
file
ADIR(ArrayName [, cFileSkeleton [, cAttribute [, nFlag]]])
Contoh:
SET DEFAULT TO d:\prod3\data
gnDbcnumber = ADIR(gaDatabase, '*.DBC') && Create array
CLEAR
FOR nCount = 1 TO gnDbcnumber && Loop for number of databases
? gaDatabase(nCount,1) && Display database names
ENDFOR
SET PATH TO HOME( ) && Set path to Visual FoxPro directory

37
AFIELDS( )
Menyajikan informasi mengenai struktur tabel kedalam array dan mengembalikan jumlah field
dalam tabel tersebut.
AFIELDS(ArrayName [, nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE d:\prod3\data\testdata
USE mhsd3
gnFieldcount = AFIELDS(gaMyArray) && Create array
CLEAR
FOR nCount = 1 TO gnFieldcount
? gaMyArray(nCount,1) && Display field names
ENDFOR

AFONT( )
Memberikan informasi mengenai huruf yang ada kedalam sebuah array
AFONT(ArrayName [, cFontName [, nFontSize]])
Contoh:
CLEAR
=AFONT(gaFontArray) && Array containing font names
gnNumFonts = ALEN(gaFontArray) && Number of fonts
IF gnNumFonts > 10
gnNumFonts = 10 && Display first 10 fonts
ENDIF

FOR nCount = 1 TO gnNumFonts


? ALLTRIM(gaFontArray(nCount)) && Display font name
?? ' This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

AINS( )
Insert suatu elemen kedalam array satu dimensi atau kedalam baris atau kolom kedalam array
dua dimensi. Fungsi ini mengembalikan nilai numerik 1 jika elemen berhasil disisipkan.
AINS(ArrayName, nElementNumber [, 2])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata)
USE mhsd3
SELECT Jurusan FROM mhsd3 ;
WHERE nilai>=70 ;
INTO ARRAY gaJurusan
gnCount = _TALLY
gcName = 'Pemasaran
CLEAR
DISPLAY MEMORY LIKE gaJurusan
IF ASCAN(gaJurusan, gcName) = 0 && Mencari jurusan pemasaran
*** Company not found-add it ***
DIMENSION gaJurusan[gnCount+1,1]

38
= AINS(gaJurusan, gnCount-1)
gaJurusan[gnCount-1] = gcName
ENDIF
DISPLAY MEMORY LIKE gaJurusan

ALEN( )
Mengembalikan jumlah dari elemen, baris dan kolom dalam suatu array.
ALEN(ArrayName [, nArrayAttribute])
Nilai nArrayAttribute, menentukan apakah fungsi ini mengembalikan jumlah elemen, baris atau
kolom, nilai 0 = jumlah elemen, 1 = baris dan 2= kolom

Contoh:
CLEAR
=AFONT(gaFontArray) && Array containing font names
gnNumFonts= ALEN(gaFontArray) && Number of fonts
IF gnNumFonts > 10
gnNumFonts = 10 && Display first 10 fonts
ENDIF
FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount)) && Display font name
?? ' This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

ALIAS( )
Mengembalikan nama alias tabel dari area kerja yang ditentukan atau yang sedang aktif.
ALIAS([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata)
USE mhsd3
CLEAR
? ALIAS( ) && Display the alias
SELECT 0
USE mhsd3 AGAIN ALIAS MhsD3Fe
? ALIAS( ) && Display the alias

ALINES( )
Mengcopy setiap baris dalam ekspresi character atau field memo kedalam suatu baris karakter
menjadi array.
ALINES(ArrayName, cExpression [, lTrim] [cParseChar, , ,cParseChar])
Parameters
ArrayName, Nama array yang akan dibuat
CExpression, Ekspresi karakter atau field memo.
LTrim, Jika diisi .t. maka spasi kosong dihapus, sebaliknya .f.
CParseChar, Menentukan karakter linefeed CHR(10), carried return
CHR(13) pada setiap ekspresi karakter.

39
Contoh:
CLOSE DATABASES
CLEAR
SET TALK OFF
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
? ALINES(aMyarray,mhsd3.catatan,CHR(13)) && Displays 1
? ALINES(aMyarray,mhsd3.catatan,".") && Displays 7
? ALINES(aMyarray,mhsd3.catatan,",") && Displays 4
? ALINES(aMyarray,mhsd3.catatan," ") && Displays 75
? ALINES(aMyarray,mhsd3.catatan,".", ",") && Displays 10
? ALINES(aMyArray,mhsd3.catatan) && Displays 1
? aMyArray(1)

ALLTRIM( )
Menghapus spasis kosong pada ekpresi karakter.
ALLTRIM(cExpression)
Contoh:
CLEAR
=AFONT(gaFontArray) && Array containing font names
gnNumFonts= ALEN(gaFontArray) && Number of fonts
IF gnNumFonts > 10
gnNumFonts = 10 && Display first 10 fonts
ENDIF

FOR nCount = 1 TO gnNumFonts


? ALLTRIM(gaFontArray(nCount)) && Display font name
?? ' This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

APRINTERS( )
Menyajikan informasi nama printer yang disetup/diinstal dalam Windows Print Manager
kedalam suatu variabel memory
APRINTERS(ArrayName)
Contoh:
IF APRINTERS(gaPrinters) > 0
CLEAR
DISPLAY MEMORY LIKE gaPrinters
ELSE
WAIT WINDOW 'No printers installed.'
ENDIF

ASC( )
Mengembalikan nilai ANSI dalam suatu ekspresi karakter
ASC(cExpression)
Contoh:
STORE 'ABCDEFGHIJ' TO gcANSI && 10 characters

40
CLEAR
FOR nCOUNT = 1 TO 10
? SUBSTR(gcANSI, nCount,1) && Display a character
?? ASC(SUBSTR(gcANSI, nCount)) && Display ANSI value
ENDFOR

ASCAN( )
Mencari suatu array untuk setiap elemen yang berisi data sama dan jenis data yang
diekspresikan
ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [,
nSearchColumn [, nFlags ]]]])
Keterangan Parameters

ArrayName, Nama array yang ditentukan

EExpression, Ekspresi yang dibuat

NStartElemen, Awal elemen

nElementsSearched, Jumlah elemen yang dicari

nSearchColumn, Kolom array yang dicari. Gunakan 0 atau negatif untuk mencari seluruh
array.

NFlags, Tambahan kriteria pencarian.

Contoh:
CLOSE DATABASES
OPEN DATABASE ('d:\prod3\Data\testdata')
USE mhsd3 && buka tabel nilai mahasiswa
SELECT JURUSAN FROM mhsd3 ;
WHERE nilai>=70 ;
INTO ARRAY gaJurusan
gnCount = _TALLY
gcJurusan= 'Akuntansi'
CLEAR
DISPLAY MEMORY LIKE gaNilai*

gnPos = ASCAN(gaJurusan, gcJurusan) && Mencari Jurusan Akuntansi


IF gnPos != 0
*** Jurusan ditemukan, hapus dari array
= ADEL(gaJurusan, gnPos)
gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaJurusan NOCONSOLE

ASORT( )
MenSort elemen-elemen dalam sebuah array dalam urutan ascending atau descending order.
Jika berhasil menghasilkan angka 1, sebaliknya 1.
ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder [,
nFlags]]])

41
Instruksi berikut adalah membuat array yang diberi nama gaArray:
DIMENSION gaArray(3,2)
gaArray(1) = 'G'
gaArray(2) = 'A'
gaArray(3) = 'C'
gaArray(4) = 'Z'
gaArray(5) = 'B'
gaArray(6) = 'N'

=ASORT(gaArray,1)
Contoh:
CLOSE DATABASES
OPEN DATABASE ('d:\prod3\Data\testdata')
USE mhsd3 && buka tabel nilai mahasiswa

COUNT TO gnCount && Jumlah Mahasiswa


DIMENSION gaNama(gnCount,1) && Membuat Array Jurusan
COPY TO ARRAY gaNama FIELD Nama && Fill the array
CLEAR
? 'Nama Mahasiswa:'
?
FOR nCount = 1 TO 20
? gaNama(nCount) && Menampilkan 20 Mahasiswa
ENDFOR
= ASORT(gaNama) && Sort the array
?
? 'Nama Mahasiswa Telah Disortir:'
?
FOR nCount = 1 TO 20
? gaNama(nCount) && Menampilkan 20 mahasiswa setelah disortir
ENDFOR

AT( )
Mengembalikan posisi awal berupa nilai numeric pada ekspresi karakter atau fiel memo
dengan ekspresi karakter atau field memo yang lain.
AT(cSearchExpression, cExpressionSearched [, nOccurrence])
Contoh:
STORE 'Now is the time for all good men' TO gcString
STORE 'is the' TO gcFindString
CLEAR
? AT(gcFindString,gcString) && Displays 5
STORE 'IS' TO gcFindString
? AT(gcFindString,gcString) && Displays 0, case-sensitive

BAR( )
Mengembalikan angka apabila item dari menu yang dibuat dengan fungsi DEFINE POPUP
BAR( )
Contoh:
*** Nama Program: BAR_EXAM.PRG ***
CLEAR

42
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padConv OF _MSYSMENU ;
PROMPT '\<Conversions' COLOR SCHEME 3 KEY ALT+C, ''
DEFINE PAD padCard OF _MSYSMENU ;
PROMPT 'Card \<Info' COLOR SCHEME 3 KEY ALT+I, ''
ON PAD padConv OF _MSYSMENU ACTIVATE POPUP popConv
ON PAD padCard OF _MSYSMENU ACTIVATE POPUP popCard
DEFINE POPUP popConv MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popConv PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF popConv PROMPT '\<Length' KEY CTRL+L, '^L'
DEFINE BAR 3 OF popConv PROMPT 'Ma\<ss' KEY CTRL+S, '^S'
DEFINE BAR 4 OF popConv PROMPT 'Spee\<d' KEY CTRL+D, '^D'
DEFINE BAR 5 OF popConv PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF popConv PROMPT 'T\<ime' KEY CTRL+I, '^I'
DEFINE BAR 7 OF popConv PROMPT 'Volu\<me' KEY CTRL+M, '^M'

ON SELECTION POPUP popConv;


DO choice IN bar_exam WITH BAR( ), POPUP( )
DEFINE POPUP popCard MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popCard PROMPT '\<View Charges' KEY ALT+V, ''
DEFINE BAR 2 OF popCard PROMPT 'View \<Payments' KEY ALT+P, ''
DEFINE BAR 3 OF popCard PROMPT 'Vie\<w Users' KEY ALT+W, ''
DEFINE BAR 4 OF popCard PROMPT '\-'
DEFINE BAR 5 OF popCard PROMPT '\<Charges ' KEY ALT+C
DEFINE BAR 6 OF popCard PROMPT '\-'
DEFINE BAR 7 OF popCard PROMPT 'E\<xit ' KEY ALT+X

ON SELECTION POPUP popCard;


DO choice IN bar_exam WITH BAR( ), POPUP( )

PROCEDURE choice
PARAMETERS gnBar, gcPopup
WAIT WINDOW 'Anda memilih bar #' + LTRIM(STR(gnBar)) + ;
' dari popup ' + gcPopup NOWAIT
SET SYSMENU TO DEFAULT

BETWEEN( )
Menentukan nilai logika atau null, apakah suatu nilai dalam ekspresi berada diantara nilai yang
ditentukan.
BETWEEN(eTestValue, eLowValue, eHighValue)
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3

CLEAR
SCAN FOR BETWEEN(nilai,65,75)
? nim, nama
ENDSCAN

BOF( )
Menentukan apakah pointer rekord ada pada poisi awal

43
BOF([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
CLEAR
OPEN DATABASE (d:\prod3\data\testdata)
USE mhsd3
GO BOTTOM
local recCtr, btnValue
recCtr = 0
btnValue = 1
DO WHILE btnValue = 1 AND NOT BOF()
? "Nama Mahasiswa : " + nama
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Klik OK untuk melanjutkan, ;
Cancel untuk kembali.",33)
clear
endif
Skip -1 && Move up one record
ENDDO
=MESSAGEBOX("Proses selesai",48)

CAPSLOCK( )
Mengembalikan mode tombol CAPS LOCK atau menset menjadi On atau Off
CAPSLOCK([lExpression])
Contoh:
glOldLock = CAPSLOCK( ) && Save original setting
= CAPSLOCK(.T.) && Turn CAPS LOCK on
= CAPSLOCK(glOldLock) && Return to original setting
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(glOldLock) && Return to original setting

CDOW( )
Mengembalikan nama hari dari ekspresi Date atau DateTime
CDOW(dExpression | tExpression)
Contoh:
STORE {^1998-02-16} TO gdDate
CLEAR
? CDOW(gdDate) && Displays Monday

CDX( )
Mengembalikan nama file index (CDX, coumpound index)
CDX(nIndexNumber [, nWorkArea | cTableAlias])
Contoh:

44
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && Checks for tags in the index
? CDX(nCount) && Display structural index names
ELSE
EXIT && Exit the loop when no more tags are found
ENDIF
ENDFOR

CHR( )
Mengembalikan character dari angka kode ANSI
CHR(nANSICode)
Contoh:
CLEAR
FOR nCOUNT = 65 TO 75
? nCount && Display numeric value
?? ' ' + CHR(nCount) && Display character
ENDFOR

CHRSAW( )
Untuk mengetahui apakah suatu karakter tersimpan dalam buffer keyboard
CHRSAW([nSeconds])
Contoh:
SET TALK OFF
DEFINE WINDOW wEnter FROM 7,10 to 13,70 PANEL
ACTIVATE WINDOW wEnter
@ 1,3 SAY 'Customer: ' GET gcCustomer DEFAULT SPACE(40)
@ 3,3 SAY 'Address: ' GET gcAddress DEFAULT SPACE(40)
WAIT WINDOW 'Waiting for input' NOWAIT
IF NOT CHRSAW(5)
DEACTIVATE WINDOW wEnter
CLEAR GETS
ELSE
READ
DEACTIVATE WINDOW wEnter
ENDIF
RELEASE WINDOW wEnter

CHRTRAN( )
Mengganti setiap karakter dalam suatu ekspresi karakter.
CHRTRAN(cSearchedExpression, cSearchExpression,
cReplacementExpression)
Contoh:
? CHRTRAN('ABCDEF', 'ACE', 'XYZ') && Displays XBYDZF
? CHRTRAN('ABCD', 'ABC', 'YZ') && Displays YZD
? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST') && Displays XBYDZF

45
CMONTH( )
Mengembalikan nama-nama bulan yang diberikan dari ekspresi Date atau DateTime
CMONTH(dExpression | tExpression)
Contoh:
? CMONTH(DATE( ))
STORE {^1998-02-16} TO gdDueDate
? 'Your payment was due in ', CMONTH(gdDueDate)
STORE gdDueDate+60 TO gdFinalDate
? 'You must pay by ', CMONTH(gdFinalDate)

CTOD( )
Mengubah ekspresi karakter menjadi ekspresi Date
CTOD(cExpression)
Contoh:
STORE 1998-02-16 TO cTanggal
dTanggal=CTOD(cTanggal)

CTOT( )
Mengembalikan nilai DateTime dari ekspresi karakter
CTOT(cCharacterExpression)
Contoh:

Access 2000 XML Date Format:


*2000-10-24T13:30:00 (24-hour exported from Access, whether
*original was in 12- or 24-hour format)
? CTOT("2000-10-24T13:30:00")
SQL 2000 XML Date Format:
2000-10-24T20:47:58.170 && datetime (24 -hour)
2000-10-24T21:11:00 && Small DT (24-hour)

CURDIR( )
Mengembalikan nama direktory aktif
CURDIR([cExpression])
Contoh:
CLEAR
? 'Current directory: ', CURDIR( )
gcOldDir = SET('DEFAULT') + SYS(2003)
SET DEFAULT TO (HOME( ))
? 'Visual FoxPro directory: ', CURDIR( )
SET DEFAULT TO (gcOldDir)
? 'Current directory: ', CURDIR( )

46
DATE( )
Mengembalikan tanggal sistem, atau membuat tanggal yang sesuai.
DATE([nYear, nMonth, nDay])
Contoh:
CLEAR
SET CENTURY OFF
? DATE( ) && Displays today's date without the century
SET CENTURY ON
? DATE( ) && Displays today's date with the century
? DATE(1998, 02, 16) && Displays a year 2000-compliant Date value

DATETIME( )
Mengembalikan tanggal dan jam sistem, atau yang ditentukan
DATETIME([nYear, nMonth, nDay [, nHours [, nMinutes [, nSeconds]]]])
Contoh:
tNewyear = DATETIME(YEAR(DATE( ) ) + 1, 1, 1) && Next New Year
tToday = DATETIME( )
nSecondstonewyear = tNewyear - tToday
CLEAR
? "There are " + ALLTRIM (STR(nSecondstonewyear)) ;
+ " seconds to the next New Year."

CLEAR
SET CENTURY ON
SET DATE TO AMERICAN
? DATETIME(1998, 02, 16, 12, 34, 56) && Hasil: 02/16/1998 12:34:56 PM

DAY( )
Mengembalikan angka hari pada bulan yang diberikan oleh ekspresi Date atau DateTime
DAY(dExpression | tExpression)
Contoh:
STORE {^1998-03-05} TO gdBDate
CLEAR
? CDOW(gdBDate) && Displays Thursday
? DAY(gdBDate) && Displays 5
? 'That date is ', CMONTH(gdBDate), STR(DAY(gdBDate),2)

DBC( )
Mengambalikan nama dan path dari database aktif
DBC( )
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')

CLEAR
? DBC( ) && nampak path dan nama database

47
DBF( )
Mengembalikan nama tabel atau nama alias yang terbuka pada area tertentu
DBF([cTableAlias | nWorkArea])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3 IN 2 ALIAS mhsd3fe
CLEAR
? DBF(2) && nampak mhsd3.dbf
? DBF('mhsd3fe') && nampak mhsd3.dbf
CLOSE DATABASES
? DBF( ) && nampak kosong

DBSETPROP( )
Menentukan property database atau field, nama koneksi, tabel atau view
DBSETPROP(cName, cType, cProperty, ePropertyValue)

DBGETPROP( )
Mengembalikan property database, field, nama koneksi, tabel atau view
DBGETPROP(cName, cType, cProperty)

cType = CONNECTION, DATABASE, FIELD, atau VIEW


Contoh:
CLOSE DATABASES
CLEAR
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
= DBSETPROP("mhsd3.nim", "Field", "Comment", ;
"Nomor induk mahasiswa")
cRESULTS = DBGETPROP("customer.cust_id", "Field", "Comment")
WAIT WINDOW "Koment field NIM : "+ cRESULTS

DBUSED( )
Mengembalikan nilai true (.T.) jika database yang disebutkan aktif
DBUSED(cDatabaseName)
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')

CLEAR
? 'Testdata database open? '
?? DBUSED('testdata') && Displays .T.
? 'Test database open? '
?? DBUSED('test') && Displays .F.

48
DELETED( )
Mengembalikan nilai logika (.T. atau .F.) apakah sebuah rekord telah dihapus
DELETED([cTableAlias | nWorkArea])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
DELETE FROM mhsd3 WHERE nilai<65
CLEAR
LIST FIELDS nim, nama FOR DELETED( ) && List marked records
RECALL ALL && Unmark all records marked for deletion

DESCENDING( )
Mengembalikan nilai logika apakah indeks dibuat dengan urutan DESCENDING
DESCENDING([CDXFileName[, nIndexNumber [, nWorkArea | cTableAlias]]])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR

FOR nCount = 1 TO 254


IF !EMPTY(TAG(nCount)) && Checks for tags in the index
? TAG(nCount) + ' Descending? ' && Display tag name
?? DESCENDING(nCount) && Display descending status
ELSE
EXIT && Exit the loop when no more tags are found
ENDIF
ENDFOR

DIRECTORY( )
Mengembalikan nilai true (.T.) jika direktory yang ditentukan ada pada disk
DIRECTORY(cDirectoryName)

DISKSPACE( )
Mengembalikan jumlah byte yang tersedia pada disk default atau yang dipilih
DISKSPACE([cVolumeName [, nType]])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR
gnTableHead = HEADER( )
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Sufficient diskspace to sort.'
ELSE

49
WAIT WINDOW 'Insufficient diskspace. Sort cannot be done.'
ENDIF

DisplayPath( )
DisplayPath(cFilename, nMaxLength)
Contoh:
? DISPLAYPATH('d:\prod3\data\mhsd3.dbf',10) & mhsd3.dbf

DMY( )
Mengembalikan ekspresu karakter dalam format dd-mm-yyyy dari ekspresi date atau datetime
DMY(dExpression | tExpression)
Contoh:
CLEAR
SET CENTURY OFF
? DMY(DATE( ))
SET CENTURY ON
? DMY(DATE( ))

DOW( )
Mengembalikan angka hari mingguan dari ekspresi Date atau DateTime
DOW(dExpression | tExpression [, nFirstDayOfWeek])

Angka hari: 1=Minggu, 2=Senin, 3=Rabu, 4=Kemis, 5=Jumat, 6=Sabtu


Contoh:
STORE DATE( ) TO gdDayNum
CLEAR
? DOW(gdDayNum)
? CDOW(gdDayNum)

DRIVETYPE( )
Mengembalikan jenis drive yang digunakan
DRIVETYPE(cDrive)

cDrive Jenis Drive


1 No type
2 Floppy disk
3 Hard disk
4 Removable drive or network drive
5 CD-ROM
6 RAM disk1

50
DTOC( )
Mengubah jenis karakter dari ekspresi Date atau DateTime
DTOC(dExpression | tExpression [, 1])

DTOS( )
Mengembalikan karakter tanggal dalam format yyyymmdd dari ekspresi date atau datetime
DTOS(dExpression | tExpression)
Contoh:
CLEAR
? DTOS(DATE( ))

DTOT( )
Mengembalikan nilai DateTime dari ekspresi date
DTOT(dDateExpression)
Contoh:
? DTOT({^1998-02-16}) && Displays 02/16/1998 12:00:00am

EDITSOURCE( )
Membuka kotak editor untuk mengubah sumber program.
EditSource(cShortCutID | [ cFilename [, nLineNo] [, cClassName]
[, cMethodName|cProcName]])
Contoh:
EDITSOURCE('d:\prod3\progs\program1.prg',2)

EMPTY( )
Menentukan apakah suatu ekspresi yang dievaluasi kosong
EMPTY(eExpression)

EOF( )
Menentukan apakah posisi pointer rekord ada pada akhir file
EOF([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
CLEAR
OPEN DATABASE (d:\prod3\data\testdata)
USE mhsd3
GO TOP
local recCtr, btnValue
recCtr = 0
btnValue = 1

51
DO WHILE btnValue = 1 AND NOT EOF()
? "Nama : " + Nama
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Klik OK=Lanjut,Cancel=Kembali,33)
clear
endif
Skip 1
ENDDO
=MESSAGEBOX("Selesai,48)

ERROR( )
Mengembalikan angka ERROR terhadap setiap kesalahan yang terjadi
ERROR( )
Contoh:
CLEAR
ON ERROR DO errhand WITH ERROR( ), MESSAGE( )

BRWSE
ON ERROR
RETURN

*** Error handler ***

PROCEDURE errhand
PARAMETER errnum,message
? Message
? 'Error number: '+ ALLTRIM(STR(Errnum))
RETURN

EVALUATE( )
Untuk mengetahui jenis ekspresi dari ekspresi karakter
EVALUATE(cExpression)

EXP( )
Menghitung eksponen dari nilai e (ex ) dimana x adalah ekspresi numerik
EXP(nExpression)
Contoh:
? EXP(0) && Displays 1.00
? EXP(1) && Displays 2.72

FCOUNT( )
Mengembalikan jumlah field dalam sebuah tabel
FCOUNT([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES

52
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
SELECT 0
USE employee && Opens employee table

CLEAR
? FCOUNT('CUSTOMER') && Displays 13, # of fields in Customer
? FCOUNT('EMPLOYEE') && Displays 22, # of fields in Employee

FDATE( )
Mengembalikan tanggal waktu modifikasi terakhir suatu file
FDATE(cFileName [, nType])
Contoh:
? FDATE('FOXUSER.DBF', 1) && Displays the last modification DateTime

FIELD( )
Mengembalikan nama sebuah field dalam suatu tabel
FIELD(nFieldNumber [, nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

CLEAR
FOR gnCount = 1 TO FCOUNT( ) && Loop for number of fields
? FIELD(gnCount) && Display each field
NEXT
?
? 'Number of fields: ' + ALLTRIM(STR(gnCount -1))

FILE( )
Mengembalikan nilai true (.T.) jika file yang ditentukan ada pada disk
FILE(cFileName)
Contoh:
SET PATH TO d:\prod3\data
CLEAR
IF FILE('mhsd3.dbf')
WAIT WINDOW 'File mhsd3.dbf ada
ELSE
WAIT WINDOW 'File mhsd3.dbf tidak ada
ENDIF

FILTER( )
Mengembalikan ekspresi FILTER yang dibuat dari perintah SET FILTER
FILTER([nWorkArea | cTableAlias])

53
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
SET TALK ON
SET FILTER TO SUBSTR(nama,3,1)=A

CLEAR
? FILTER( )
STORE FILTER('mhsd3') TO gcOldFilter
SET FILTER TO Left(Nim,2)==01

? FILTER( )
SET FILTER TO &gcOldFilter
? FILTER( )

LIST FIELDS nim, nama

FLOCK( )
Mengunci file tabel pada area aktif atau tabel yang ditentukan, mengembalikan nilai .T. jika
proses penguncian berhasil, sebaliknya .F.
FLOCK([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
SET REPROCESS TO 3 SECONDS
SELECT * FROM mhsd3 INTO TABLE mhsd3fe

IF FLOCK( )
REPLACE ALL nilai with 0
WAIT 'Proses selesai' WINDOW NOWAIT
ELSE
WAIT WINDOW 'File tidak bisa dikunci
ENDIF

BROWSE FIELDS nim,nama,nilai


USE
ERASE mhsd3fe.dbf

FOUND( )
Mengembalikan nilai true (.T.) jika fungsi CONTINUE, FIND, INDEXSEEK( ), LOCATE, atau
SEEK berhasil menemukan yang dicari.
FOUND([nWorkArea | cTableAlias])
Contoh:
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
STORE 0 TO gnCount
LOCATE FOR NILAI=65

54
DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
WAIT WINDOW 'Total mahasiswa memperoleh nilai 65: ' ;
+ LTRIM(STR(gnCount)) NOWAIT

FSIZE( )
Mengembalikan ukuran dalam byte dari field yang ada pada sebuah tabel
FSIZE(cFieldName [, nWorkArea | cTableAlias] | cFileName)
Contoh:
SET COMPATIBLE OFF
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR
? FSIZE('nama')
? FSIZE('nim')

FTIME( )
Mengembalikan waktu modifikasi terakhir
FTIME(cFileName)

FULLPATH( )
Mengembalikan path file yang ditentukan
FULLPATH(cFileName1 [, nMSDOSPath | cFileName2])

FV( )
Mengembalikan nilai yang akan datang dari suatu investasi financial
FV(nPayment, nInterestRate, nPeriods)
Contoh:
STORE 500 TO gnPayment && Monthly payment

STORE .075/12 TO gnInterest && 7.5% annual interest rate

STORE 48 TO gnPeriods && Four years (48 months)


CLEAR

? FV(gnPayment, gnInterest, gnPeriods) && Displays 27887.93

GETBAR( )
Mengembalikan angka dari suatu item menu pada menu yang dibuat dengan perintah DEFINE
POPUP
GETBAR(MenuItemName, nMenuPosition)

55
Contoh:
CLEAR
ON KEY LABEL CTRL+Z DO showorder
WAIT WINDOW "Press CTRL+Z to refresh." NOWAIT
DEFINE POPUP popDemo MOVER FROM 2,2
DEFINE BAR 1 OF popDemo PROMPT 'One'
DEFINE BAR 2 OF popDemo PROMPT 'Two'
DEFINE BAR 3 OF popDemo PROMPT 'Three'
DEFINE BAR 4 OF popDemo PROMPT 'Four'

DO showorder
ACTIVATE POPUP popDemo

PROCEDURE showorder
CLEAR
@ 3,12 SAY '1 ' + PRMBAR('popDemo', GETBAR('popDemo',1))
@ 4,12 SAY '2 ' + PRMBAR('popDemo', GETBAR('popDemo',2))
@ 5,12 SAY '3 ' + PRMBAR('popDemo', GETBAR('popDemo',3))
@ 6,12 SAY '4 ' + PRMBAR('popDemo', GETBAR('popDemo',4))
RETURN

GETCOLOR( )
Menampilan kotak dialog Windows Color dan mengembalikan nilai warna yang dipilih
GETCOLOR([nDefaultColorNumber])
Contoh:
CLEAR
? GETCOLOR(255)

GETDIR( )
Menampilkan kotak dialog untuk memilih direktory
GETDIR([cDirectory [, cText [, cCaption [, nFlags [, lRootOnly]]]]])

GETENV( )
Mengembalikan isi variabel environment
GETENV(cVariableName)

GETFILE( )
Menampilkan kotak dialog membuka file
GETFILE([cFileExtensions] [, cText] [, cOpenButtonCaption]
[, nButtonType] [, cTitleBarCaption])
Contoh:
CLOSE DATABASES
SELECT 0

gcTable = GETFILE('DBF', 'Browse or Create a .DBF:', ;


'Browse', 1 'Browse or Create')

56
DO CASE
CASE 'Untitled' $ gcTable
CREATE (gcTable)
CASE EMPTY(gcTable)
RETURN
OTHERWISE
USE (gcTable)
BROWSE
ENDCASE

GETFONT( )
Menampilkan kotak dialog Font dan mengembalikan font yang dipilih
GETFONT(cFontName [, nFontSize [, cFontStyle [, nFontCharSet])
Contoh:
cMyFont = GETFONT( , , 'B')

GETPAD( )
Mengembalikan nama menu pada posisi menu bar yang ditentukan
GETPAD(cMenuBarName, nMenuBarPosition)
Contoh:
FOR gnCount = 1 TO CNTPAD('_msysmenu') && Number of pads
IF PRMPAD('_msysmenu', GETPAD('_msysmenu', gnCount)) = 'Edit'
RELEASE PAD (GETPAD('_msysmenu', gnCount)) OF _msysmenu
EXIT
ENDIF
ENDFOR

GETPICT( )
Menampilkan kotak dialog membuka file gambar dan mengembalikan nama gambar yang
dipilih
GETPICT([cFileExtensions] [, cFileNameCaption] [,
cOpenButtonCaption])

GETPRINTER( )
Menampilkan kotak dialog printer dan mengembalikan nama printer yang dipilih
GETPRINTER( )
Contoh:
CLEAR
cPrinter = GETPRINTER( ) && Displays the Windows Printer Dialog
*** Displays the name of the printer chosen ***
WAIT WINDOW IIF(EMPTY(cPrinter), 'No printer chosen', cPrinter)

57
GETWORDCOUNT( )
Menghitung kata dalam sebuah string
GetWordCount(cString[, cDelimiter])
Contoh:
cString = "AAA aaa, BBB bbb, CCC ccc."
? GetWordCount(cString) && 6 - character groups, delimited by "
"
? GetWordCount(cString, ",") && 3 - character groups, delimited by
","
? GetWordCount(cString, ".") && 1 - character group, delimited by "."

GETWORDNUM( )
Mengembalikan kata yang ditentukan dari sebuah string
GETWORDNUM(cString, nIndex[, cDelimiter])
Contoh:
cString = "AAA aaa, BBB bbb, CCC ccc."
? GetWordnum(cString,3) && Display: BBB

GOMONTH( )
Mengembalikan tanggal dari ekpsresi Date atau DateTime terhadap periode waktu sebelum
dan sesudah ekspresi tanggal tersebut
GOMONTH(dExpression | tExpression, nNumberOfMonths)
Contoh:
SET CENTURY ON
STORE GOMONTH({^1998-02-16}, 5) TO gdDeadLine

CLEAR
? gdDeadLine && Displays 07/16/1998
? GOMONTH({^1998-12-31}, 2) && Displays 02/28/1999
? GOMONTH({^1998-12-31}, -2) && Displays 10/31/1998

HEADER( )
Mengembalikan jumlah byte header dari file tabel yang ditentukan atau aktif
HEADER([nWorkArea | cTableAlias])

HOME( )
Mengembalikan nama-nama direktory dari Visual FoxPro dan Visual Studio
HOME([nLocation])
Contoh:
CLEAR
? 'Visual FoxPro startup directory: ', HOME( )
? 'Visual FoxPro installation directory: ', HOME(1)
? 'Visual FoxPro samples directory: ', HOME(2)

58
? 'Visual Studio common directory: ', HOME(3)
? 'Visual FoxPro graphics directory: ', HOME(4)
? 'MSDN samples directory: ', HOME(5)
? 'Visual Studio tools directory: ', HOME(6)
? 'Visual FoxPro user app data directory: ', HOME(7)

HOUR( )
Mengembalikan nilai jam dari ekspresi DateTime
HOUR(tExpression)
Contoh:
? HOUR(DATETIME( ))
? HOUR({^1998-02-16 10:42a}) && Displays 10

ID( )
Mengembalikan informasi mengenai jaringan yang sedang digunakan.
ID( )

IIF( )
Mengembalikan satu dari dua kondisi ekpresi logika
IIF(lExpression, eExpression1, eExpression2)
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR

SCAN
? IIF(nilai>80,Nilai Absolut adalah A,Bukan A)
ENDSCAN

INDBC( )
Mengembalikan nilai true (.T.) jika object database adalah database aktif
INDBC(cDatabaseObjectName, cType)
Contoh:
CLOSE DATABASES
CREATE DATABASE mydbc && Creates a new database
CREATE TABLE mytable (field1 C(10)) && Automatically added to
database

? 'MyTable in the database? '


?? INDBC('mytable', 'TABLE') && Returns .T.

CLOSE DATABASES
DELETE DATABASE mydbc DELETETABLES

59
INKEY( )
Mengembalikan angka key yang ditekan
INKEY([nSeconds] [, cHideCursor])

Daftar nilai INKEY()


Key Ybs SHIFT CTRL ALT
F1 28 84 94 104
F2 1 85 95 105
F3 2 86 96 106
F4 3 87 97 107
F5 4 88 98 108
F6 5 89 99 109
F7 6 90 100 110
F8 7 91 101 111
F9 8 92 102 112
F10 9 93 103 113
F11 133 135 137 139
F12 134 136 138 140
1 49 33 120
2 50 64 121
3 51 35 122
4 52 36 123
5 53 37 124
6 54 94 125
7 55 38 126
8 56 42 127
9 57 40 128
0 48 41 19
a 97 65 1 30
b 98 66 2 48
c 99 67 3 46
d 100 68 4 32
e 101 69 5 18
f 102 70 6 33
g 103 71 7 34
h 104 72 127 35
I 105 73 9 23
j 106 74 10 36
k 107 75 11 37
l 108 76 12 38
m 109 77 13 50
n 110 78 14 49
o 111 79 15 24
p 112 80 16 25
q 113 81 17 16
r 114 82 18 19
s 115 83 19 31
t 116 84 20 20

60
u 117 85 21 22
v 118 86 22 47
w 119 87 23 17
x 120 88 24 45
y 121 89 25 21
z 122 90 26 44
INS 22 22 146 162
HOME 1 55 29 151
DEL 7 7 147 163
END 6 49 23 159
PAGE UP 18 57 31 153
PAGE DOWN 3 51 30 161
UP ARROW 5 56 141 152
DOWN ARROW 24 50 145 160
RIGHT ARROW 4 54 2 157
LEFT ARROW 19 52 26 155
ESC 27 /27 */27 */1
ENTER 13 13 10 /166
BACKSPACE 127 127 127 14
TAB 9 15 148/* *
SPACEBAR 32 32 32/ 57

INLIST( )
Untuk menentukan apakah suatu ekspresi sesuai dengan ekspresi lain yang ada pada
kumpulan ekpresi
INLIST(eExpression1, eExpression2 [, eExpression3 ...])
Contoh:
SET TALK ON
STORE CMONTH(DATE( )) TO gcMonth
DO CASE
CASE INLIST(gcMonth,'January','February','March')
STORE 'First Quarter' TO gcReporTitle
CASE INLIST(gcMonth,'April','May','June')
STORE 'Second Quarter' TO gcReporTitle
CASE INLIST(gcMonth,'July','August','September')
STORE 'Third Quarter' TO gcReporTitle
OTHERWISE
STORE 'Fourth Quarter' TO gcReporTitle
ENDCASE
WAIT WINDOW gcReporTitle

INPUTBOX( )
Menampilkan kotak dialog isian untuk memasukkan string tunggal
INPUTBOX(cInputPrompt [, cDialogCaption] [, cDefaultValue] [,
nTimeout])
Contoh:
Y = "Nothing at all"
Y = INPUTBOX("TypeHere","Input ",Y,5000)

61
INSMODE( )
Mengembalikan mode tombil INSERT/INS atau men-set menjadi On atau Off
INSMODE([lExpression])
Contoh:
SET TALK ON
=INSMODE(.T.) && Set insert mode on
? INSMODE( )
= INSMODE(!INSMODE( )) && Toggle insert mode to opposite state
? INSMODE( )

INT( )
Mengubah ekspresi numerik dan mengembalikan nilai integer
INT(nExpression)
Contoh:
CLEAR
? INT(12.5) && Displays 12
? INT(6.25 * 2) && Displays 12
? INT(-12.5) && Displays -12
STORE -12.5 TO gnNumber
? INT(gnNumber) && Displays -12

ISALPHA( )
Untuk mengetahui apakah suatu ekpresi karakter adalah aphabetic
ISALPHA(cExpression)
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR
DISPLAY nama
? ISALPHA(nama) && Displays .T.
DISPLAY nim
? ISALPHA(nim) && Displays .F.

ISBLANK( )
Untuk mengetahui apakah suatu ekpresi kosong
ISBLANK(eExpression)
Contoh:
CREATE TABLE mytable FREE (myfield C(20))
APPEND BLANK && Add new blank record
CLEAR
? ISBLANK(myfield) && Displays .T.
REPLACE myfield WITH 'John Smith' && Insert a value in the field
? ISBLANK(myfield) && Displays .F.

62
ISCOLOR( )
Menentukan apakah computer dapat menampilkan warna
ISCOLOR( )

ISDIGIT( )
Menentukan apakah karakter paling kiri dari suatu ekpresi karakter adalah angka 0 sampai 9
ISDIGIT(cExpression)
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
? ISDIGIT(nama) && Displays .F.
DISPLAY nilai
? ISDIGIT(ALLTRIM(STR(nilai))) && Displays .T.

ISEXCLUSIVE( )
Mengembalikan nilai true (.T.) jika tabel atau database dibuka Exclusive
ISEXCLUSIVE([cTableAlias | nWorkArea | cDatabaseName [, nType]])
Contoh:
cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (HOME(2) + 'data\')
OPEN DATA testdata && Opens the test databsase
USE customer && Not opened exclusively
USE employee IN 0 EXCLUSIVE && Opened exclusively in another work
area
IF ISEXCLUSIVE( )
REINDEX && Can only be done if table opened exclusively
ELSE
WAIT WINDOW 'The table has to be exclusively opened'
ENDIF
SET EXCLUSIVE &cExclusive

ISFLOCKED( )
Mengembalikan status file tabel apakah terkunci atau tidak
ISFLOCKED([nWorkArea | cTableAlias])

ISLOWER( )
Menentukan apakah karakter paling kiri dari sebuah ekspresi karakter adalah huruf kecil.
ISLOWER(cExpression)
Contoh:
CLEAR
? ISLOWER('redmond') && Displays .T.
? ISLOWER('Redmond') && Displays .F.

63
ISMOUSE( )
Mengembalikan nilai true (.T.) jika mouse terpasang dan dapat digunakan.
ISMOUSE( )
Contoh:
CLEAR
? IIF(ISMOUSE( ),Ada Mouse,Mouse tidak ada)

ISNULL( )
Mengembalikan nilai true (.T.) jika suatu ekspresi mempunyai nilai NULL
ISNULL(eExpression)
Contoh:

STORE .NULL. TO mNullvalue


CLEAR
? mNullvalue && Display the value of the memory variable
? ISNULL(mNullvalue) && Returns .T., indicating a null value
? TYPE('mNullvalue') && Returns L, indicating a logical value
? (mNullvalue = .NULL.) && Returns .NULL., bad test for null values

ISREADONLY( )
Menentukan apakah suatu tabel atau database dibuka read-only.
ISREADONLY([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3 NOUPDATE
CLEAR
? ISREADONLY('mhsd3') && Returns .T.

ISRLOCKED( )
Mengembalikan status rekord, terkunci atau tidak
ISRLOCKED([nRecordNumber, [nWorkArea | cTableAlias]])

ISUPPER( )
Menentukan apakah karakter pertama dalam sebuah ekspresi karakter adalah huruf besar
ISUPPER(cExpression)
Contoh:
? ISUPPER('Belajar foxpro') && Displays .T.
? ISUPPER('belajar FoxPro') && Displays .F.

64
LASTKEY( )
Mengembalikan nilai integer tombol yang ditekan terakhir
LASTKEY( )
Contoh:
**Nama File: pQuit.prg
If Lastkey()=27 && tombol ESC ditekan
Clear event
Quit
Endif

LEFT( )
Mengembalikan karakter dimulai dari kiri sampai pada angka yang ditentukan.
LEFT(cExpression, nExpression)
Contoh:
CLEAR
? LEFT('Fakultas Ekonomi, 3) && Displays Fak

LEN( )
Mengembalikan jumlah karakter dalam suatu ekpresi karakter
LEN(cExpression)
Contoh:
? LEN('Fakultas Ekonomi)

LENC( )
Mengembalikan jumlah karakter dalam suatu ekpresi karakter atau memo field.
LENC(cExpression)

LIKE( )
Menentukan jika suatu ekspresi karakter sesuai dengan ekspresi karakter yang lain
LIKE(cExpression1, cExpression2)

Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
CLEAR
? 'Semua mahasiswa yang namanya berisi huruf A
?
SCAN FOR LIKE('A', NAMA)
? nama
ENDSCAN
USE

65
LOCK( )
Mengunci satu atau lebih rekord dalam suatu tabel
LOCK([nWorkArea | cTableAlias]|
[cRecordNumberList, nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList
gcOldExc = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SELECT 0
USE employee && Open Employee table
SELECT 0
USE customer && Open Customer table
? LOCK('1,2,3,4', 'customer') && Lock 1st 4 records in customer
? RLOCK(gcRecList, 'employee') && Lock 1st 4 records in employee
UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc

LOOKUP( )
Menampilkan isi fiel dari tabel dengan ekspresi tertentu
LOOKUP(ReturnField, eSearchExpression, SearchedField [, cTagName])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
CLEAR
@ 2,2 SAY LOOKUP(nama, 80, nilai)

LOWER( )
Mengembalikan ekspresi karakter tertentu dalam huruf kecil
LOWER(cExpression)
Contoh:
STORE 'FOX' TO gcName
CLEAR
? LOWER(gcName) && Displays fox

LTRIM( )
Mengembalikan ekspresi karakter dengan menghapus spasi kosong pada bagian kiri
LTRIM(cExpression)
Contoh:
STORE 'Denpasar ' TO gcKota
STORE ' Bali' TO gcPropinsi
CLEAR

66
? gcKota, gcPropinsi && Nampak: Denpasar Bali
? gcKota, LTRIM(gcPropinsi) && Nampak: Denpasar Bali

LUPDATE( )
Mengembalikan tanggal peubahan data terakhir
LUPDATE([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\data\testdata')
USE mhsd3
CLEAR
? LUPDATE( )

MAX( )
Menilai sekumpulan ekspresi dan mengembalikan nilai maksimum
MAX(eExpression1, eExpression2 [, eExpression3 ...])
Contoh:
? MAX(1,3,2,3,4,5,6) && Hasilnya: 6

MDY( )
Mengembalikan ekspresi Date atau DateTime kedalam format month-day-year
MDY(dExpression | tExpression)
Contoh:
SET CENTURY OFF

CLEAR
? Longdate({^1998-02-16}) && Displays Monday, February 16, 98

SET CENTURY ON
? Longdate({^1998-02-16}) && Displays Monday, February 16, 1998

*** LongDate ***

FUNCTION longdate
PARAMETERS gdDate
RETURN CDOW(gdDate) + ', ' + MDY(gdDate)

MEMLINES( )
Mengembalikan jumlah baris dalam sebuah field memo
MEMLINES(MemoFieldName)
Contoh:
CLOSE DATABASES
CLEAR
SET TALK OFF
CLOSE DATABASES

67
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
SET MEMOWIDTH TO 65
gnLine = 1
GOTO 2
SCAN NEXT 3
gnMemoSize = MEMLINES(catatan)
IF gnMemoSize = 0
STORE .T. TO glNoMemo
STORE 1 TO gnMemoSize
ELSE
STORE .F. TO glNoMemo
ENDIF
IF gnLine + gnMemoSize > 65
EJECT
gnLine = 1
ENDIF
@ gnLine,2 SAY 'Nama Mahasiswa: '+ Nama
gnLine = gnLine +1
@ gnLine,2 SAY 'Catatan : '
?? IIF(glNoMemo, 'Tidak ada catatan,Catatan)
gnLine = gnLine + gnMemoSize + 2
IF gnLine > 24
gnLine = 1
CLEAR
ENDIF
ENDSCAN

MEMORY( )
Mengembalikan jumlah memory yang tersedia untuk menjalankan program eksternal
MEMORY( )

MENU( )
Mengembalikan nama dari menu bar aktif sebagai karakter string
MENU( )
Contoh:
*** Simpan program dengan nama MENUEXAM.PRG
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3
KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN menuexam WITH PAD(), MENU()

68
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

MESSAGE( )
Mengembalikan pesan kesalahan sebagai karakter string atau isi dari baris program yang
menyebabkan kesalahan
MESSAGE([1])
Contoh:
ON ERROR DO Errhand

USE DataPelih
ON ERROR && restore system error handler
PROCEDURE Errhand
? 'Line of code with error: ' + MESSAGE(1)
? 'Error number: ' + STR(ERROR( ))
? 'Error message: ' + MESSAGE( )

MESSAGEBOX( )
Menampilkan kotak dialog konfirmasi
MESSAGEBOX(eMessageText [,cTitleBarText][,nDialogBoxType
][,nTimeout])

Tabel Nilai nDialogBox

Nilai Dialog box buttons


0 OK button only
1 OK and Cancel buttons
2 Abort, Retry, and Ignore buttons
3 Yes, No, and Cancel buttons
4 Yes and No buttons
5 Retry and Cancel buttons
Value Icon
16 Stop sign
32 Question mark
48 Exclamation point
64 Information (i) icon
Value Default button
0 First button
256 Second button
Nilai yang dikembalikan:
Return value Button
1 OK

69
2 Cancel
3 Abort
4 Retry
5 Ignore
6 Yes
7 No

MESSAGEBOX("HELLO","MyTitle",36,1)
MESSAGEBOX("HELLO",36,"MyTitle",1)
MESSAGEBOX("HELLO",36,1)
MESSAGEBOX("HELLO",36,1,"MyTitle")
Contoh:
cMessageTitle = 'My Application'
cMessageText = 'Record not found. Would you like to search again?'
nDialogType = 4 + 32 + 256
* 4 = Yes and No buttons, 32 = Question mark icon
* 256 = Second button is default
nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)
DO CASE
CASE nAnswer = 6
WAIT WINDOW 'You chose Yes'
CASE nAnswer = 7
WAIT WINDOW 'You chose No'
ENDCASE

MIN( )
Menilai sekumpulan ekspresi dan mengembalikan nilai minimum
MIN(eExpression1, eExpression2 [, eExpression3 ...])
Contoh:
? MIM(1,3,2,3,4,5,6) && Hasilnya: 1

MINUTE( )
Mengembalikan angka menit dalam ekspresi DateTime
MINUTE(tExpression)
Contoh:
CLEAR
? MINUTE(DATETIME( ))
? MINUTE({^1998-02-16 10:42a}) && Displays 42

MLINE( )
Mengembalikan baris dari field memo sebagai karakter string
MLINE(MemoFieldName, nLineNumber [, nNumberOfCharacters])
Contoh:
CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50

70
CLOSE DATABASES
CREATE TABLE tmemo (name c(10), notes m)
APPEND BLANK
FOR gnOuterLoop = 1 TO 5
FOR gnAlphabet = 65 TO 75
REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ;
+ CHR(13) ADDITIVE
NEXT
NEXT
STORE MEMLINES(notes) TO gnNumLines
STORE SECONDS( ) TO gnBegin
FOR gnCount = 1 TO gnNumLines
? MLINE(notes, gnCount)
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds'

WAIT 'Tekan space bar' WINDOW


CLEAR
STORE 0 TO _MLINE
STORE SECONDS( ) TO gnBegin
FOR count = 1 TO gnNumLines
? MLINE(notes, 1, _MLINE)
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds'
SET TALK ON
CLOSE DATABASES
ERASE tmemo.dbf
ERASE tmemo.fpt

MOD( )
Membagi satu ekspresi numeric dengan ekspresi numeric lainnya dan mengembalikan sisa
pembagiannya. Pengganti fungsi ini dapat digunakan operator %.
MOD(nDividend, nDivisor)
Contoh:
CLEAR
? MOD(36,10) && sisanya 6
? MOD((4*9), (90/9)) && sisanya 6
? MOD(25.250,5.0) && sisanya 0.250

MONTH( )
Mengembalikan angka bulan dari ekspresi Date atau DateTime
MONTH(dExpression | tExpression)
Contoh:
CLEAR
? DATE( ) && Menampilkan tanggal hari ini
? MONTH(DATE( )) && Menampilkan angka bulan
STORE {^1998-05-03} TO gdBuy
STORE MONTH(gdBuy + 31) TO gdMonth
? gdMonth && Menampilkan angka bulan juni yaitu 6

71
MTON( )
Mengembalikan nilai Numeric dari ekspresi Currency
MTON(mExpression)
Contoh:
STORE $24.95 TO gyMoney
CLEAR
? "gyMoney is type: "
?? TYPE('gyMoney') && Hasilnya Y, nilai jenis currency

gyMoney = MTON(gyMoney)
? "gyMoney mempunyai jenis : "
?? TYPE('gyMoney')

NDX( )
Mengembalikan nama file index (.IDX) dari tabel aktif atau tabel yang ditentukan.
NDX(nIndexNumber [, nWorkArea | cTableAlias])

NTOM( )
Mengembalikan nilai Currency dengan empat desimal dari ekspresi numeric
NTOM(nExpression)

NUMLOCK( )
Mengembalikan mode tombol NUM LOCK atau mengubah kondisi On atau Off
NUMLOCK([lExpression])
Contoh:
gcOldLock = NUMLOCK( )
WAIT WINDOW 'Tekan space bar, untuk mengubah Num Lock on'
= NUMLOCK(.T.)
WAIT WINDOW 'Tekan space bar, untuk mengubah Num Lock off'
= NUMLOCK(!NUMLOCK( ))
WAIT WINDOW 'Tekan space bar, untuk ke kondisi awal
= NUMLOCK(gcOldLock)

NVL( )
Mengembalikan nilai dari dua ekspresi yang bernilai tidak NULL
NVL(eExpression1, eExpression2)
Contoh:
STORE .NULL. TO glMyNull
CLEAR
? NVL(.T., glMyNull) && Hasilnya .T.
? NVL(glMyNull, glMyNull) && Hasilnya .NULL.

72
OCCURS( )
Mengembalikan angka hasil dari perhitungan karakter pengulangan dari ekspresi karakter
dengan ekpresi karakter lain, bila angka yang dihasilkan 0 berarti tidak ada karakter yang
dicari.
OCCURS(cSearchExpression, cExpressionSearched)
Contoh:
STORE 'abracadabra' TO gcstring
CLEAR
? OCCURS('a', gcstring) && a ada 5
? OCCURS('b', gcstring) && b ada 2
? OCCURS('c', gcstring) && c ada 1
? OCCURS('e', gcstring) && e tidak ada = 0

ON( )
Mengembalikan instruksi yang ditentukan dari setiap even pada perintah-perintah: ON
ERROR, ON ESCAPE, ON KEY LABEL atau ON PAGE
ON(cONCommand [, KeyLabelName])

cONCommand: ON ERROR =ERROR, ON ESCAPE = ESCAPE, ON KEY LABEL = KEY,


dan ON PAGE = PAGE
Contoh:
ON ERROR DO errorhand
ON KEY LABEL CTRL+F2 WAIT WINDOW 'Anda menekan tombol Ctrl+F2'
ON KEY LABEL ALT+Z DISPLAY MEMORY
CLEAR
? ON('ERROR') && sama dengan DO errorhand
? ON('KEY', 'CTRL+F2')
? ON('KEY', 'ALT+Z')
ON ERROR
ON KEY LABEL CTRL+F2
ON KEY LABEL ALT+Z

ORDER( )
Mengembalikan nama dari kontrol file index atau tag dari tabel yang ditentukan
ORDER([nWorkArea | cTableAlias [, nPath]])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3 ORDER nim
? ORDER( ) && Hasilnya NIM
? ORDER('mhsd3, 1) && Displays MHSD3.CDX

PAD( )
Mengembalikan karakter huruf besar dari judul menu yang dipilih dari menu bar.
PAD([cMenuTitle [, cMenuBarName]])

73
Contoh:
*** Nama: PADEXAM.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3
KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN padexam WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETERS gcPad, gcMenu
WAIT WINDOW 'Anda memilih ' + gcPad + ;
' dari menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

PADL( ) | PADR( ) | PADC( )


Mengembalikan suatu string dari ekspresi karakter dengan menambahkan space kosong atau
karakter tertentu (pad tertentu) sesuai dengan panjang yang ditentukan
PADL(eExpression, nResultSize [, cPadCharacter])
PADR(eExpression, nResultSize [, cPadCharacter])
PADC(eExpression, nResultSize [, cPadCharacter])
Contoh:
STORE 'TITLE' TO gcString
CLEAR
? PADL(gcString, 40, '=')
? PADR(gcString, 40, '=')
? PADC(gcString, 40, '=')

PARAMETERS( ), PCOUNT()
Mengembalikan angka dari parameter yang digunakan dalam memanggil program, procedure
atau fungsi.
PARAMETERS()
PCOUNT()
Contoh:
** Nama File: Pro1
DO testpar WITH 1,2,3

PROCEDURE testpar
PARAMETERS gn1,gn2,gn3
gcMessage = 'PARAMETERS( ) ='+ALLTRIM(STR(PARAMETERS( )))

74
WAIT WINDOW (gcMessage)
RETURN
Endproc

** Nama File: Pro2


SET TALK OFF
gnVal1 = 10
gnVal2 = 20
gnVal3 = 30
gnVal4 = 15
gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)
? 'Nilai rata-rata =
?? gnMin

FUNCTION getavg
PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;
gnPara6,gnPara7,gnPara8,gnPara9
IF PARAMETERS( ) = 0 && atau IF Pcount()=0
RETURN 0
ENDIF
gnResult = 0
FOR gnCount = 1 to PARAMETERS( )
gcCompare = 'gnPara' +(STR(gnCount,1))
gnResult = gnResult + EVAL(gcCompare)
ENDFOR
gnResult = gnResult / (gnCount - 1)
RETURN gnResult
Endfunc

PAYMENT( )
Mengembalikan jumlah setiap pembayaran periodik atas pinjaman dengan bungan tetap
PAYMENT(nPrincipal, nInterestRate, nPayments)
Contoh:
STORE 100000 to gnPrincipal && Rp100,000 Pokok Pinjaman
STORE .105/12 TO gnInterest && 10.5% p.a.
STORE (20*12) TO gnPayments && Periode 20 tahun
CLEAR
? PAYMENT(gnPrincipal, gnInterest, gnPayments) && Hasil= 998.38

PCOL( )
Mengembalikan posisi kolom sekarang dari printer. Dapat juga digunakan operator $
PCOL( )
Contoh:
CLEAR
@ PROW( ), PCOL( )+12 SAY Saya sedang belajar
@ PROW( ), $+12 SAY Saya sedang belajar

PI( )
Mengembalikan konstanta PI = 3,14
PI( )

75
POPUP( )
Mengembalikan sebagai suatu string menu aktif jika menu sudah didefinisikan
POPUP([cMenuName])

PRINTSTATUS( )
Mengembalikan nilai logika true (.T.) jika printer atau device printer adalah online.
PRINTSTATUS( )
Contoh:
STORE PRINTSTATUS( ) TO glReady
IF NOT glReady
WAIT 'Printer belum aktif' WINDOW
ELSE
WAIT 'Printer siap!' WINDOW
ENDIF

PRMBAR( )
Mengembalikan teks dari suatu item menu
PRMBAR(cMenuName, nMenuItemNumber)

PRMPAD( )
Mengembalikan teks dari judul menu
PRMPAD(MenuBarName, MenuTitleName)
Contoh:
CLEAR
SET TALK OFF
STORE 'mnuExample' TO gcPopName

DEFINE MENU mnuExample BAR AT LINE 1


DEFINE PAD titleOne OF mnuExample PROMPT 'This will be returned'
DEFINE PAD titleTwo OF mnuExample PROMPT '\<As will this'
DEFINE PAD titleThree OF mnuExample PROMPT '\And this, too'

=messagebox( PRMPAD('mnuExample', 'titleOne') )


=messagebox( PRMPAD('mnuExample', 'titleTwo') )
=messagebox( PRMPAD(gcPopName, 'titleThree') )

ACTIVATE MENU mnuExample


DEACTIVATE MENU mnuExample
RELEASE MENU mnuExample

PROGRAM( )
Mengembalikan nama program yang sedang berjalan, atau baris prosedur program, atau nama
program yang sedang berjalan ketika terjadi kesalahan.
PROGRAM([nLevel])

76
Contoh:
ON ERROR DO errhand WITH PROGRAM( )
*** The next line should generate an error ***
USE datasalah && tidak ada data namanya ini
ON ERROR

PROCEDURE errhand
PARAMETERS gcProgram
WAIT 'Kesalahan terjadi pada program ' + gcProgram WINDOW

PROMPT( )
Mengembalikan teks judul menu dari menu bar atau item menu yang dipilih dari suatu menu
tertentu.
PROMPT( )

PROPER( )
Mengembalikan ekspresi karakter yang mana setiap awal kata diubah menjadi huruf besar.
PROPER(cExpression)
Contoh:
STORE 'fakultas ekonomi UNUD TO gcExpr1
STORE 'FAKULTAS EKONOMI UNUD TO gcExpr2

CLEAR
? PROPER(gcExpr1) && Hasilnya: Fakultas Ekonomi Unud
? PROPER(gcExpr2) && Hasilnya: Fakultas Ekonomi Unud

PROW( )
Mengembalikan angka baris sekarang dari printer atau head printer
PROW( )
Contoh:
@ PROW( ), PCOL( ) + 12 SAY 'Ekonomi Unud
@ PROW( ), $+12 SAY 'Selalu Jaya

PV( )
Mengembalikan nilai sekarang dari investasi
PV(nPayment, nInterestRate, nTotalPayments)
Contoh:
STORE 500 to gnPayment && Pembayaran setiap bulan
STORE .075/12 TO gnInterest && 7.5% p.a.
STORE 48 TO gnPeriods && Selama 48 bulan
CLEAR
? PV(gnPayment, gnInterest, gnPeriods) && Hasil: 20679.19

77
QUARTER( )
Mengembalikan angka kwartal 1,2,3, atau 4 dari ekspresi Date atau DateTime
QUARTER(dExpression | tExpression [, nMonth])

RAT( )
Mengembalikan angka posisi dari akhir karakter dalam karakter string lainnya
RAT(cSearchExpression, cExpressionSearched [, nOccurrence])
Contoh:
STORE 'abracadabra' TO string
STORE 'a' TO find_str
CLEAR
? RAT(find_str,string) && Hasil: 11
? RAT(find_str,string,3) && Hasil: 6

RECCOUNT( )
Mengembalikan jumlah rekord aktif atau dari tabel yang ditentukan
RECCOUNT([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3

NJumlahMhs=Reccount()
? Jumlah mahasiswa sebanyak +Ltrim(Str(nJumlahMhs,10))+ orang

RECNO( )
Mengembalikan angka nomer rekord aktif atau dari tabel yang ditentukan
RECNO([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (d:\prod3\Data\testdata')
USE mhsd3
Locate for nilai=80
IF FOUND( )
? Mahasiswa ada pada nomor rekord: +Str(recno(),3)
else
? Tidak ada mahasiswa memperoleh nilai 80
ENDIF

RECSIZE( )
Mengembalikan ukuran atau lebar tabel
RECSIZE([nWorkArea | cTableAlias])

78
RELATION( )
Mengembalikan ekspresi relasional yang digunakan
RELATION(nRelationNumber [, nWorkArea | cTableAlias])

REPLICATE( )
Mengembalikan suatu karakter dari ekspresi karakter sejumlah angka pengulangan.
REPLICATE(cExpression, nTimes)
Contoh:
CLEAR
? REPLICATE('CINTA ',4) && Hasilnya: CINTA CINTA CINTA CINTA

RIGHT( )
Mengembalikan karakter bagian kanan dari suatu karakter string sejumlah tertentu
RIGHT(cExpression, nCharacters)
Contoh:
CLEAR
? RIGHT('FE UNUD', 5) && Hasilnya: UNUD

RLOCK( )
Mencoba untuk mengunci beberapa rekord atau satu record
RLOCK([nWorkArea | cTableAlias] | [cRecordNumberList, nWorkArea
| cTableAlias])

ROUND( )
Mengembalikan ekspresi numerik dalam aturan pembulatan tertentu
ROUND(nExpression, nDecimalPlaces)
Contoh:
SET DECIMALS TO 4
SET FIXED ON
CLEAR

? ROUND(1234.1962, 3) && Hasil: 1234.1960


? ROUND(1234.1962, 2) && Hasil: 1234.2000
? ROUND(1234.1962, 0) && Hasil: 1234.0000
? ROUND(1234.1962, -1) && Hasil: 1230.0000
? ROUND(1234.1962, -2) && Hasil: 1200.0000
? ROUND(1234.1962, -3) && Hasil 1000.0000

SET FIXED OFF


SET DECIMALS TO 2

79
RTRIM( )
Mengembalikan suatu karakter string yang dihasilkan dari ekspresi karakter dengan
menghapus spasi kosong pada bagian kanan/akhir.
RTRIM(cExpression)

SELECT( )
Mengembalikan angka dari area kerja yang aktif
SELECT([ 0 | 1 | cTableAlias ])

SPACE( )
Membuat spasi kosong
SPACE(nSpaces)

SQRT( )
Mengembalikan nilai square atau akar dari suatu ekspresi numerik
SQRT(nExpression)

STR( )
Mengembalikan karakter dari ekspresi numeric yang ditentukan
STR(nExpression [, nLength [, nDecimalPlaces]])

STUFF( )
Mengembalikasi suatu karakter dari penyisipan atau penggantian ekspresi karakter
STUFF(cExpression, nStartReplacement, nCharactersReplaced,
cReplacement)
Contoh:
STORE 'abcdefghijklm' TO gcString1
STORE '12345' TO gcString2
CLEAR
? STUFF(gcString1, 4, 0, gcString2) && insert
? STUFF(gcString1, 4, 3, gcString2) && replace
? STUFF(gcString1, 4, 6, '') && delete
? STUFF(gcString1, 4, 1, gcString2) && replace and insert
? STUFF(gcString1, 4, 4, gcString2) && replace and delete
? STUFF(gcString1,4,LEN(gcString1),gcString2) && replace, delete rest

SUBSTR( )
Mengembalikan suatu karakter string dari ekspresi karakter atau field memo
SUBSTR(cExpression, nStartPosition [, nCharactersReturned])

80
Contoh:
STORE '20040601' TO mystring
CLEAR
? SUBSTR(mystring, 1, 4) && Hasil: 2004
? SUBSTR(mystring, 5) && Hasil: 0601

TRANSFORM( )
Mengembalikan karakter string dari suatu ekspresi dalam format yang ditentukan oleh suatu
format code
TRANSFORM(eExpression, [cFormatCodes])
Contoh:
STORE 12.34 TO gnPrice
CLEAR
? TRANSFORM(gnPrice, '$$$$.99') && Displays $12.34

TYPE( )
Menguji suatu ekspresi dan mengembalikan jenis data dari isi ekspresi
TYPE(cExpression)
Contoh:
nTest = 1.01
cTest = "String"

CLEAR
? TYPE('customer.contact') && Displays C
? TYPE('(12 * 3) + 4') && Displays N
? TYPE('DATE( )') && Displays D
? TYPE('.F. OR .T.') && Displays L
? TYPE('ANSWER=42') && Displays U
? TYPE('$19.99') && Displays Y
? TYPE('nTest') && Displays N
? TYPE('cTest') && Displays C

UPPER( )
Mengembalikasi ekspresi karakter dalam huruf besar
UPPER(cExpression)
Contoh:
CLEAR
? UPPER('abcdefgh') && Displays ABCDEFGH

USED( )
Menentukan jika suatu alias digunakan atau suatu tabel terbuka pada area kerja tertentu
USED([nWorkArea | cTableAlias])
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

81
SELECT A
USE customer && Opens Customer table
SELECT B
USE orders && Opens Orders table
SELECT C
USE employee && Opens Employee table
? USED('A') && Displays .T.
? USED('B') && Displays .T.
? USED(4) && Displays .F.

VAL( )
Mengembalikan nilai numerik dari ekspresi karakter angka
VAL(cExpression)
Contoh:
CLEAR
STORE '12' TO A
STORE '13' TO B
? VAL(A) + VAL(B) && Displays 25.00
STORE '1.25E3' TO C
? 2 * VAL(C) && Displays 2500.00

WEEK( )
Mengembalikan angka yang menunjukkan urutan minggu pada tahun tertentu dari ekspresi
Date atau DateTime
WEEK(dExpression | tExpression [, nFirstWeek] [, nFirstDayOfWeek])
Contoh:
CLEAR
? WEEK(DATE( ))
? WEEK({^1998-02-16}) && Displays 8

YEAR( )
Mengembalikan angka tahun dari ekspresi Date atau DateTime
YEAR(dExpression | tExpression)
Contoh:
CLEAR
? YEAR(DATE( ))

82
Command dalam Visual FoxPro

&
Digunakan untuk menunjukkan substitusi macro
& VarName[.cExpression]
Contoh:
** 1
STORE SET('TALK') TO gcSaveTalk
SET TALK OFF
*
* Additional program code
*
SET TALK &gcSaveTalk && Restore original TALK setting

ACTIVATE MENU
Menampilan dan mengaktifkan menu bar
ACTIVATE MENU MenuBarName [NOWAIT] [PAD MenuTitleName]

ACTIVATE POPUP
Menampilkan dan mengaktifkan menu
ACTIVATE POPUP MenuName [AT nRow, nColumn]
[BAR nMenuItemNumber] [NOWAIT] [REST]

Contoh:
*** Nama: PRG2.prg

DEFINE PAD Menu1 OF _Msysmenu PROMPT "\<Menu" ;


COLOR SCHEME 3 KEY ALT+U, ""
DEFINE PAD Menu2 OF _Msysmenu PROMPT "E\<XIT" ;
COLOR SCHEME 3 KEY ALT+X, ""

ON PAD MENU1 OF _Msysmenu ACTIVATE POPUP Menu1


ON SELECTION PAD MENU2 OF _Msysmenu pQuit()

DEFINE POPUP MENU1 MARGIN RELATIVE SHADOW COLOR SCHEME 4


DEFINE BAR 1 OF MENU1 PROMPT "\<1. Data Mahasiswa"
DEFINE BAR 2 OF MENU1 PROMPT "\<2. Laporan"
DEFINE BAR 3 OF MENU1 PROMPT "\-"
DEFINE BAR 4 OF MENU1 PROMPT "\<3. Backup Data"

ON SELECTION BAR 1 OF MENU1 Do Form Forms\Form1


ON SELECTION BAR 2 OF MENU1 Do Form Forms\Form2
ON SELECTION BAR 4 OF MENU1 Do Form Forms\Form3

ACTIVATE MENU _Msysmenu NOWAIT

83
ADD TABLE
Menambah tabel bebas kedalam database aktif
ADD TABLE TableName | ? [NAME LongTableName]
Contoh:
CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10)) && Adds table to mydbc1
CLOSE TABLES && A table must be closed to remove it from a
database
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2

APPEND
Menambah satu atau lebih rekord baru pada akhir tabel
APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

APPEND FROM ARRAY ArrayName [FOR lExpression]


[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

APPEND FROM FileName | ? [FIELDS FieldList] [FOR lExpression]


[[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB
| WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD |
SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5
[SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage]

APPEND GENERAL GeneralFieldName [FROM FileName]


[DATA cExpression] [LINK] [CLASS OLEClassName]

APPEND MEMO MemoFieldName FROM FileName[OVERWRITE] [AS nCodePage]

APPEND PROCEDURES FROM FileName [AS nCodePage] [OVERWRITE]

Contoh:

Berikut ini contoh penggunaan APPEND BLANK untuk membuat tabel yang berisi 10 rekord,
perintah-perintah APPEND lainnya.
CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Append 10 records
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Insert random values
ENDFOR
CLEAR
LIST && Display the values
gnMaximum = 1 && Initialize minimum value
gnMinimum = 100 && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN

84
? 'The minimum value is: ', gnMinimum && Display minimum value
? 'The maximum value is: ', gnMaximum && Display maximum value

LOCAL ARRAY aNewRec(3)

* Create the table


CREATE TABLE Test FREE (Object C(10), Color C(16), SqFt n(6,2))
SCATTER TO aNewRec BLANK && Create a new array from the table
aNewRec[1]="Box" && Fill the the array
aNewRec[2]="Red"
aNewRec[3]=12.5
APPEND FROM ARRAY aNewRec && Add record containing array contents
&& to the table
//
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Open customer table
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'Finland'
COPY TO temp TYPE DELIMITED
MODIFY FILE temp.txt
USE
DELETE FILE backup.dbf
DELETE FILE temp.txt
//
CREATE TABLE MyGenTbl (mygenfield G)
APPEND BLANK && Add a blank record
APPEND GENERAL mygenfield FROM C:\EXCEL\BOOK1.XLS CLASS EXCELCHART
//
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee && Open Employee table
WAIT WINDOW 'Employee notes memo field - press ESC' NOWAIT
MODIFY MEMO notes NOEDIT && Open the notes memo field
COPY MEMO notes TO test.txt && Create test file from memo field
WAIT WINDOW 'TEST.TXT text file - press ESC' NOWAIT
MODIFY FILE test.txt NOEDIT && Open the text file
WAIT WINDOW 'Employee notes now appended - press ESC' NOWAIT
APPEND MEMO notes FROM test.txt && Add contents of text file
MODIFY MEMO notes NOEDIT && Display memo field again
WAIT WINDOW 'Overwrite Employee notes- press ESC' NOWAIT
APPEND MEMO notes FROM test.txt OVERWRITE && Replace notes
MODIFY MEMO notes NOEDIT NOWAIT
DELETE FILE test.txt
CLOSE DATABASES
//
* Open the testdata database
OPEN DATABASE (HOME(2) + 'Data\testdata')
* Create a free, temporary table with one memo field called
mProcedure
CREATE TABLE mytable FREE (mProcedure M)
APPEND BLANK && Add a blank record to mytable
* Add PROCEDURE command, name, and carriage return/linefeed to
* memo field
REPLACE mProcedure WITH "PROCEDURE MyProcedure" + CHR(13) + CHR(10)
* Copy contents of memo field to temporary file
COPY MEMO mProcedure TO mytemp.txt
USE && Close the temporary table
APPEND PROCEDURES FROM mytemp.txt && Copy procedure to the database
CLEAR

85
* Display the procedures associated with the current database
DISPLAY PROCEDURES
DELETE FILE mytable.dbf && Erase temporary table
DELETE FILE mytable.fpt && Erase temporary table memo file
DELETE FILE mytemp.txt && Erase temporary text file

AVERAGE
Menghitung rata-rata aritmatika dari ekspresi numerik atau field
AVERAGE [ExpressionList] [Scope] [FOR lExpression1]
[WHILElExpression2]
[TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders && Open order table

CLEAR
AVERAGE Order_Amt && Calcuate averages of all orders
AVERAGE Order_Amt TO gnAvg && Store average to memory variable
? 'Average order amount: '
?? gnAvg && Display the average again

BLANK
Menghapus data dari seluruh (tanpa argumen) field yang ada dalam rekord aktif
BLANK [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE
lExpression2]
[NOOPTIMIZE] [IN nWorkArea | cTableAlias]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table

CLEAR
DISPLAY && Displays the current record
SCATTER TO gaCustomer && Create array with record contents
BLANK && Clear the record
DISPLAY && Displays the blank record
GATHER FROM gaCustomer && Restore original record contents
DISPLAY && Display the restored record

BROWSE
Membuka window Browse dan menampilkan rekord tabel yang aktif atau tabel tertentu yang
dipilih.
BROWSE [FIELDS FieldList] [FONT cFontName [, nFontSize]]
[STYLE cFontStyle] [FOR lExpression1 [REST]] [FORMAT]
[FREEZE FieldName] [KEY eExpression1 [, eExpression2]] [LAST |
NOINIT]
[LOCK nNumberOfFields] [LPARTITION] [NAME ObjectName] [NOAPPEND]
[NOCAPTIONS] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID]
[NOLINK] [NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT]

86
[PARTITION nColumnNumber [LEDIT] [REDIT]]
[PREFERENCE PreferenceName] [SAVE] [TIMEOUT nSeconds]
[TITLE cTitleText] [VALID [:F] lExpression2 [ERROR cMessageText]]
[WHEN lExpression3] [WIDTH nFieldWidth] [WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN] [COLOR SCHEME nSchemeNumber]
Contoh 1:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
IF _WINDOWS
BROWSE FIELDS contact FONT 'System', 15 STYLE 'NU'
ENDIF
IF _MAC
BROWSE FIELDS contact FONT 'Geneva', 14 STYLE 'NU'
ENDIF
Contoh 2:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
BROWSE FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
FREEZE phone
Contoh 3:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
SET ORDER TO postalcode
BROWSE KEY '10000', '30000'
Contoh 4:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
BROWSE PARTITION 20 REDIT
Contoh 5
DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
BROWSE WINDOW wBrowse ;
FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wBrowse
Contoh 6
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
BROWSE;
TITLE 'My Browse Window' ;
FIELDS phone :H = 'Phone Number' , ;
company :H = 'Company:'

87
Contoh 7:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
BROWSE FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'The stock amount must be less than 100'
Contoh 8:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
BROWSE FIELDS unit_price :P = '99,999.99'
Contoh 9:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
BROWSE FIELDS in_stock :B = 1, 100 :F
Contoh 10:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
BROWSE FIELDS prod_name :H = 'Product Name:', ;
unit_price :H = 'Price per Unit:'
Contoh 11:
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER cust_id IN 0 && Parent table
USE orders ORDER cust_id IN 0 && Child table
SELECT customer && Back to parent work area
SET RELATION TO cust_id INTO orders && Establish relationship
SET SKIP TO orders && One-to-many relationship
WAIT WINDOW 'Scroll to see shipping dates for each customer' NOWAIT
BROWSE FIELDS customer.cust_id :H='Customer Number', ;
customer.city :H='Customer City', orders.shipped_on

CALCULATE
Menunjukkan operasi finansial dan statistik terhadap field atau ekspresi yang melibatkan field
CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE
lExpression2]
[TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE]
[IN nWorkArea | cTableAlias]
eExpressionList

Ekspresi yang digunakan berisi kombinasi berbagai fungsi-fungsi berikut:

AVG(nExpression)

88
CNT( )
MAX(eExpression)
MIN(eExpression)
NPV(nExpression1, nExpression2 [, nExpression3])
STD(nExpression)
SUM(nExpression)
VAR(nExpression)
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE orders && Open Orders table

SET TALK ON
CLEAR
CALCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt)
CALCULATE STD(order_amt), VAR(order_amt) TO gnStd, gnVar

CANCEL
Mengakhiri program berjalan
CANCEL
Contoh:
DO WHILE .T.
IF MESSAGEBOX("Do you want to continue?",36) <> 6
CANCEL
ENDIF
ENDDO

CD | CHDIR
Mengubah direktory default
CD cPath | CHDIR cPath
Contoh:
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
MKDIR mytstdir && Create a new directory
CHDIR mytstdir && Change to the new directory
= GETDIR( ) && Display the Select Directory dialog box
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
RMDIR mytstdir && Remove the new directory
= GETDIR( ) && Display the Select Directory dialog box

CHANGE
Menampilkan field-field untuk dimodifikasi

89
CHANGE [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE
lExpression2] [FONT cFontName [, nFontSize]] [STYLE cFontStyle]
[FREEZE FieldName]
[KEY eExpression1 [, eExpression2]] [LAST | NOINIT] [LPARTITION]
[NAME ObjectName] [NOAPPEND] [NOCAPTION] [NOCLEAR] [NODELETE]
[NOEDIT | NOMODIFY] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT]
[PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName]
[REST] [SAVE] [TIMEOUT nSeconds] [TITLE cTitleText]
[VALID [:F] lExpression3 [ERROR cMessageText]] [WHEN lExpression4]
[WIDTH nFieldWidth] [WINDOW WindowName1]
[IN [WINDOW] WindowNam2 | IN SCREEN | IN MACDESKTOP]]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

CLEAR
Menghapus item yang ditentukan atau item memory
CLEAR [ALL | CLASS ClassName | CLASSLIB ClassLibraryName | DEBUG |
DLLS
[cAliasNameList]| EVENTS | FIELDS | GETS | MACROS | MEMORY
| MENUS | POPUPS | PROGRAM | PROMPT | READ [ALL] | RESOURCES
[FileName] | TYPEAHEAD | WINDOWS]

CLOSE
Menutup berbagai jenis file
CLOSE [ALL | ALTERNATE | DATABASES [ALL] | DEBUGGER | FORMAT |
INDEXES
| PROCEDURE | TABLES [ALL]]

CLOSE MEMO
Menutup satu atau lebih memo yang sedang di edit
CLOSE MEMO MemoFieldName1 [, MemoFieldName2 ...] | ALL

COMPILE
Mengkompile ( mengubah file code program menjadi file program ) satu atau lebih source file
program dan membuat file obyek untuk setiap source file.
COMPILE [?] [CLASSLIB | LABEL | REPORT] FileName | FileSkeleton

COMPILE FileName | FileSkeleton | ? [ENCRYPT] [NODEBUG] [AS


nCodePage]

CONTINUE
Melanjutkan pencarian berikutnya. Perintah ini digunakan bersama dengan perintah LOCATE.
Perintah ini dilanjutkan setelah perintah LOCATE berhasil menemukan rekord yang dicari.
Perintah ini akan diulangi sampai pada akhir file atau sesuai lingkup yang ditentukan.
CONTINUE

90
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
SET TALK OFF
STORE 0 TO gnCount

LOCATE FOR ALLTRIM(UPPER(country)) = 'FRANCE'


DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
? 'Total customers from France: '+ LTRIM(STR(gnCount))

COPY FILE
Membuat duplikat berbagai jenis file
COPY FILE FileName1 TO FileName2

COPY MEMO
Mengkopi isi field memo menjadi file teks
COPY MEMO MemoFieldName TO FileName [ADDITIVE] [AS nCodePage]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee && Opens Employee table
COPY MEMO notes TO test.txt
WAIT WINDOW 'Memo contents now in test.txt' NOWAIT
MODIFY FILE test.txt
COPY MEMO notes TO test.txt ADDITIVE
WAIT WINDOW 'Memo contents added again to test.txt' NOWAIT
MODIFY FILE test.txt
DELETE FILE test.txt

COPY PROCEDURES
Mengkopi prosedur-prosedur yang disimpan dalam file database
COPY PROCEDURES TO FileName [AS nCodePage] [ADDITIVE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')

COPY PROCEDURES TO myproc.txt && Copy stored procedures to a file


MODIFY FILE myproc.txt && Open the file
DELETE FILE myproc.txt && Erase the file

COPY STRUCTURE
Membuat struktur file tabel sesuai dengan struktur file tabel yang aktif

91
COPY STRUCTURE TO TableName [FIELDS FieldList]
[[WITH] CDX | [WITH] PRODUCTION]
[DATABASE cDatabaseName [NAME cTableName]]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

COPY STRUCTURE TO backup


USE backup
APPEND FROM customer FOR country = 'UK'
BROWSE FIELDS contact, country
USE
DELETE FILE backup.dbf

COPY STRUCTURE EXTENDED


Membuat file tabel baru dari struktur tabel aktif
COPY STRUCTURE EXTENDED TO FileName
[DATABASE DatabaseName [NAME LongTableName]] [FIELDS FieldList]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders && Opens Orders table
CLEAR
DISPLAY STRUCTURE

WAIT WINDOW 'Structure of the orders table' NOWAIT


COPY STRUCTURE EXTENDED TO temp
USE temp
WAIT WINDOW 'The temp table - 1 row per field in orders' NOWAIT
BROWSE
CREATE backup FROM temp
USE backup
DISPLAY STRUCTURE
WAIT WINDOW 'Backup.dbf has the same structure as orders' NOWAIT
USE
DELETE FILE temp.dbf
DELETE FILE backup.dbf

COPY TO ARRAY
Mengkopi data dari tabel yang aktif menjadi array
COPY TO ARRAY ArrayName
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT
Skeleton]
[Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
DIMENSION gaTemp(3,10)
COPY NEXT 3 TO ARRAY gaTemp
DISPLAY MEMORY LIKE gaTemp

92
COPY TO
Membuat file baru dari file tabel yang sedang aktif dengan berbagai format.
COPY TO FileName [DATABASE DatabaseName [NAME LongTableName]]
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT
Skeleton]
[Scope] [FOR lExpression1] [WHILE lExpression2] [[WITH] CDX]
| [[WITH] PRODUCTION] [NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | WK1 | WKS | WR1 | WRK | CSV | | XLS | XL5
| DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB
| WITH CHARACTER Delimiter]]] [AS nCodePage]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'This is the delimited text file' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt

COUNT
Menghitung jumlah rekord dalam sebuah file tabel aktif
COUNT [Scope] [FOR lExpression1] [WHILE lExpression2] [TO
VarName]
[NOOPTIMIZE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

CLEAR
COUNT FOR UPPER(city) = 'PARIS'
DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS'

CREATE CLASS
Membuat file Class
CREATE CLASS ClassName | ? [OF ClassLibraryName1 | ?]
[AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT]

CREATE CLASSLIB
Membuat file Class library (.vcx)
CREATE CLASSLIB ClassLibraryName
Contoh:
CREATE CLASSLIB myclslib
CREATE CLASS myform OF myclslib AS "Form" && Creates new class
SET CLASSLIB TO myclslib ADDITIVE && Opens MyClsLib.VCX

93
CREATE
Membuat file tabel baru
CREATE [FileName | ?]

CREATE CURSOR SQL


Membuat file tabel temporer
CREATE CURSOR alias_name (fname1 type [(precision [, scale])]
[NULL | NOT NULL] [CHECK lExpression [ERROR cMessageText]]
[DEFAULT eExpression] [UNIQUE] [NOCPTRANS]
[, fname2 ...]) | FROM ARRAY ArrayName
Contoh:
CLOSE DATABASES
CLEAR
CREATE CURSOR employee ;
(EmpID N(5), Name C(20), Address C(30), City C(30), ;
PostalCode C(10), OfficeNo C(8) NULL, Specialty M)
DISPLAY STRUCTURE
WAIT WINDOW "Press a key to add a record."

INSERT INTO employee (EmpId, Name, Address, City, PostalCode, ;


OfficeNo, Specialty);
VALUES (1002, "Dr. Bonnie Doren","University of Oregon", "Eugene", ;
"98403", "", "Secondary Special Education")
BROWSE

* At this point you could copy this record to a permanent table


CLOSE ALL && Once the cursor is closed, all data is flushed
&& from memory
CLEAR

CREATE DATABASE
Membuat file database dan sekaligus membuka file database yang dibuat.
CREATE DATABASE [DatabaseName | ?]
Contoh:
CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Displays tables in the database
DISPLAY DATABASES && Displays table information

CREATE PROJECT
Membuka struktur file program melalui kotak dialog Project Manager
CREATE PROJECT [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN [NOSHOW] [NOPROJECTHOOK]

94
CREATE QUERY
Membuka kotak dialog Query Designer.
CREATE QUERY [FileName | ?] [NOWAIT]

CREATE REPORT
Membuat file laporan
CREATE REPORT FileName1 | ? FROM FileName2 [FORM | COLUMN]
[FIELDS FieldList] [ALIAS] [NOOVERWRITE] [WIDTH nColumns]

CREATE REPORT [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1]


[IN [WINDOW] WindowName2 | IN SCREEN

CREATE TABLE SQL


Membuat file tabel dengan memilih field-field yang ditentukan sesuai dengan kondisi yang
dibuat
CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]
(FieldName1 FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1] [PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS]
[, FieldName2 ...] [, PRIMARY KEY eExpression2 TAG TagName2
|, UNIQUE eExpression3 TAG TagName3]
[, FOREIGN KEY eExpression4 TAG TagName4 [NODUP] REFERENCES
TableName3 [TAG TagName5]]
[, CHECK lExpression2 [ERROR cMessageText2]])| FROM ARRAY ArrayName

DEACTIVATE MENU
Menutup menu bar dari memory
DEACTIVATE MENU MenuName1 [, MenuName2 ...] | ALL
*** Name this program DEACMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'

95
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion DO choice IN deacmenu WITH PROMPT( ),
POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges '
ON SELECTION POPUP cardinfo;
DO choice IN deacmenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU example


DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU NOSAVE
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC

PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT

DEACTIVATE POPUP
Menutup menu yang dibuat dengan DEFINE POPUP.
DEACTIVATE POPUP MenuName1 [, MenuName2 ...] | ALL

DEACTIVATE WINDOW
Menutup window dari screen
DEACTIVATE WINDOW WindowName1 [, WindowName2 ...] | ALL
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW wOutput1

DISPLAY
WAIT WINDOW 'Press a key to deactivate the window'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

96
DECLARE
Membuat array berdimensi satu atau dua
DECLARE ArrayName1 (nRows1 [, nColumns1])
[, ArrayName2 (nRows2 [, nColumns2])] ...

DEFINE BAR
Membuat item menu pada menu yang dibuat dengan DEFINE POPUP.
DEFINE BAR nMenuItemNumber1 | SystemItemName OF MenuName
PROMPT cMenuItemText [PICTURE cFileName] [PICTRES cMenubarName]
[BEFORE nMenuItemNumber2 | AFTER nMenuItemNumber3]
[FONT cFontName [, nFontSize]] [STYLE cFontStyle]
[KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter]
[MESSAGE cMessageText] [SKIP [FOR lExpression]]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]
[MRU] [INVERT]

DEFINE CLASS
Membuat Class atau SubClass UDF dengan menentukan properties, events, dan methods dari
class atau subclass yang dibuat.
DEFINE CLASS ClassName1 AS ParentClass [OF ClassLibrary] [OLEPUBLIC]
[[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...]
[Object.]PropertyName = eExpression ...]
[IMPLEMENTS cInterfaceName [EXCLUDE]
IN TypeLib | TypeLibGUID | ProgID ]
[ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]
[WITH cPropertylist]]
[[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS |_ASSIGN]
([cParamName [AS type] [@]])
[AS type] [HELPSTRING cHelpString]
THIS_ACCESS [NODEFAULT] cStatements [ENDFUNC | ENDPROC]]
[PEMName_COMATTRIB = nFlags | DIMENSION PEMName_COMATTRIB[5]
[PEMName_COMATTRIB[1] = nFlags
PEMName_COMATTRIB[2] = cHelpString
PEMName_COMATTRIB[3] = cPropertyCapitalization
PEMName_COMATTRIB[4] = cPropertyType
PEMName_COMATTRIB[5] = nOptionalParams]]
ENDDEFINE

DEFINE MENU
Membuat menu bar
DEFINE MENU MenuBarName [BAR [AT LINE nRow]]
[IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [,
nFontSize]]
[STYLE cFontStyle] [KEY KeyLabel] [MARK cMarkCharacter]
[MESSAGE cMessageText] [NOMARGIN]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

97
DEFINE PAD
Membuat title menu (PAD) pada menu bar udf atau sistem menu bar Visual FoxPro
DEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText
[AT nRow, nColumn] [BEFORE MenuName2 | AFTER MenuName3]
[NEGOTIATE cContainerPosition [, cObjectPosition]]
[FONT cFontName [, nFontSize]] [STYLE cFontStyle]
[KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter]
[SKIP [FOR lExpression]] [MESSAGE cMessageText]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

DEFINE POPUP
Membuat menu
DEFINE POPUP MenuName [FROM nRow1, nColumn1] [TO nRow2, nColumn2]
[IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [,
nFontSize]]
[STYLE cFontStyle] [FOOTER cFooterText] [KEY KeyLabel] [MARGIN]
[MARK cMarkCharacter] [MESSAGE cMessageText] [MOVER] [MULTISELECT]
[PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton]
| PROMPT STRUCTURE] [RELATIVE] [SCROLL] [SHORTCUT]
[TITLE cMenuTitleText]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

DEFINE WINDOW
Membuat window dan menentukan attribut window yang dibuat
DEFINE WINDOW WindowName1 FROM nRow1, nColumn1 TO nRow2, nColumn2
| AT nRow3, nColumn3 SIZE nRow4, nColumn4
[IN [WINDOW] WindowName2 | IN SCREEN | IN DESKTOP [NAME
ObjectName]
[FONT cFontName [, nFontSize]] [STYLE cFontStyle]
[FOOTER cFooterText] [TITLE cTitleText] [HALFHEIGHT]
[DOUBLE | PANEL | NONE | SYSTEM | cBorderString]
[CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW | NOGROW] [MDI |
NOMDI]
[MINIMIZE | NOMINIMIZE] [ZOOM | NOZOOM] [ICON FILE FileName1]
[FILL cFillCharacter | FILL FILE FileName2]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]]

DELETE - SQL
Memberikan tanda bahwa rekord telah dihapus (Mark)
DELETE FROM [DatabaseName!]TableName
[WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
Contoh:
CLOSE DATABASES
CLEAR
OPEN DATABASE HOME(2)+"Data\testdata"
USE customer && Open Customer table
DELETE FROM customer WHERE country = "USA" && Mark for deletion

CLEAR

98
LIST FIELDS company, country FOR DELETED( ) && List marked records
* If the file were packed at this point the records would be deleted
WAIT WINDOW "Records currently marked for deletion"+CHR(13) + ;
"Press any key to revert..."

* Unmark all records marked for deletion


RECALL ALL
CLEAR
* Verify reverted records
COUNT FOR DELETED( )=.T. TO nDeleted

* Convert nDeleted to a character string and display information


WAIT WINDOW ALLTRIM(STR(nDeleted)) + " records marked for deletion."

DELETE
Memberikan tanda Marks bahwa rekord sudah dihapus
DELETE [Scope] [FOR lExpression1] [WHILE lExpression2]
[IN nWorkArea | cTableAlias] [NOOPTIMIZE]
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

DELETE FOR country = 'USA' && Mark for deletion


CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL && Unmark all records marked for deletion

DELETE DATABASE
Menghapus database dari disk
DELETE DATABASE DatabaseName | ? [DELETETABLES] [RECYCLE]
Contoh:
CLOSE ALL
CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Displays tables in the database
DISPLAY DATABASES && Displays table information
CLOSE ALL
DELETE DATABASE people DELETETABLES

DELETE FILE
Menghapus suatu file dari disk
DELETE FILE [FileName | ?] [RECYCLE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

COPY STRUCTURE TO backup


USE backup

99
APPEND FROM customer FOR country = 'USA'
COPY TO temp TYPE DELIMITED

WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT


MODIFY FILE temp.txt NOEDIT
DELETE FILE temp.txt
? IIF(FILE('temp.txt'),'File not deleted','File deleted')
USE
DELETE FILE backup.dbf

DIMENSION
Membuat variabel array dimensi satu atau dua
DIMENSION ArrayName1(nRows1 [, nColumns1])
[, ArrayName2(nRows2 [, nColumns2])] ...
Contoh:
DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]

* Contoh 1
DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray
WAIT WINDOW

* Contoh 2
DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone
WAIT WINDOW

* Contoh 3
DIMENSION sample(2,3)
STORE 'Goodbye' TO sample(1,2)
STORE 'Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample

DIR atau DIRECTORY


Menampilkan informasi mengenai file-file dalam suatu direktory/folder
DIR | DIRECTORY [ON Drive] [[LIKE] [Path] [FileSkeleton]]
[TO PRINTER [PROMPT] | TO FILE FileName]
Contoh:

100
CLEAR
DIR && Display tables in the current directory
DIR *.CDX && Display index files in the current directory
DIR A*.DBF && Display tables that begin with A
DIR *.* && Display all files, including those without extensions

DISPLAY
Menampilkan informasi mengenai tabel yang sedang aktif
DISPLAY [[FIELDS] FieldList] [Scope] [FOR lExpression1]
[WHILE lExpression2] [OFF] [NOCONSOLE] [NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE FileName]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

CLEAR
DISPLAY FIELD cust_id, company, contact OFF NEXT 10

DISPLAY FILES
Menampilkan informasi mengenai file-file
DISPLAY FILES [ON Drive] [LIKE FileSkeleton]
[TO PRINTER [PROMPT] | TO FILE FileName]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

CLEAR
DISPLAY FILES LIKE *.DBC

DISPLAY MEMORY
Menampilkan isi variabel atau array aktif
DISPLAY MEMORY [LIKE FileSkeleton]
[TO PRINTER [PROMPT] | TO FILE FileName] [NOCONSOLE]
Contoh:
STORE 'Goodbye' TO sample1
STORE 'Hello' TO sample2
STORE .T. TO texit
STORE .F. TO mexit

CLEAR
DISPLAY MEMORY LIKE sam*
DISPLAY MEMORY LIKE ?exit

DISPLAY PROCEDURES
Menampilkan nama-nama prosedur yang disimpan dalam database aktif
DISPLAY PROCEDURES [TO PRINTER [PROMPT] | TO FILE FileName]

101
[NOCONSOLE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

CLEAR
DISPLAY PROCEDURES && Displays stored procedures in the database

DISPLAY STRUCTURE
Menampilkan struktur file tabel
DISPLAY STRUCTURE [IN nWorkArea | cTableAlias]
[TO PRINTER [PROMPT] | TO FILE FileName] [NOCONSOLE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

CLEAR
DISPLAY STRUCTURE

DISPLAY TABLES
Menampilkan nama-nama dan informasi mengenai seluruh tabel yang ada dalam database
aktif
DISPLAY TABLES [TO PRINTER [PROMPT] | TO FILE FileName] [NOCONSOLE]
Contoh:
CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\') && Sets path to database
OPEN DATABASE testdata && Open testdata database

CLEAR
DISPLAY TABLES && Displays information about tables in the database

DO CASE ... ENDCASE


Kondisional ekpresi yang mengevaluasi sekumpulan perintah
DO CASE
CASE lExpression1 Commands
[CASE lExpression2 Commands
...
CASE lExpressionN Commands]
[OTHERWISE Commands]
ENDCASE
Contoh:
STORE CMONTH(DATE( )) TO month && The month today

DO CASE && Begins loop

CASE INLIST(month,'January','February','March')
STORE 'First Quarter Earnings' TO rpt_title

102
CASE INLIST(month,'April','May','June')
STORE 'Second Quarter Earnings' TO rpt_title

CASE INLIST(month,'July','August','September')
STORE 'Third Quarter Earnings' TO rpt_title

OTHERWISE
STORE 'Fourth Quarter Earnings' TO rpt_title
ENDCASE && Ends loop
WAIT WINDOW rpt_title NOWAIT

DO
Menjalankan program atau prosedur Visual FoxPro
DO ProgramName1 | ProcedureName [IN ProgramName2] [WITH
ParameterList]

DO FORM
Menjalankan form atau form set yang dibuat melalui form designer
DO FORM FormName | ? [NAME VarName [LINKED]] [WITH cParameterList]
[TO VarName] [NOREAD] [NOSHOW]

DO WHILE ... ENDDO


Menjalankan sekumpulan perintah yang ada dalam pengulangan kondisional
DO WHILE lExpression
Commands
[LOOP]
[EXIT]
ENDDO
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products && Opens Products table
SET TALK OFF
gnStockTot = 0

DO WHILE .T. && Begins loop


IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && Ends loop

CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

103
DROP TABLE
Mengeluarkan tabel dari database dan menghapus tabel tersebut dari disk
DROP TABLE TableName | FileName | ? [RECYCLE]

DROP VIEW
Menghapys view SQL dari database
DROP VIEW ViewName

EDIT
Menampilkan field-field untuk di edit
EDIT [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE
lExpression2]
[FONT cFontName[, nFontSize]] [STYLE cFontStyle] [FREEZE FieldName]
[KEY eExpression1[, eExpression2]] [LAST | NOINIT] [LPARTITION]
[NAME ObjectName] [NOAPPEND] [NOCAPTION] [NODELETE] [NOEDIT |
NOMODIFY]
[NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT]
[PARTITION nColumnNumber [LEDIT] [REDIT]]
[PREFERENCE PreferenceName] [REST] [SAVE] [TIMEOUT nSeconds]
[TITLE cTitleText] [VALID [:F] lExpression3 [ERROR cMessageText]]
[WHEN lExpression4] [WIDTH nFieldWidth] [WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN [COLOR SCHEME nSchemeNumber]

Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
EDIT FIELDS location = ALLTRIM(city) + ', ' + country

Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
EDIT FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'The stock amount must be less than 100'
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table
EDIT FIELDS in_stock :B = 1, 100 :F
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Open products table

104
EDIT FIELDS prod_name :H = 'Product Name:', ;
unit_price :H = 'Price per Unit:'
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens customer table
IF _WINDOWS
EDIT FIELDS contact FONT 'System', 15 STYLE 'NU'
ENDIF
IF _MAC
EDIT FIELDS contact FONT 'Geneva', 14 STYLE 'NU'
ENDIF

Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
SET ORDER TO postalcode
EDIT KEY '10000', '30000'
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens customer table

EDIT PARTITION 30 REDIT


Contoh:
DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
EDIT WINDOW wEdit ;
FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wEdit
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table
EDIT;
TITLE 'My Edit Window' ;
FIELDS phone :H = 'Phone Number' , ;
company :H = 'Company:'
Contoh:
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER cust_id IN 0 && Parent table
USE orders ORDER cust_id IN 0 && Child table
SELECT customer && Back to parent work area
SET RELATION TO cust_id INTO orders && Establish relationship

105
SET SKIP TO orders && One-to-many relationship
WAIT WINDOW 'Scroll to see shipping dates for each customer' NOWAIT
EDIT FIELDS customer.cust_id :H='Customer Number', ;
customer.city :H='Customer City', orders.shipped_on

EJECT
Mengirimkan formfeed ke printer
EJECT
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens customer table

SET DEVICE TO PRINTER


SET PRINT ON
DO WHILE NOT EOF( )
@ PROW( )+1,10 SAY 'Company: ' + company
@ PROW( )+1,10 SAY 'Phone: ' + phone
@ PROW( )+1,1 SAY ''
IF PROW( ) > 62
EJECT
ENDIF
SKIP
ENDDO
SET PRINT OFF
SET DEVICE TO SCREEN

EJECT PAGE
Mengirimkan conditional page advance ke printer
EJECT PAGE

ERASE
Menghapus file dari disk
ERASE FileName | ? [RECYCLE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens customer table

COPY STRUCTURE TO backup


USE backup
APPEND FROM customer FOR country = 'USA'
COPY TO temp TYPE DELIMITED

WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT


MODIFY FILE temp.txt NOEDIT
ERASE temp.txt
? IIF(FILE('temp.txt'),'File not deleted','File deleted')
USE
ERASE backup.dbf

106
ERROR
Generates a Visual FoxPro error.
ERROR nErrorNumber | nErrorNumber, cMessageText1 | [cMessageText2]
Contoh:
ERROR 12 && Generates the Visual FoxPro error "Variable not found"
ERROR 12, 'Myvariable' && Variable 'Myvariable' not found error
ERROR 'My error message' && Generates 'My error message' error

EXIT
Exits a DO WHILE, FOR, or SCAN loop.
EXIT
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products && Opens Products table
SET TALK OFF
gnStockTot = 0

DO WHILE .T. && Beginning of loop


IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && End of loop

CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

EXPORT
Mengcopy data dari file tabel Visual FoxPro ke file dalam format yang berbeda
EXPORT TO FileName [TYPE]
DIF | MOD | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
[FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2]
[NOOPTIMIZE] [AS nCodePage]

FLUSH
Menyimpan file tabel dan indeks yang telah dimodifikasi ke disk
FLUSH

107
FOR EACH ENDFOR
FOR EACH Var IN Group
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT [Var]
Contoh:
DIMENSION cMyArray(3)
cMyArray[1] = 'A'
cMyArray[2] = 'B'
cMyArray[3] = 'C'

FOR EACH cMyVar IN cMyArray


? cMyVar
ENDFOR

Contoh lain:

oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD

FOR EACH oMyVar IN oExcel.sheets


? oMyVar.name
NEXT oMyVar

Contoh:
PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW

DEFINE CLASS frmTest AS FORM


Height = 200
DIMENSION MyArray[5]
PROCEDURE Init

FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR

****** FOR EACH - NEXT ******


FOR EACH oButton IN THIS.MyArray
oButton.Visible = .T.
NEXT

****** FOR EACH - NEXT element ******


FOR EACH oButton IN THIS.MyArray
oButton.FontBold = .T.
NEXT obutton
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j = j + 1
ENDFOR

****** FOR EACH - ENDFOR element ******

108
FOR EACH oButton IN THIS.MyArray
oButton.FontItalic = .T.
ENDFOR obutton

j = 1
****** EXIT ******
FOR EACH oButton IN THIS.MyArray
oButton.Caption = "test" + str(j)
j = j+1
IF j > 3
EXIT
ENDIF
NEXT

j = 1
****** LOOP ******
FOR EACH oButton IN THIS.MyArray
IF j > 3
LOOP
ENDIF
j = j + 1
oButton.Left = 25
NEXT
ENDPROC
ENDDEFINE

FOR ... ENDFOR


FOR Var = nInitialValue TO nFinalValue [STEP nIncrement]
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT
Contoh:

Contoh:
CLEAR
FOR gnCount = 1 TO 10
? gnCount
ENDFOR

Contoh
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
STORE 2 TO gnI && Initial value
STORE 10 TO gnJ && Final value
STORE 2 TO K && Step value
FOR gnCount = gnI TO gnJ STEP K
GOTO gnCount && Move record pointer
DISPLAY company && Display company name
ENDFOR

109
FREE TABLE
Mengeluarkan referensi database dari tabel
FREE TABLE TableName

FUNCTION
Awal pengidentifikasian udf
FUNCTION FunctionName
[LPARAMETERS parameter1[,parameter2},...]
Commands
[RETURN [eExpression]]
ENDFUNC
Atau:
FUNCTION FunctionName([parameter1[,parameter2},...])
Commands
[RETURN [eExpression]]
ENDFUNC
Contoh:
Local oHello
oHello=CREATEOBJECT("Hello")
=MESSAGEBOX(oHello.SayHello(),48)
RELEASE oHello
* Class definition code
DEFINE CLASS Hello AS CUSTOM
FUNCTION SayHello
RETURN "Hello World"
ENDFUNC
ENDDEFINE

GATHER
Menyimpan data dalam rekord yang sedang aktif dengan data dari suatu array, sekumpulan
variabel, atau obyek
GATHER FROM ArrayName | MEMVAR | NAME ObjectName
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
[MEMO]
Contoh:
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

Contoh 2:
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

110
SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

GETEXPR
Menampilkan kotak dialog Expression Builder pada saat membuat suatu ekspresi dan
menyimpan ekspresi ke suatu variabel atau elemen array
GETEXPR [cCaptionText] TO MemVarName
[TYPE cExpressionType [; cErrorMessageText]]
[DEFAULT cDefaultExpression]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

GETEXPR 'Enter condition to locate ' TO gcTemp;


TYPE 'L' DEFAULT 'COMPANY = ""'
LOCATE FOR &gcTemp
IF FOUND( )
DISPLAY
ELSE
? 'Condition ' + gcTemp + ' was not found '
ENDIF

GO | GOTO
Memindahkan pointer rekord ke nomer rekord yang diinginkan
GO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]
GO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]
GOTO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]
GOTO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Opens Products table
USE customer IN 0 && Opens Customer table
GO BOTTOM IN products
CLEAR
? RECNO('products')
GO TOP
? RECNO( ) && Displays 1
GO 5
? RECNO( ) && Displays 5

111
HELP
Membuka Help window.
HELP [Topic | ID nContextID] [IN [WINDOW] WindowName | IN [WINDOW]
SCREEN | IN [WINDOW] [NOWAIT]

HIDE MENU
Menyembunyikan satu atau lebih menu bar aktif
HIDE MENU MenuBarName1 [, MenuBarName2 ...] | ALL [SAVE]

HIDE POPUP
Menyembunyikan satu atau lebih menu aktif yang dibuat DEFINE POPUP.
HIDE POPUP MenuName1 [, MenuName2 ...] | ALL [SAVE]

HIDE WINDOW
Menyembunyikan window yang dibuat atau sistem window Visual FoxPro
HIDE WINDOW WindowName1 [, WindowName2 ... ] | ALL | SCREEN
[ IN [WINDOW] WindowNameN | IN [WINDOW] SCREEN | IN [WINDOW]
[BOTTOM | TOP | SAME]
Contoh:
DEFINE WINDOW wOutput1 FROM 6,1 TO 19,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW wOutput1

WAIT WINDOW 'Press a key to hide this window'


HIDE WINDOW wOutput1

WAIT WINDOW 'Press a key to see the window again'


SHOW WINDOW wOutput1

WAIT WINDOW 'Press a key to remove the window from memory'


DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

IF ... ENDIF
Kondisi logika yang didasarkan pada kumpulan perintah
IF lExpression [THEN]
Commands
[ELSE
Commands]
ENDIF
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table

112
GETEXPR 'Enter condition to locate ' TO gcTemp;
TYPE 'L' DEFAULT 'COMPANY = ""'
LOCATE FOR &gcTemp && Enter LOCATE expression
IF FOUND( ) && Was it found?
DISPLAY && If so, display the record
ELSE && If not found
? 'Condition ' + gcTemp + ' was not found ' && Display a message
ENDIF
USE

IMPORT
Menerima dari dari format file eksternal menjadi file tabel Visual FoxPro
IMPORT FROM FileName [DATABASE DatabaseName [NAME LongTableName]]
[TYPE] FW2 | MOD | PDOX | RPD | WK1 | WK3 | WKS | WR1 | WRK |
XLS
| XL5 [SHEET cSheetName] | XL8 [SHEET cSheetName] [AS
nCodePage]

INDEX
Membuat file indeks sehingga dapat ditampilkan sesuai logika urutan
INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]
[FOR lExpression] [COMPACT] [ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE] [ADDITIVE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON company TO complist
CLEAR
DISPLAY STATUS

*
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp
CLEAR
DISPLAY STATUS
*
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
CLEAR

INSERT SQL
Menambah rekord pada akhir tabel yang berisi nilai field yang ditentukan
INSERT INTO dbf_name [(fname1 [, fname2, ...])]
VALUES (eExpression1 [, eExpression2, ...])
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR

113
Contoh:
USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)

Contoh 2
CLOSE DATABASES
CLEAR

OPEN DATABASE (HOME(2) + 'Data\testdata')


USE Customer && Open customer table
* Scatter current record to memory variables
SCATTER MEMVAR

* Copy structure of current table to example table


COPY STRUCTURE TO cust2

* Insert record from memory variable


INSERT INTO cust2 FROM MEMVAR

SELECT CUST2
BROWSE

* Close and delete example table


USE
DELETE FILE cust2.dbf

KEYBOARD
Mengirimkan ekpresi karakter dalam buffer keyboard
KEYBOARD cKeyboardValue [PLAIN] [CLEAR]

LABEL
Mencetak label dari file tabel dan file label yang telah dibuat
LABEL [FORM FileName1 | FORM ?] [ENVIRONMENT] [Scope]
[FOR lExpression1] [WHILE lExpression2] [NOCONSOLE]
[NOOPTIMIZE] [PDSETUP] [PREVIEW [NOWAIT]] [NAME ObjectName]
[TO PRINTER [PROMPT] | TO FILE FileName2]

LIST
Menampilkan tabel atau informasi lingkungan secara berlanjut
LIST [FIELDS FieldList] [Scope] [FOR lExpression1]
[WHILE lExpression2] [OFF] [NOCONSOLE] [NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

LIST FILES [ON Drive] [LIKE FileSkeleton]


[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

LIST MEMORY [LIKE FileSkeleton] [NOCONSOLE]


[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

114
LIST STATUS [NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

LIST STRUCTURE [IN nWorkArea | cTableAlias] [NOCONSOLE]


[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

LOCAL
Membuat variabel atau variabel array lokal
LOCAL VarList

LOCAL [ARRAY] ArrayName1(nRows1 [, nColumns1]) [, ArrayName2(nRows2


[, nColumns2])] ... [AS type [OF ClassLib]]

LOCATE
Pencarian rekord berurutan Sequentially dari awal rekord sampai pada akhir ekspresi logika
yang dibuat
LOCATE [FOR lExpression1] [Scope] [WHILE] [NOOPTIMIZE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Open Customer table
SET TALK OFF

STORE 0 TO gnCount
LOCATE FOR ALLTRIM(UPPER(customer.country)) = 'GERMANY'
DO WHILE FOUND( )
gnCount = gnCount + 1
? company
CONTINUE
ENDDO

? 'Total companies Germany: '+ LTRIM(STR(gnCount))

LOOP
Mengembalikan kontrol program secara langsung ke awal struktur pengulangan
LOOP

MD | MKDIR
Membuat direktory atau subdirektory pada disk
MD cPath | MKDIR cPath
Contoh:
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
MKDIR mytstdir && Create a new directory
CHDIR mytstdir && Change to the new directory
= GETDIR( ) && Display the Select Directory dialog box
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
RMDIR mytstdir && Remove the new directory

115
= GETDIR( ) && Display the Select Directory dialog box

MODIFY CLASS
Membuka Class Designer dan mengubah atau menambah class yang ada
MODIFY CLASS ClassName [OF ClassLibraryName1]
[AS cBaseClassName [FROM ClassLibraryName2]]
[NOWAIT] [METHOD MethodName] [SAVE]

MODIFY COMMAND
Membuka kotak editing program sehingga dapat melakukan perubahan atau membuat
program baru
MODIFY COMMAND [FileName | ?] [NOEDIT] [NOMENU] [NOWAIT]
[RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN]] [AS nCodePage] [SAME]
[SAVE]

MODIFY DATABASE
Membuka Database Designer, sehingga memungkinkan untuk mengubah database secara
interaktif
MODIFY DATABASE [DatabaseName | ?] [NOWAIT] [NOEDIT]
Contoh:
CLOSE DATABASES
SET PATH TO (HOME(2) + 'data\') && Sets path to database
MODIFY DATABASE testdata && Open testdata database

MODIFY FILE
Membuka kotak edit sehingga dapat mengubah dan membuat file teks
MODIFY FILE [FileName | ?] [NOEDIT] [NOMENU] [NOWAIT]
[RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN]] [AS nCodePage] [SAME]
[SAVE]

MODIFY FORM
Membuka Form Designer untuk membuat atau mengubah form
MODIFY FORM [FormName | ?][NOWAIT][METHOD MethodName]
[NOENVIRONMENT][SAVE]
[[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]
Contoh:
MODIFY FORM (HOME(2) + 'solution\controls\timer\swatch.scx')

116
MODIFY GENERAL
Membuka window edit untuk field general dari rekord aktif
MODIFY GENERAL GeneralField1 [, GeneralField2 ...] [NOMODIFY]
[NOWAIT] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN
SCREEN]

MODIFY MEMO
Membuka editing window untuk field memod aktif
MODIFY MEMO MemoField1 [, MemoField2 ...] [NOEDIT] [NOMENU]
[NOWAIT] [RANGE nStartCharacter, nEndCharacter]
[[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]
[SAME] [SAVE]

MODIFY REPORT
Membuka Report Designer untuk melakukan modifikasi atau membuat file laporan
MODIFY REPORT [FileName | ?] [[WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN]] [NOENVIRONMENT] [NOWAIT]
[SAVE]

MODIFY STRUCTURE
Menampilkan Table Designer, untuk membuat perubahan struktur tabel
MODIFY STRUCTURE

ON SELECTION BAR
Menentukan perintah yang dijalankan ketika item menu dipilih
ON SELECTION BAR nMenuItemNumber OF MenuName [Command]

ON SELECTION MENU
Menentukan perintah yang dijalankan jika judul menu pada menu bar dipilih
ON SELECTION MENU MenuBarName | ALL [Command]

OPEN DATABASE
Membuka database
OPEN DATABASE [FileName | ?] [EXCLUSIVE | SHARED] [NOUPDATE]
[VALIDATE]

PACK
Menghapus seluruh rekord yang telah ditandai Mark Deleted secara permanen
PACK [MEMO] [DBF] [Tablename ] [IN nWorkarea | cTableAlias]

117
PACK DATABASE
Menghapus rekord yang telah di tandai penghapusan dari database aktif
PACK DATABASE
Contoh:
CLOSE DATABASES
SET PATH TO (HOME(2) + 'data\') && Sets path to database
OPEN DATABASE testdata && Open the database
PACK DATABASE && Pack the current database

PARAMETERS
Menentukan variabel private, atau array
PARAMETERS Parameter1 [AS type [OF ClassLib]] [, Parameter2 [AS type
[OF ClassLib]]]

PROCEDURE
PROCEDURE ProcedureName
[LPARAMETERS parameter1[,parameter2},...]
Commands
[RETURN [eExpression]]
ENDFUNC

PROCEDURE ProcedureName([parameter1[,parameter2},...])
Commands
[RETURN [eExpression]]
ENDFUNC

PUBLIC
Mendefinisikan variabel atau array global
PUBLIC MemVarList

PUBLIC [ARRAY] ArrayName1(nRows1 [, nColumns1])


[, ArrayName2(nRows2 [, nColumns2])] ...
[AS type [OF ClassLib]]

PRIVATE
Menyembunyikan variabel atau array tertentu yang dibuat dalam program yan sedang
dijalankan
PRIVATE VarList
PRIVATE ALL[LIKE Skeleton | EXCEPT Skeleton]

QUIT
Mengakhiri program Visual FoxPro atau kembali ke system operasi
QUIT

118
RD | RMDIR
Menghapus direktory atau folder dari disk
RD cPath | RMDIR cPath
Contoh:
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
MKDIR mytstdir && Create a new directory
CHDIR mytstdir && Change to the new directory
= GETDIR( ) && Display the Select Directory dialog box
SET DEFAULT TO HOME( ) && Restore Visual FoxPro directory
RMDIR mytstdir && Remove the new directory
= GETDIR( ) && Display the Select Directory dialog box

READ EVENTS
Memulai event
READ EVENTS

RECALL
Mengembalikan tanda mark (Unmarks) rekord yang telah ditandai penghapusan
RECALL [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
[IN nWorkArea | cTableAlias]
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens Customer table

DELETE FROM customer WHERE country = 'USA' && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL && Unmark all records marked for deletion

REINDEX
Membangun kembali file indeks yang dibuka
REINDEX [COMPACT]
Contoh:
cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (HOME(2) + 'Data\')
OPEN DATA testdata && Opens the test databsase
USE Customer && Not opened exclusively
USE Employee IN 0 EXCLUSIVE && Opened exclusively in another work
area

IF ISEXCLUSIVE( )
REINDEX && Can only be done if table opened exclusively
ELSE
WAIT WINDOW 'The table has to be exclusively opened'
ENDIF

SET EXCLUSIVE &cExclusive

119
REPLACE
Update rekord
REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
[, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
[FOR lExpression1] [WHILE lExpression2] [IN nWorkArea |
cTableAlias]
[NOOPTIMIZE]

REPLACE FROM ARRAY


Update data dalam field dengan nilai dari variabel array
REPLACE FROM ARRAY ArrayName [FIELDS FieldList] [Scope]
[FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]

REPORT
Menampilkan atau mencetak laporan sesuai file laporan yang dibuat melalui MODIFY
REPORT atau CREATE REPORT.
REPORT FORM FileName1 | ? [ENVIRONMENT] [Scope] [FOR lExpression1]
[WHILE lExpression2] [HEADING cHeadingText] [NOCONSOLE]
[NOOPTIMIZE] [PLAIN] [RANGE nStartPage [, nEndPage]]
[PREVIEW [[IN] WINDOW WindowName | IN SCREEN] [NOWAIT]]
[TO PRINTER [PROMPT] | TO FILE FileName2 [ASCII]] [NAME
ObjectName]
[SUMMARY]

RETURN
Mengembalikan kontrol program dari pemanggilan program
RETURN [eExpression | TO MASTER | TO ProcedureName]

RUN | !
Menjalankan program atau perintah eksternal
RUN [/N] MS-DOSCommand | ProgramName

! [/N] MS-DOSCommand | ProgramName

SCAN ... ENDSCAN


Memindahkan pointer rekord sambil menjalankan blok perintah
SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
[Commands] [LOOP] [EXIT]
ENDSCAN
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

120
CLEAR

SCAN FOR UPPER(country) = 'SWEDEN'


? contact, company, city
ENDSCAN

SCATTER
Mengcopy data dari rekord aktif menjadi kumpulan variabel atau array
SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton] [MEMO]
TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK
| NAME ObjectName [BLANK]
Contoh 1
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANK


m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE
Contoh 2
CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK


oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

SEEK
Mencari rekord pada tabel yang sudah di indeks
SEEK eExpression [ORDER nIndexNumber | IDXIndexFileName
| [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]
[IN nWorkArea | cTableAlias]

SELECT - SQL
Membuka tabel dari satu atau lebih file tabel
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item
[[AS] Column_Name] [, [Alias.] Select_Item [[AS] Column_Name] ...]
FROM [FORCE][DatabaseName!]Table [[AS] Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
DatabaseName!] Table [[AS] Local_Alias] [ON JoinCondition ]
[[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER

121
[PROMPT] | TO SCREEN]] [PREFERENCE PreferenceName]
[NOCONSOLE] [PLAIN] [NOWAIT]
[WHERE JoinCondition [AND JoinCondition ...]
[AND | OR FilterCondition [AND | OR FilterCondition ...]]]
[GROUP BY GroupColumn [, GroupColumn ...]]
[HAVING FilterCondition] [UNION [ALL] SELECTCommand]
[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]

SELECT
Mengaktifkan area kerja yang ditentukan
SELECT nWorkArea | cTableAlias
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
SELECT 1 && Work area 1
USE customer && Opens Customer table

SELECT 2 && Work area 2


USE orders && Opens Orders table

SELECT customer && Work area 1


BROWSE

SELECT B && Work area 2


BROWSE

SKIP
Memindahkan pointer rekord ke awal atau ke akhir dalam suatu tabel
SKIP [nRecords] [IN nWorkArea | cTableAlias]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens Customer table
CLEAR

SKIP 4 IN 'customer'
? RECNO('customer') && Displays 5
GO BOTTOM
SKIP -5
? RECNO( )

SORT
Mengurut rekord dalam suatu tabel aktif dan hasilnya disimpan dalam suatu tabel baru
SORT TO TableNameON FieldName1 [/A | /D] [/C]
[, FieldName2 [/A | /D] [/C] ...] [ASCENDING | DESCENDING]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton] [NOOPTIMIZE]

122
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Opens Customer table
CLEAR
LIST FIELDS company, cust_id NEXT 3
SORT TO temp ON cust_id
USE temp
LIST FIELDS company, cust_id NEXT 3
WAIT WINDOW 'Now sorted on CUST_ID' NOWAIT

STORE
Menyimpan data menjadi kedalam suatu variabel, array atau elemen array
STORE eExpression TO VarNameList | ArrayNameList-or-
VarName | ArrayName = eExpression
Contoh:
STORE DATE( ) TO gdDate
STORE 50 TO gnNumeric
STORE 'Hello' TO gcCharacter
STORE .T. TO glLogical
STORE $19.99 TO gyCurrency

DIMENSION gaMyArray(2,2)
SET COMPATIBLE OFF
STORE 2 TO gaMyArray

CLEAR
DISPLAY MEMORY LIKE g*

SUM
Menjumlahkan field numerik dari tabel aktif sesuai dengan kondisi yang ditentukan
SUM [eExpressionList] [Scope] [FOR lExpression1] [WHILE
lExpression2]
[TO MemVarNameList | TO ARRAY ArrayName] [NOOPTIMIZE]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Opens Products table

SUM in_stock, on_order, in_stock+on_order ;


TO gnInStock, gnOnOrder, gnUnits

CLEAR
?
? 'Total in stock : ', gnInStock && Displays 3119.00
? 'Total on order: ', gnOnOrder && Displays 780.00
? 'Total # units : ', gnUnits && Displays 3899.00

TEXT ... ENDTEXT


Menampilan baris teks dan menghasilkan ekspresi dan fungsi dan isi dari variabel

123
TEXT [TO VarName [ADDITIVE] [TEXTMERGE] [NOSHOW]]
TextLines
ENDTEXT
Contoh:
CLEAR
CLOSE DATABASES
SET TALK OFF
SET TEXTMERGE ON && Enable embedding of expressions and functions
STORE FCREATE('names.txt') TO _TEXT && Create low-level file
IF _TEXT = -1 && Can't create low-level file then exit program
WAIT WINDOW 'Cannot create an output file; press a key to exit'
CANCEL
ENDIF

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table

TEXT
CONTACT NAMES
<<DATE( )>> <<TIME( )>>
ENDTEXT
WAIT WINDOW 'Press a key to generate the first ten names'
SCAN NEXT 10
TEXT
<<contact>>
ENDTEXT
ENDSCAN
CLOSE ALL && Close the text file and the table
MODIFY FILE names.txt
ERASE names.txt

TOTAL
Menghitung jumlah-jumlah untuk field-field numerik dari file tabel aktif
TOTAL TO TableName ON FieldName [FIELDS FieldNameList] [Scope]
[FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]

UNLOCK
Membuka rekord atau file tabel yang terkunci
UNLOCK [RECORD nRecordNumber] [IN nWorkArea | cTableAlias]
[ALL]
Contoh:
CLOSE DATABASES
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList && Lock records 1 through 4
gcOldExc = SET('EXCLUSIVE') && Save the EXCLUSIVE setting
SET EXCLUSIVE OFF && Allow sharing of tables

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
SELECT 0
USE employee && Opens Employee table

124
? LOCK('1,2,3,4', 'customer') && Lock the first 4 records in
customer
? RLOCK(gcRecList, 'employee') && Lock the first 4 records in
employee

UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc && Restore original EXCLUSIVE setting

USE
Membuka file tabel dan indeks file atau SQL view.
USE [[DatabaseName!]Table | SQLViewName | ?]
[IN nWorkArea | cTableAlias] [ONLINE] [ADMIN] [AGAIN]
[NOREQUERY [nDataSessionNumber]] [NODATA] [INDEX IndexFileList
| ?
[ORDER [nIndexNumber | IDXFileName | [TAG] TagName [OF
CDXFileName]
[ASCENDING | DESCENDING]]]] [ALIAS cTableAlias] [EXCLUSIVE]
[SHARED] [NOUPDATE] [CONNSTRING cConnectString]
Contoh:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
ACTIVATE WINDOW View

USE customer IN 0 && Opens Customer table


USE employee IN 0 && Opens Employee table
USE products IN 0 && Opens Products table

WAIT
Menampilka pesan
WAIT [cMessageText] [TO VarName] [WINDOW [AT nRow, nColumn]] [NOWAIT]
[CLEAR | NOCLEAR] [TIMEOUT nSeconds]

WITH ... ENDWITH


Menentukan property obyek
WITH ObjectName
[.cStatements]
ENDWITH
Contoh:
moemployee = CREATEOBJECT('employee')

WITH moemployee
.First_Name = 'John'
.Last_Name = 'Smith'
.Address = '16 Maple Lane'
.HireDate = {^1998-02-16}
ENDWITH

CLEAR

125
? moemployee.First_Name + ' '
?? moemployee.Last_Name
? moemployee.Address
? moemployee.HireDate

DEFINE CLASS employee AS CUSTOM


First_Name = SPACE(20)
Last_Name = SPACE(20)
Address = SPACE(30)
HireDate = { - - }
ENDDEFINE

ZAP
Menghapus semua rekord dari tabel
ZAP [IN nWorkArea | cTableAlias]

126

Anda mungkin juga menyukai