0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan126 halaman

Belajar Visual Foxpro

Dokumen ini memberikan panduan pengembang tentang konsep dasar pemrograman berorientasi objek, elemen-elemen program seperti variabel, tabel, array, operator, fungsi, dan command, serta pengendalian alur program menggunakan pencabangan dan pengulangan kondisional dalam bahasa pemrograman Visual FoxPro.

Diunggah oleh

Krisna Melvana
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan126 halaman

Belajar Visual Foxpro

Dokumen ini memberikan panduan pengembang tentang konsep dasar pemrograman berorientasi objek, elemen-elemen program seperti variabel, tabel, array, operator, fungsi, dan command, serta pengendalian alur program menggunakan pencabangan dan pengulangan kondisional dalam bahasa pemrograman Visual FoxPro.

Diunggah oleh

Krisna Melvana
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 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

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 fungsifungsi 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 operatoroperator 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:

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

Semua Jenis Data

? n = 7

.T. jika nilai variabel n =


7, sebaliknya .F.

Numeric, Character,
Date, DateTime

? "Fox" + "Pro"

"FoxPro"

! atau NOT

Logical

? !.T.

.F.

*, /

Numeric

? 5 * 5
? 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
? cFirst + cSecond

Hasilnya adalah 168


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

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))
? VAL(cFirst) + nSecond

Hasilnya: 12345
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
USE

Penjelasan
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
SCAN

Keterangan
SCAN dan ENDSCAN adalah mengeksekusi setiap
rekord yang ada dalam tabel, dan kemudian
memindahkan pointer ke rekord berikutnya

IF growsales = 0.03
Setiap rekord, jika kenaikan penjualan = 3%, maka
REPLACE ;
Insentif WITH 30000 nilai 30000 akan direkam dalam field insentif

Tanda semicolon (;) setelah REPLACE berarti bahwa


command dilanjutkan pada beris berikutnya.
ENDIF
IF growsales = 0.06
REPLACE Insentif ;
WITH 40000
ENDIF

Akhir dari kondisional pernyataan IF


Setiap rekord, jika kenaikan penjualan = 6%, maka
nilai 30000+10000 akan direkam dalam field insentif
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

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.

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.

Gambar 1.2. Screen Visual FoxPro 6.0

Bagian-bagian yang ada pada Screen Visual FoxPro 6.0 dapat diuraikan sebagai berikut:
Caption
bagian kiri atas tampilan utama.
memberi instruksi:

Bagian yang
terletak di
Caption dapat diubah dengan

_Screen.Caption=D3 Akuntansi Fe Unud

Bagian yang terletak di bagian kanan atas


tampilan utama, berisi control Minimize,

Control Box
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
Perintah

Bagian yang berfungsi


untuk menulis instruksi

Bagian yang terletak dibagian bawah

Status Bar
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
DEFINE
DEFINE
DEFINE

BAR
BAR
BAR
BAR

1
2
3
4

OF
OF
OF
OF

MENU1
MENU1
MENU1
MENU1

PROMPT
PROMPT
PROMPT
PROMPT

"\<1. Data Mahasiswa"


"\<2. Laporan"
"\-"
"\<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.
Form

Mobil

Property:
Property: Tinggi,Lebar, Judul

Nama, Tinggi, Berat

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

Text Box

Edit Box

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
data.
Berisi variabel yang bertipe memo, atau untuk isian karakter yang
panjang.

27

Command
Button

Command
Group

Object perintah untuk melakukan proses atau perintah-perintah


tertentu.

Object perintah berkelompok.

Sekelompok alternatif pilihan.


Option Group

Check Box

Combo Box

Untuk menyatakan keadaan biner. Misalnya benar atau salah, ya


atau tidak.
Kombinasi dari sebuah daftar dan textbox. Anda dapat memilih
data dari dafar atau mengisikan data yang tidak ada dalam daftar.

Untuk menampilkan daftar pilihan.


List Box

Spinner

Untuk mimilih nilai numerik. Object ini dilengkapi dengan anak


panah atas untuk menambah nilai dan anak panah bawah untuk
mengurangi nilai
Object untuk menampilkan variabel baik array ataupun dari sebuah
tabel.

Grid

Image

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


dan jenis file gambar lainnya.

Object untuk mengatur waktu suatu event


Timmer
Adalah form yang dapat dibagi-bagi menjadi beberapa halaman.
Page Frame

ActiveX
Control

Object untuk menciptakan link ke aplikasi lain yang mendukung


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

Shape control adalah kontrol grafis untuk menampilkan suatu kota,


lingkaran atau ellip.

Container

Object Container dapat berisi object lain dan biasanya dibuat


untuk suatu even yang berhubungan dengan container itu sendiri.

Separator

Kontrol dalam suatu toolbar biasanya ditempatkan berdekatan


diantaranya, object ini merupakan pemisah diantara object-object
yang ada dalam toolbar. Atau dalam suatu kelompok kontrol.

HyperLink

Builder Lock

Suatu object HyperLink merupakan kemampuan navigasi Aplikasi


Visual FoxPro dan Active Documents dalam suatu kontainer seperti
Microsoft Internet Explorer. Dengan fasilitas object ini, sebuah
aplikasi dapat dihubungkan atau berpindal ke URL (Uniform
Resource Locator)
Kontrol ini berfungsi untuk menampilkan builder wizard secara
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

(FieldType)

(nField Width)

(nPrecision)

Character

Date/Tanggal

DateTime

31

Keterangan

Numeric

Floating Numeric

Integer

Double

Currency

Logical

Memo

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.
Urut

NIM

TANDA TANGAN

NAMA
1

10

11

12

13

14

Berdasarkan tabel 4.2, maka dapat disusun struktur tabel dalam program Visual FoxPro
sebagai berikut:
Field
1
2
3
4
5
6
7

Fieldname
Nim
Nama
Paraf01
Paraf02
Paraf03
Paraf04
Paraf05

Type
Character
Character
Character
Character
Character
Character
Character
32

Width
12
40
1
1
1
1
1

8
9
10
11
12
13
14
15
16

Paraf06
Paraf07
Paraf08
Paraf09
Paraf10
Paraf11
Paraf12
Paraf13
Paraf14

Character
Character
Character
Character
Character
Character
Character
Character
Character

1
1
1
1
1
1
1
1
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
1

Elemen Program
IF !FILE('TBLMHS.DBF')

CREATE TABLE TBLMHS ( NIM C(12), NAMA C(40), ;

PARAF01 C(1), PARAF02 C(1),PARAF03 C(1),;

PARAF04 C(1),PARAF05 C(1),PARAF06 C(1),;

PARAF07 C(1),PARAF08 C(1),PARAF09 C(1),;

PARAF10 C(1),PARAF11 C(1),PARAF12 C(1),;

PARAF13 C(1),PARAF14 C(1) )

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

CLOSE TABLE ALL

IF FILE('TBLMHS.DBF')

USE TBLMHS

ENDIF

BROWSE

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)
? ABS(10-30)
? ABS(30-10)
STORE 40 TO gnNumber1
STORE 2 TO gnNumber2
? ABS(gnNumber2-gnNumber1)

&& Displays 45
&& Displays 20
&& Displays 20

&& 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
? ADDBS(D:\PROD3\) && Display

D:\PROD3\
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
DO choice
DEFINE POPUP
DEFINE BAR 1
DEFINE BAR 2
DEFINE BAR 3
DEFINE BAR 4
DEFINE BAR 5
DEFINE BAR 6
DEFINE BAR 7

POPUP popConv;
IN bar_exam WITH BAR( ), POPUP( )
popCard MARGIN RELATIVE COLOR SCHEME 4
OF popCard PROMPT '\<View Charges' KEY ALT+V, ''
OF popCard PROMPT 'View \<Payments' KEY ALT+P, ''
OF popCard PROMPT 'Vie\<w Users' KEY ALT+W, ''
OF popCard PROMPT '\-'
OF popCard PROMPT '\<Charges ' KEY ALT+C
OF popCard PROMPT '\-'
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
2000-10-24T21:11:00

&& datetime (24 -hour)


&& 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
? DMY(DATE(
SET CENTURY
? DMY(DATE(

OFF
))
ON
))

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
1
2
3
4
5
6

Jenis Drive
No type
Floppy disk
Hard disk
Removable drive or network drive
CD-ROM
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)
? EXP(1)

&& Displays 1.00


&& 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')
? FCOUNT('EMPLOYEE')

&& Displays 13, # of fields in Customer


&& 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


STORE 48 TO gnPeriods
CLEAR

&& 7.5% annual interest rate

&& Four years (48 months)

? 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',
@ 4,12 SAY '2 ' + PRMBAR('popDemo',
@ 5,12 SAY '3 ' + PRMBAR('popDemo',
@ 6,12 SAY '4 ' + PRMBAR('popDemo',
RETURN

GETBAR('popDemo',1))
GETBAR('popDemo',2))
GETBAR('popDemo',3))
GETBAR('popDemo',4))

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:
? 'Visual FoxPro installation directory:
? 'Visual FoxPro samples directory:

58

', HOME( )
', HOME(1)
', HOME(2)

?
?
?
?
?

'Visual Studio common directory:


'Visual FoxPro graphics directory:
'MSDN samples directory:
'Visual Studio tools directory:
'Visual FoxPro user app data directory:

',
',
',
',
',

HOME(3)
HOME(4)
HOME(5)
HOME(6)
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
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
1
2
3
4
5
6
7
8
9
0
a
b
c
d
e
f
g
h
I
j
k
l
m
n
o
p
q
r
s
t

Ybs
28
1
2
3
4
5
6
7
8
9
133
134
49
50
51
52
53
54
55
56
57
48
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

SHIFT
84
85
86
87
88
89
90
91
92
93
135
136
33
64
35
36
37
94
38
42
40
41
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

60

CTRL
94
95
96
97
98
99
100
101
102
103
137
138

1
2
3
4
5
6
7
127
9
10
11
12
13
14
15
16
17
18
19
20

ALT
104
105
106
107
108
109
110
111
112
113
139
140
120
121
122
123
124
125
126
127
128
19
30
48
46
32
18
33
34
35
23
36
37
38
50
49
24
25
16
19
31
20

u
v
w
x
y
z
INS
HOME
DEL
END
PAGE UP
PAGE DOWN
UP ARROW
DOWN ARROW
RIGHT ARROW
LEFT ARROW
ESC
ENTER
BACKSPACE
TAB
SPACEBAR

117
118
119
120
121
122
22
1
7
6
18
3
5
24
4
19
27
13
127
9
32

85
86
87
88
89
90
22
55
7
49
57
51
56
50
54
52
/27
13
127
15
32

21
22
23
24
25
26
146
29
147
23
31
30
141
145
2
26
*/27
10
127
148/*
32/

22
47
17
45
21
44
162
151
163
159
153
161
152
160
157
155
*/1
/166
14
*
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')
? ISLOWER('Redmond')

&& Displays .T.


&& 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')
? ISUPPER('belajar FoxPro')

&& Displays .T.


&& 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
0
1
2
3
4
5
Value
16
32
48
64

Dialog box buttons


OK button only
OK and Cancel buttons
Abort, Retry, and Ignore buttons
Yes, No, and Cancel buttons
Yes and No buttons
Retry and Cancel buttons
Icon
Stop sign
Question mark
Exclamation point
Information (i) icon

Value
0
256

Default button
First button
Second button
Nilai yang dikembalikan:
Return value
Button
1
OK

69

2
3
4
5
6

Cancel
Abort
Retry
Ignore
Yes

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
CLEAR
? PADL(gcString,
? PADR(gcString,
? PADC(gcString,

gcString
40, '=')
40, '=')
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
DEFINE
DEFINE
DEFINE

MENU mnuExample BAR AT LINE 1


PAD titleOne OF mnuExample PROMPT 'This will be returned'
PAD titleTwo OF mnuExample PROMPT '\<As will this'
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)
? PROPER(gcExpr2)

&& Hasilnya: Fakultas Ekonomi Unud


&& 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,
ROUND(1234.1962,
ROUND(1234.1962,
ROUND(1234.1962,
ROUND(1234.1962,
ROUND(1234.1962,

3) && Hasil: 1234.1960


2) && Hasil: 1234.2000
0) && Hasil: 1234.0000
-1) && Hasil: 1230.0000
-2) && Hasil: 1200.0000
-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
DEFINE
DEFINE
DEFINE
DEFINE

POPUP
BAR 1
BAR 2
BAR 3
BAR 4

MENU1 MARGIN RELATIVE


OF MENU1 PROMPT "\<1.
OF MENU1 PROMPT "\<2.
OF MENU1 PROMPT "\-"
OF MENU1 PROMPT "\<3.

SHADOW COLOR SCHEME 4


Data Mahasiswa"
Laporan"
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


? 'The maximum value is: ', gnMaximum

&& Display minimum value


&& 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
ENDIF
IF _MAC
BROWSE FIELDS contact FONT 'Geneva', 14
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

STYLE 'NU'

STYLE 'NU'

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]
VarName]
[NOOPTIMIZE]

[TO

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"
CLEAR

98

&& Mark for deletion

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
STORE
STORE
STORE

'Goodbye' TO sample1
'Hello' TO sample2
.T. TO texit
.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
DO CASE

&& The month today

&& 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)
USE customer && Opens
IF _WINDOWS
EDIT FIELDS contact
ENDIF
IF _MAC
EDIT FIELDS contact
ENDIF

+ 'data\testdata')
customer table
FONT 'System', 15

STYLE 'NU'

FONT 'Geneva', 14

STYLE 'NU'

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 '
ENDIF
USE

&& Display a message

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])
[, nColumns2])] ...
[AS type [OF ClassLib]]

[, ArrayName2(nRows2

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
USE orders

&& Work area 2


&& Opens Orders table

SELECT customer
BROWSE
SELECT B
BROWSE

&& Work area 1

&& Work area 2

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-orVarName | ArrayName = eExpression

Contoh:
STORE
STORE
STORE
STORE
STORE

DATE( ) TO gdDate
50 TO gnNumeric
'Hello' TO gcCharacter
.T. TO glLogical
$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
[ALL]

[RECORD nRecordNumber]

[IN nWorkArea | cTableAlias]

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
USE employee IN 0
USE products IN 0

&& Opens Customer table


&& Opens Employee table
&& 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