0% menganggap dokumen ini bermanfaat (0 suara)
92 tayangan60 halaman

Praktek Pembuatan Form di Visual FoxPro

Dokumen tersebut membahas tentang praktek Visual FoxPro yang mencakup tahapan pembuatan form, perangkat pembuatan form, memasukkan label, text box dan tombol command pada form, mengatur properti, menyimpan, menguji dan menutup form.

Diunggah oleh

Anak Rumah Sebelah
Hak Cipta
© Attribution Non-Commercial (BY-NC)
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)
92 tayangan60 halaman

Praktek Pembuatan Form di Visual FoxPro

Dokumen tersebut membahas tentang praktek Visual FoxPro yang mencakup tahapan pembuatan form, perangkat pembuatan form, memasukkan label, text box dan tombol command pada form, mengatur properti, menyimpan, menguji dan menutup form.

Diunggah oleh

Anak Rumah Sebelah
Hak Cipta
© Attribution Non-Commercial (BY-NC)
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

I. Praktek Visual FoxPro I 

Materi: 
1.  Tahapan pembuatan form 
2.  Perangkat untuk pembuatan form 
3.  Membuat label, text box, dan tombol command pada form 
4.  Mengatur properti 
5.  Menyimpan, Menguji dan Menutup form 

1.1  Membuat File Project 
a.  Buatlah sub directory dengan nama depan masing­masing 
b.  Buka program Visual FoxPro 
c.  Membuat File Project 
1). Klik menu File 
2). Klik New 
3). Pilih option Project 
4). Pilih dan klik New File (lihat gambar 1.1.1) 
5). Pilih subdirectory nama masing­masing untuk menyimpan file project 
6). Ketik nama file project (PRAKVFP) 
7). Klik tombol save (lihat gambar 1.1.2) 
8). Setelah itu akan tampil Project Manager (seperti pada gambar 1.1.3.) 

Gambar 1.1.1. Kotak dialog pembuatan file project

Gambar 1.1.2. Kotak dialog penyimpanan file Project 

Gambar 1.1.3. Kotak dialog penyimpanan file Project

1.2  Membuat File Form 
Kasus 1.2: 
Buatkan  form  untuk  mengetahui  hasil  seleksi  penerimaan  calon  pegawai,  dengan 
ketentuan sebagai berikut : 
­  Jika nilai akhir minimal 70, maka diterima; 
­  Tapi jika sebaliknya, maka ditolak/gagal. 
1.  Membuat Form Kosong 
a.  Klik page Documents pada Project Manager 
b.  Pilih dan Klik object Form 
c.  Klik tombol New 
d.  Pilih dan klik tombol New Form pada kotak dialog New Form (gb. 1.2.1) 

Gambar 1.2.1  Kotak Dialog New Form 

e.  Setelah itu dilayar akan tampil Form kosong seperti pada gambar 1.2.2. 

Gambar 1.2.2  Form Kosong
4  117 

2.  Memberikan Judul Form dan Gambar Latar Form  20.  Pencarian Record dengan SEEK / FIND 


a.  Munculkan Jendela Properties dengan meng­klik kanan pada form kosong 
b.  Pilih dan klik Properties  Pencarian  suatu  record  tertentu  dapat  dilakukan  dengan  cepat  seandainya  file  indeks 
c.  Pilih object Form pada jendela properties  digunakan.  Namun,  tentu  saja  data  untuk  pencarian  record  harus  sama  dengan  field 
d.  Pada baris caption, ketik PERHITUNGAN HASIL SELEKSI  kunci. Bentuk pencarian dengan SEEK adalah sbb.: 
e.  Pada baris Picture, pilih gambar latar yang dikehendaki. 
USE [Link] 
3.  Membuat Control Question dan Field Entry  SET ORDER TO TAG KODEMK 
a.  Munculkan toolbar Form Controler Toolbar dari menu View  SEEK “MK102­202” 
b.  Buatkan  Questin  Nama,  Nilai  Akhir,  dan  Keterangan  dengan  menggunakan  ?FOUND() 
Label dari Form Controler Toolbar 
c.  Buatkan  Field  Entry  untuk  meng­input  Nama,  Nilai  Akhir  dan  Keterangan  ?FOUND()  adalah  perintah  untuk  mendeteksi/memeriksa  apakah  data  yang  dicari 
dengan menggunakan Text Box.  ditemukan atau tidak. Bila hasilnya .T. berarti data ditemukan, sedangkan jika hasilnya 
d.  Hasilnya seperti pada gambar 1.2.3.  .F. berarti data tersebut tidak ditemukan. 

21.  Pencarian secara Eksak 

Bila kita bermaksud mencari suatu data bertipe karakter pada field yang telah diindeks, 
kita  perlu  memperhatikan  efek  dari  keadaan  SET  EXACT.  Bila  SET  EXACT  dalam 
keadaan ON berarti mecari data yang sama persis dengan yang dituliskan dalam SEEK, 
sedangkan bila SET EXACT dalam keadaan OFF, ini bisa berarti mencari yang hurup 
awalnya seperti yang dituliskan dalam SEEK.

Gambar 1.2.3  Form Perhitungan Hasil Seleksi I 

4.  Mengisi Entry Field dengan Formula 
a.  Double klik Control Text2 
b.  Cari dan pilih Procedure InteractiveChange 
c.  Ketik Procedure berikut : 

if [Link]>=60 
[Link]="Lulus" 
else 
[Link]="Gagal" 
endif 
return 
116  5 

Amati contoh perintah berikut :  5.  Simpan  Form  dengan  nama  file  HasilSeleksi1  (sebaiknya  nama  file  tidak  pakai 
sepasi) 
MessageBox(“Pesan baris pertama”+CHR(13)+CHR(10)+”Pesan baris kedua”, ; 
“Judul”, 1+32+256)  6.  Uji Form dengan meng­klik icon Run  pada toolbar Standard 

Hasilnya sebagai berikut (lihat gambar 3.5) 
1.3  Latihan Membuat Form 
Gbr. 3.5. Kotak Dialog dengan 
dua baris pesan. 
Kasus 1.3. 
Buatkan  form  untuk  mencari  nilai  akhir,  angka  mutu  dan  hurup  mutu  dengan 
ketentuan sbb.: 

NA  = (UTS + UAS * 2 + TGS)/4 
NA  AM  HM 
i.  Kelemahan MESSAGEBOX  86  ­ 100  4  A 
71  ­  85  3  B 
MessageBox  tidak  memungkinkan  kita  mengganti  keterangan  yang  terdapat  pada  56  ­  70  2  C 
tombol kotak dialog. Misalnya, kita tidak dapat mengubah kata Yes menjadi Ya.  41  ­  55  1  D 
0  ­  40  0  E 
18.  Membuat Indeks  1.  Buatkan Form seperti pada gambar 1.3.1. 
Indeks  pada  tabel  berguna  untuk  mempercepat  pencarian  suatu  data.  Kecepatan 
pencarian data berdasarkan indeks akan terasa sekali jika jumlah data sangat banyak. 
Selain untuk keperluan mencari suatu data, indeks membuat dapat disajikan secara 
logika (tidak secara fisik), baik secara urut naik (ascending, dari A ke Z) ataupun urut 
turun (descending, dari Z ke A). 
Indeks  bisa  dibuat  dengan  menggunakan  perintah  MODY  atau  MODIFY 
STRUCTURE pada jendela command. 

19.  Pernyataan SET ORDER 

Apabila  kita  membuka  suatu  tabel,  indeks  tidak  dengan  sendirinya  digunakan 
(walaupun indeks secara otomatis ikut dibuka) 

Bentuk penulisan SET ORDER adalah sbb.: 
SET ORDER TO TAG<nama_indeks> 
Dalam hal ini, <nama_indeks> adalah field yang dijadikan sebagai indeks.  Gambar 1.3.1  Form Perhitungan Hasil Seleksi II
6  115 

2.  Buatkan Tombol Tekan Checker          dengan fasilitas Command Button dari Form  Jawaban = MessageBox(“Pesan”, “Judul”, 1+32+256) 


Controler Toolbar, kemudian berinama Proses. 
3.  Isikan Procedure Click dari Control Proses berikut :  Setelah  pemakai  meng­klik  salah  satu  tombol,  kode  dari  tombol  bersangkutan  akan 
diletakan ke variabel jawaban. Selanjutnya kita tinggal memeriksa isi variabel tersebut. 
local vna 
vna=([Link]+[Link]*2+[Link])/4  Tabel  3.6. mencantumkan nilai yang mewakili tombol yang dipilih oleh pemakai. 
if vna>=86 
vam=4  Tabel 3.6. Kode tombol pada kotak dialog 
vhm="A" 
else  Nilai  Tombol yang dipilih 
if vna>=71  1  OK 
vam=3  2  Cancel 
vhm="B"  3  Abort 
else  4  Retry 
if vna>=56  5  Ignore 
vam=2  6  Yes 
vhm="C"  7  No 
else 
if vna>=41 
Untuk menyeleksi  tombol  yang  dipilih,  kita  bisa  menggunakan  pernyataan  IF ataupun 
vam=1 
DO CASE. 
vhm="D" 
else 
Contoh dengan IF : 
vam=0 
vhm="D" 
Jawaban = MessageBox(“Pesan”, “Judul”, 1+32+256) 
endif 
IF Jawaban = 1 && Berarti tombol tombol Okyang dipilih 
endif 
* Memproses pesan 
endif 
ELSE 
endif 
* Membatalkan perintah 
[Link]=vna 
ENDIF 
[Link]=vam 
[Link]=vhm 
h.  Informasi lebih dari satu baris 
retu 
Untuk  mengatur  informasi  yang  ditampilkan  pada  kotak  dialog  yang  terdiri  lebih  dari 
4.  Simpan Form dengan nama File HasilSeleksi2 
satu  baris.  Caranya,  kita  perlu  menyisipkan  kode  CHR(13)  dan  CHR(10).  CHR(13) 
5.  Uji Form. 
adalah  kode  carriage  return  dan  CHR(10)  adalah  kode  linefeed.  Kedua  kode  tersebut 
secara berurutan biasa dipakai untuk membuat baris baru.
114  7 

Tabel 3.5.  Nilai untuk menentukan ikon kotak dialog  1.4  Tugas 1 


Nilai Ikon  Gambar  Warna Ikon  1.  Kasus Tugas 1 : 
Buatkan  form  untuk  menghitung  gaji  pokok,  gaji  lembur  dan  jumlah  gaji  dengan 
16  Merah 
ketentuan sbb : 
­  Jumlah jam kerja pokok = 8 jam 
32  Hijau  ­  Jika bekerja lebih dari 8 jam, maka selebihnya dihitung lembur 
­  Tarip lembur = 150% * Gaji Per Jam 
48  Kuning  ­  Gaji Total = Gaji Pokok + Gaji Lembur 

64  Biru  2.  Buatkan Form seperti pada gambar 1.4.1. : 

f.  Menentukan Tombol Default 

Bila  kotak  dialog  terdiri  lebih  dari  sebuah  tombol­tekan,  maka  tombol  terkiri  akan 
dijadikan sebagai default. Seandainya kita menghendaki lain (bukan tombol terkiri yang 
dijadikan  sebagai  default),  kita  bisa  menambahkan  angka­angka  berikut  ke  argumen 
ketiga pada MessageBox.

·  256 untuk menjadikan tombol kedua sebagai default
·  512 untuk menjadikan tombol pertama sebagai default 

Berikut adalah contoh hasil dari perintah (lihat gambar 3.4) 

MessageBox(“Pesan”, ”Judul”, 1+32+256) 

Gbr [Link] Dialog dengan 
tombol kedua sebagai 
default  Gambar 1.4.1  Form Perhitungan Upah Harian

g.  Mendeteksi Tombol yang diklik oleh Pemakai 

Untuk  mengetahui  tombol  pada  kotak  dialog  yang  ditekan  oleh  pemakai,  nilai 
pengembalian  dari  MessageBox  perlu  diletakan  ke  variabel  terlebih  dahulu.  Sebagai 
contoh : 
8  113 

II. Praktek Visual FoxPro II  c.  MESSAGEBOX Tanpa Argumen Ketiga 

Bila  memanggil  MessageBox  tanpa  menyertakan  argumen  ketiga,  maka  yang 


Materi :  ditampilkan adalah kotak dialog yang hanya berisi tombol tekan OK. Contohnya : 
1.  Tahap pembuatan form 
2.  Penggunaan fasilitas Option Group & Check Box  MessageBox(“Pesan”, “Judul”) 
3.  Penggunaan Perintah IF 
4.  Penggunaan Perintah Do Case  Akan memberikan hasil sbb. (Gambar 3.2) 
5.  Menyimpan, Menguji dan Menutup form 

Tabel 3.2. Kotak Dialog tanpa argumen 
2.1  Membuka File Project  ketiga

Untuk  membuka  File  Project  PRAKVFP  yang  sudah  dibuat  pada  praktek 
sebelumnya, maka lakukan langkah sbb. : 
1.  Klik menu File 
2.  Klik Open 
3.  Cari Folder nama masing­masing di drive O:\AFOX 
4..  Pilih dan Double Klik file project PRAKVFP, seperti pada gambar 2.1.1  d.  MESSAGEBOX Tanpa Argumen Kedua dan Ketiga 

Apabila   rgument  kedua  dan  ketiga  MessageBox  tidak disertakan,  judul  kotak  dialog 
diperlakukan  seperti  jika  judul  tidak  diberikan.  Berikut  adalah  hasil  dari  perintah 
MessageBox(“Pesan”) (lihat gambar 3.3) 

Tabel 3.3. Kotak Dialog tanpa argumen 
kedua dan ketiga 

e.  Menentukan Ikon pada Kotak Dialog 

MessageBox  telah  menyediakan  empat  macam  ikon  yang  bisa  kita  tampilkan  pada 
kotak  dialog.  Kita  dapat  menyertakan  ikon  dengan  menambahkan  nilai­nilai  yang 
tercantum pada Tabel 3.5. 

Gambar 2.1.1   Kotak Dialog Open File 
112  9 

Tabel 3.4. Nilai yang menentukan tombol­tekan yang ditampilkan pada kotak dialog.  2.2  Membuat File Form Baru 


Tombol­tombol  1.  Membuat Form Kosong 
Tipe Kotak  Bentuk 
yang tersedia  a.  Klik page Documents pada Project Manager 
b.  Pilih dan Klik object Form 
c.  Klik tombol New 
d.  Pilih dan klik tombol New Form pada kotak dialog New Form (gb. 2.2.1) 
0  OK 

1  OK, Cancel 

2  Abort, Retry, Ignore  Gambar 2.2.1  Kotak Dialog New Form 

2.  Memberikan Judul Form dan Gambar Latar Form 
a.  Munculkan Jendela Properties dengan meng­klik kanan pada form kosong 
b.  Pilih dan klik Properties 
3  Yes, No, Cancel  c.  Pilih object Form pada jendela properties 
d.  Pada baris caption, ketik ENTRY GAJI KARYAWAN 
e.  Pada baris Picture, pilih gambar latar yang dikehendaki. 

3.  Membuat Control Question dan Field Entry 
a.  Munculkan toolbar Form Controler Toolbar dari menu View 
4  Yes, No  b.  Buatkan  Question  Nama  Karyawan,  Golongan,  Status,  Jumlah  Anak,  Gaji 
Pokok,  Tunjangan  Istri,  Tunjangan  Anak  dan  Gaji  Total  dengan 
menggunakan Label dari Form Controler Toolbar 
c.  Buatkan  Field  Entry  untuk  meng­input  Nama  Karyawan,  Golongan,  Jumlah 
Anak, Gaji Pokok, Tunjangan Istri, Tunjangan Anak dan Gaji Total dengan 
menggunakan Text Box. 
5  Retry, Cancel 
4.  Membuat Option Group 
a.  Cari dan Klik control Option Group pada Form Control Toolbar 
b.  Klik pada form sebelah kanan Status, kemudian berinama ST pada properties.
10  111 

c.  Ganti  Option1  dengan  Kawin,  dengan  cara  klik  kanan  option  group  kemudian 
pilih edit.  Hasilnya adalah sebagai berikut (Gambar 3.1) 
d.  Klik Option1, kemudian pada baris Caption di jendela properties ketik Kawin. 
e.  Klik Option2, kemudian ganti dengan Belum Kawin 
f.  Hasilnya lihat gambar  2.2.2. 

Gambar 3.1 Kotak Dialog 

Pada contoh ini, string “Terima Kasih” merupakan pesan yang ditampilkan pada kotak 
dialog, string karakter “Selesai” sebagai judul pada kotak dialog, dan 1+32 menyatakan 
jenis kotak dialog (termasuk ikon yang ditampilkan). Dalam hal ini angka 1 menyatakan 

bahwa kotak dialog menampilkan dua buah tombol tekan, yaitu tombol 

dan tombol  , sedangkan 32 menyatakan jenis ikon yang ditampilkan 

b.  Nilai untuk menentukan Jenis Kotak Dialog 

Nilai  dasar  yang  digunakan  untuk  menentukan  jenis  kotak  dialog  ada  enam  macam, 
sebagaimana tercantum pada tabel 3.4.

Gambar 2.2.2  Form Entry Gaji Karyawan 

5.  Mengisi Control Spinner Gol dengan Formula 
a.  Double klik Control Gol 
b.  Cari dan pilih Procedure InteractiveChange 
c.  Ketik Procedure berikut : 

gol=[Link] 
do case 
case gol=1 
gapok=200000 
case gol=2 
gapok=400000 
case gol=3 
110  11 

gapok=600000 
DO CASE  case gol=4 
CASE <kondisi_1>  gapok=800000 
<pernyataan_pernyataan_1>  otherwise 
CASE <kondisi_2>  gapok=0 
<pernyataan_pernyataan_2>  endcase 
OTHERWISE  st=[Link] 
<pernyataan_pernyataan_n>  if st=1 
ENDCASE  [Link]=.t. 
[Link]=.t. 
Dimana : [Link]=.t. 
·  Bila  <kondisi_1>  bernilai  .T.,  maka  <pernyataan_pernyataan_1>  saja  yang  akan  ti=0.5*gapok 
dijalankan. else 
·  Bilai  <kondisi_2>  bernilai .T., maka  <pernyataan_pernyataan_2>  saja  yang  akan  [Link]=.f. 
dijalankan. [Link]=.f. 
·  <pernyataan_pernyataan_n> hanya akan dijalankan sekiranya tidak ada <kondisi>  [Link]=.f. 
yang bernilai .T. ti=0 
·  Bagian OTHERWISE bisa tidak disertakan. Jika bagian ini tidak disertakan, dan tak  [Link]=0 
satupun <kondisi> yang bernilai .T., maka tak ada pernyataan yang dieksekusi.  endif 
ja=[Link] 
if ja>3 
17.  Mengenal Kotak Dialog  ta=0.2*gapok*3 
else 
Kotak  dialog  digunakan  untuk  memberitahukan  sesuatu  informasi  kepada  pemakai,  ta=0.2*gapok*ja 
misalnya untuk menyampaikan suatu pesan kesalahan.  Selain untuk kleperluan seperti  endif 
ini, kotak dialog juga bisa dipakai untuk melakukan suatu konfirmasi terhadap pemakai;  gatot=gapok+ti+ta 
misalnya  pemakai  perlu  menjawab  Yes  atau  No.  Sebuah  kotak  dialog  paling  tidak  [Link]=gapok 
mempunyai sebuah tombol tekan.  [Link]=ti 
[Link]=ta 
a.  Kaidah MESSAGEBOX  [Link]=gatot 
retu 
Kaidah perintah MessageBox adalah sebagai berikut : 
6.  Mengisi Control Option Group StatusK dengan Formula 
MessageBox(<pesan>, [<tipe­kotak­dialog>,[<judul>]]  a.  Double klik Control StatusK 
b.  Cari dan pilih Procedure InteractiveChange 
Argumen kedua dan ketiga bisa tidak disertakan.  c.  Isi  Procedure  InteractiveChange  object  ST  dicopy  dari  Procedure 
Interactivechange object Gol 
Contoh : 
7.  Mengisi Control Field Entry Text2 dengan Formula 
MessageBox("Terima Kasih",1+32, "Selesai")  a.  Double klik Control Text2
12  109 

b.  Cari dan pilih Procedure InteractiveChange 


c.  Isi  Procedure  InteractiveChange  object  Text2  dicopy  dari  Procedure  Tabel 3.3. Operator Logika 
Interactivechange object Gol 
Operator  Keterangan  Format 
8.  Simpan  Form  dengan  nama  file  HitungGaji  (sebaiknya  nama  file  tidak  pakai  .NOT. <ekspresi> 
sepasi)  Operator 
.NOT.  Hasil .T. jika <ekspresi> bernilai .F. 
“Tidak” 
Hasil .F. jika <ekspresi> bernilai .T. 
9.  Uji Form dengan meng­klik icon Run  pada toolbar Standard 
<ekspresi_1> .AND. <ekspresi_2> 
Operator 
.AND.  Hasil  berupa  .T.  hanya  jika  kedua  <ekspresi> 
“Dan” 
bernilai .T. 
2.3  Membuat Form PilihGambar  Operator  <ekspresi_1> .OR. <ekspresi_2> 
.OR. 
“Atau”  Hasil berupa .T. jika ada <ekspresi> yang bernilai .T. 
1.  Buatkan Form seperti pada gambar 2.3.1. berikut : 

15.  Fungsi IIF 

Fungsi bernama IIF() juga dapat bertindak seperti perintah IF. Format fungsi ini adalah : 

IIF(<kondisi>,<ekspresi_1>,<ekspresi_2>) 

Fungsi  IIF  memberikan  nilai  <ekspresi_1>  jika  <kondisi>  bernilai  .T.,  atau  nilai 
<ekspresi_2> jika <kondisi> bernilai .F. 

Sebagai contoh : 

IF TotalPembelian >= 100000 
Diskon = 1/10 * TotalPembelian 
ELSE
Diskon = 0 
ENDIF 

Gambar 2.3.1  Form PilihGambar  Dapat disederhanakan menjadi : 
2.  Buatkan Option Group, kemudian berinama PIL. Button Count­nya ganti 6 
3.  Ganti Option1 s/d Option6 dengan Gambar1 s/d Gambar6  Diskon = IIF(TotalPembelian >= 100000, 1/10 * TotalPembelian, 0) 
4.  Buatkan  Image  untuk  menampilkan  gambar,  sebanya  4  buah,  yang  diletakan 
disebelah  kanan,  kanan  atas,  atas  dan  kiri  atas  option  group  (seperti  pada  gambar 
2.3.1)  16.  Pernyataan DO CASE 
5.  Buatkan  CheckBox  Kiri  Atas  kemudian  berinama  kiri,  CheckBox  Tengah  Atas 
kemudian berinama tengah, dan CheckBox Kanan Atas kemudian berinama kanan)  Pernyataan  DO  CASE  merupakan  alternatif  dari  IF..  ELSEIF.  Format  pernyataan  ini 
adalah :
108  13 

Tabel 3.1 Operator relasi  sebanyak tiga buah yang diletakan disebelah Kiri Bawah, Tengah Bawah dan Kanan 


Bawah Option Group (seperti pada gambar 2.3.1) 
Operator  Keterangan  6.  Double Klik control OptionGroup Pil, kemudian pilih procedure InteractiveChange, 
<  Kurang dari  lalu ketik procedure berikut : 
>  Lebih besar dari 
=  Sama dengan  do case 
= =  Tepat sama dengan (bermanfaat untuk pembandingan string karakter)  case [Link]=1 
<> atau #  Tidak sama dengan  [Link]="[Link]" 
<= atau =<  Kurang dari atau sama dengan  case [Link]=2 
>= atau =>  Lebih besar dari atau sama dengan  [Link]="[Link]" 
case [Link]=3 
$  Pembandingan string 
[Link]="[Link]" 
case [Link]=4 
Beberapa contoh ungkapan yang melibatkan operator relasi dapat dilihat pada tabel 3.2. 
[Link]="[Link]" 
case [Link]=5 
[Link]="[Link]" 
Tebl 3.2. Contoh pembandingan dengan memakai operator relasi 
case [Link]=6 
otherwise 
Ekspresi  Hasil  Keterangan  [Link]="[Link]" 
Menurut tabel ASCII, ‘A’ terletak sebelum ‘B’, jadi  endcase 
‘A’ > ‘B’  .F. 
nilai ‘A’ lebih kecil daripada ‘B’ 
‘A’ < ‘a’  .T.  Menurut tabel ASCII, ‘A’ terletak sebelum ‘a’  7.  Double  Klik  control  CheckBox  Kiri, kemudian pilih  procedure  InteractiveChange, 
2 > 1  .T.  Nilai 2 memang lebih besar daripada 1  lalu ketik procedure berikut : 
“Yogya”=”YOGYA”  .F.  Hurup kecil berbeda dengan hurup kapital  if [Link]=1 
“ABCD” = “ABC”  .T.  Jika SET EXACT dalam keadaan OFF  [Link]=[Link] 
“ABCD” = “ABC”  .F.  Jika SET EXACT dalam keadaan ON  else 
“ABCD” = = “ABC”  .F.  Selalu  menghasilkan  .F.,  tidak  tergantung  pada  [Link]="" 
keadaan SET EXACT  endif 
“AB” $ “ABCD”  .T.  String “AB” ada pada “ABCD” 
“BC” $ “ABCD”  .T.  String “BC” ada pada “ABCD”  8.  Double  Klik  control  CheckBox  Tengah,  kemudian  pilih  procedure 
“ABCD” $ “AB”  .F.  String “ABCD” tidak ada pada string “AB”  InteractiveChange, lalu ketik procedure berikut : 
{21/12/2000}  >  .T.  Tanggal  21  Desember  2000  memang  lebih 
{12/11/2000}  belakangan daripada 12 Nopember 2000  if [Link]=1 
[Link]=[Link] 
else 
b.  Operator Logika  [Link]="" 
endif 
Operator  logika  digunakan  untuk  membandingkan  dua  buah  ekspresi  logika  dan 
menghasilkan  nilai  .T.  (benar)  atau  .F.  (salah).  Operator  logika  yang  disediakan  oleh  9.  Double  Klik  control  CheckBox  Kanan,  kemudian  pilih  procedure 
Visual FoxPro dapat dilihat pada tabel 3.3.  InteractiveChange, lalu ketik procedure berikut :
14  107 

Selain bentuk di atas, juga terdapat bentuk seperti berikut : 
if [Link]=1 
[Link]=[Link]  IF <kondisi> 
else  <pernyataan­pernyataan_1> 
[Link]=""  ELSE
endif  <pernyataan­pernyataan_2> 
ENDIF 
10. Simpan Form dengan nama File PilihGB 
11. Uji Form.  Pada bentuk ini,
·  <pernyataan­pernyataan_1> dijalankan jika <kondisi>  bernilai .T.
·  <pernyataan­pernyataan_2> dijalankan jika <kondisi> bernilai .F. 
2.4  Tugas 2 
1.  Buatkan Form seperti pada gambar 2.4.1  14.  Operator Relasi dan Opertaor Logika 

Operator relasi dan opertaor logika merupakan komponen penting yang dipakai sebagai 
kondisi  pada  pernyataan­pernyataan  pengambilan  keputusan  (IF)  dan  pada  beberapa 
pernyataan  yang  lain.    Operator­operator  ini,  sebagaimana  operator  yang  lain,  berupa 
simbol atau kata kunci yang melaksanakan suatu operasi terhadap data atau ekspresi. 

Ekspresi yang dilibatkan oleh operator­operator ini dapat berupa:

·  Nama Field
·  Variabel Memori
·  Fungsi, ataupun
·  Konstantan 

a.  Operasi Relasi 

Operasi relasi adalah operator yang digunakan untuk membandingkan dua buah ekspresi 
bertipe  data  sama  dan  menghasilkan  nilai  .T.  (benar)  atau  .F.  (salah).  Tipe  data  yang 
dapat dikenakan pada operator ini meliputi :
Gambar 2.4.1.  Form Menghitung Angka  ·  Karakter
·  Numerik
2.  Formula / ketentuan perhitungan adalah sbb. : 
a=0  ·  Ekspresi tanggal 
b=0 
Visual FoxPro menyediakan sejumlah operator relasi seperti pada tebel 3.1.
c=0 
106  15 

13.  Mengenal Pernyataan IF  Jika Check box 100 dipilih 


a=100 
Pernyataan IF merupakan perintah yang sering kali dilibatkan dalam penulisan kode. IF  Jika Check box 10 dipilih 
merupakan perintah yang berguna dalam mengambila suatu keputusan.  b=10 
Dalam  bentuk  pseudocode,  barang  kali  kita  akan  melakukan  suatu  tindakan  dengan  Jika Check box 2 dipilih 
kriteria sebagai berikut:  c=2 

“  Jika  pointer  tidak  menunjuk  ke  awal  file,  pindahkanlah  pointer record  ke  record  Jika option tambah dipilih, maka formulanya : 
sebelumnya. “  Hasil = a + b + c 
Jika option Kurang dipilih, maka formulanya : 
Pada  contoh  ini,  tindakan  memindahkan  pointer  record  ke  record  sebelumnya  hanya  Hasil = a ­ b ­ c 
dilakukan jika pointer record tidak berada pada awal file (BOF).  Jika option Kali dipilih, maka : 
Jika yang check box hanya 100 dan 10, maka formulanya 
Pseudokode  di  atas  dapat  dituangkan  ke  dalam  pernyataan  Visual  FoxPro  sebagai  Hasil = a * b 
berikut :  Jika yang check box hanya 10 dan 2, maka formulanya 
Hasil = b * c 
IF .NOT. BOF()  Jika yang check box hanya 100 dan 2, maka formulanya 
SKIP –1  Hasil = a * c 
ENDIF  Jika yang check box 100, 10 dan 2, maka formulanya 
Hasil = a * b * c 
Pada  pernyataan  di  atas,  .NOT.  merupakan  salah  satu  operator  logika  pada  Visual 
FoxPro.  Operator  .NOT.  berarti  “tidak”.  Ekspresi  .NOT.  BOF()  berarti  “jika  BOF()  3.  Selamat mencoba !
tidak bernilai .T. atau dengan kata lain “jika pointer record tidak sedang menunjuk BOF 
(awal file). 

Secara umum, bentuk pernyataan IF adalah sebagai berikut : 

IF <kondisi> 
<pernyataan­pernyataan> 
ENDIF 

Dalam  hal  ini,  <kondisi>  berupa  ekspresi  logika,  yang  bernilai  .T.  (benar)  atau  .F. 
(salah).  Apabila  <kondisi>  bernilai  .T.,  maka  <pernyataan­pernyataan>  akan 
dijalankan.  Sebaiknya,  jika  <kondisi>  bernilai  .F.,  <pernyataan­pernyataan>  tidak 
akan dijalankan. 
16  105 

III. Praktek Visual FoxPro III  11.  Meletakan pointer record ke record yang dicari 

Visual  FoxPro  juga  menyediakan  perintah  yang  berguna  untuk  mencari  suatu  record 
Materi :  tertentu.  Misalnya,  perintah  untuk  menempatkan  pointer  record  yang  bagian  Mata 
1.  Tahap pembuatan form  Kuliah­nya berisi COBOL . 
2.  Penggunaan fasilitas Olecontrol 
3.  Penggunaan Perintah DO WHILE  LOCATE FOR NAMA_MK=”COBOL” 
4.  Penggunaan Perintah FOR NEXT 
5.  Menyimpan, Menguji dan Menutup form  Dalam  hal  ini  LOCATE  adalah  perintah  un  tuk  mencari  suatu  record  dan  FOR 
NAMA_MK=”COBOL” adalah kriteria pencarian. 
3.1  Membuka File Project 
Untuk  membuka  File  Project  PRAKVFP  yang  sudah  dibuat  pada  praktek  Untuk  mencari  record  berikutnya  yang  cocok,  kita  cukup  memberikan  perintah 
sebelumnya, maka lakukan langkah sbb. :  CONTINUE. Apabila hasil dari perintah LOCATE atau CONTINUE berupa : 
1.  Klik menu File 
2.  Klik Open  End of Locate scope. 
3.  Cari Folder nama masing­masing do drive O:\ 
4..  Pilih dan Double Klik file project PRAKVFP, seperti pada gambar 3.1.1  Hal ini menandakan bahwa tidak ada lagi data yang cocok. 

Untuk  mengtahui  yang  dicari  dengan  LOCATE  ketemu  atau  tidak,  kita  bisa 
menggunakan fungsi FOUND(). Fungsi ini memberikan nilai balik berupa :
·  .T. jika data yang dicari ketemu
·  .F. jika data yang dicari tidak ketemu 

12.  Awal File dan Akhir File 

Secara logika, tabel yang berisi sejumlah record akan diawali dengan record maya yang 
disebut BOF (Begining Of File – Awal File)  dan diakhiri dengan record maya bernama 
EOF (End Of File – Akhir File). 

BOF  Record 1  Record 2  Record 3  Record 4  Record N  EOF 

Gambar 3.1.1   Kotak Dialog Open File 
F F 
Record maya  Record maya 
di awal tabel  di akhir tabel
3.2  Aplikasi DO WHILE 
1.  Membuat Form Kosong 
a.  Klik page Documents pada Project Manager 
104  17 

8.  Memindahkan pointer record  b.  Pilih dan Klik object Form 


c.  Klik tombol New 
Pointer record dapat diatur agar menunjuk ke suatu record tertentu dan tentu saja record  d.  Pilih dan klik tombol New Form pada kotak dialog New Form (gambar 3.2.1) 
tersebut akan menjadi record sekarang. Perintah yang digunakan dapat berupa GO atau 
GOTO. Kedua perintah ini mempunyai makna yang sama. 

Bentuk GOTO adalah : 

GOTO [RECORD] <nomor record> 

Kata  RECORD  yang  ditulis  dalam  tanda  []  bisa  diberikan  ataupun  tidak,  tanpa 
mengubah makna. Perlu diketahui, jika kata RECORD disertakan, tanda [] tidak perlu 
ditulis. 

9.  Meletakan ke record pertama dan record terakhir  Gambar 3.2.1  Kotak Dialog New Form 

Untuk menggerakan pointer ke record pertama, bisa digunakan perintah GOTO 1 atau  2.  Memberikan Judul Form dan Gambar Latar Form 


GOTO TOP. Perintah ini identik dengan GO 1 atau GO TOP.  a.  Munculkan Jendela Properties dengan meng­klik kanan pada form kosong 
b.  Pilih dan klik Properties 
Sedangkan  untuk  memindahkan  pointer  ke  record  terakhir,  bisa  digunakan  perintah  c.  Pilih object Form pada jendela properties 
GOTO BOTTOM atau GO BOTTOM.  d.  Pada baris caption, ketik MEMBUAT ANGKA BERURUT 
e.  Pada baris Picture, pilih gambar latar yang dikehendaki. 
10.  Memindahkan posisi record ke record berikutnya  3.  Membuat Control Question dan Field Entry 
a.  Munculkan toolbar Form Controler Toolbar dari menu View 
Salah  satu  tindakan  yang  nantinya  banyak  dijumpai  dalam  pemrograman  adalah  b.  Buatkan Question Start, Step, Stop, dan Hasil dengan menggunakan Label dari 
memindahkan  pointer  ke  record  berikutnya.  Langkah  ini  dapat  ditempuh  dengan  Form Controler Toolbar 
menggunakan perintah SKIP. Format perintah ini adalah :  c.  Buatkan  Field  Entry  untuk  meng­input  Start,  Step,  Stop,  dan  Hasil  dengan 
menggunakan Text Box. 
SKIP [ <jumlah recor yang dilompati>] 
4.  Membuat Command Button 
Apabila jumlah record yang dilompati tidak disertakan, pergeseran adalah sebesar satu  a.  Cari dan Klik control Command Button pada Form Control Toolbar 
record. Jadi SKIP identik dengan SKIP 1.  b.  Letakan  di  bawah  control  textbox  Text1,  kemudian  pada  properties  ganti 
Caption dan Name­nya dengan Proses. 
c.  Hasilnya lihat gambar  3.2.3. 

5.  Membuat OleControl 
a.  Klik Menu Tools
18  103 

b.  Pilih dan Klik Option  5.  Gambaran program dengan kontrol Tombol Tekan dan Field Entri 


c.  Pilih dan Klik page Controls 
d.  Pilih dan Klik ActiveX Control  Jika  kita  perhatikan  program­program  pada  windows,  pengerjaan  suatu  tindakan  bisa 
e.  Cari Microsoft ProgressBar Control 6.0 kemudian berikan tanda Check Box pada  dilakukan  dengan  menggunakan  suatu  tombol  perintah,  seperti  Ok  atau  Cansel. 
kotak sebelah kirinya, seperti pada gambar 3.2.2.  Bagaimana  cara  membuat  tombol­tombol  tersebut  kita  akan  coba  praktekan 
pembuatannya pada sub bab ini. 

Pada  Modul  praktek  ke  II  kita  sudah  mempelajari  membuat  kontrol  teks,  yang  b 
ertuliskan  Kode  Mata  Kuliah,  Nama  Mata  Kuliah  dan  Kredit,  dan  Field  Entri  (berupa 
kotak kosong yang tidak berisi apa­apa) 

6.  Mengenal Pointer Record 

Setiap  tabel  memiliki  sebuah pointer record  sewaktu  tabel  dibuka.  Fungsi  dari pointer 


ini yaitu menunjuk record sekarang. Pada lingkup pemrograman, pointer ini mempunyai 
peranan  yang  sangat  penting.  Beberapa  perintah  Visual  FoxPro  (misalnya  DISPLAY, 
jika  lingkup  ALL  tidak  diberikan)  bekerja  berdasarkan  record  yang  sedang  ditunjuk 
oleh pointer record. 

Perhatikan  hasil  perintah  seperti  BROWSE,  setiap  record  mempunyai  nomor  record. 
Nomor  record  ini  dimulai  dari  1.  Nomoor  inilah  yang  dipegang  pada  pointer  record. 
Misalnya, jika pointer record berisi 2, artinya record sekarang adalah record bernomor2. 

Perlu  diketahui,  pada  saat  suatu  tabel  dibuka,  pointer  record  dengan  sendirinya 
menunjuk ke record bernomor 1 (jika tabel paling tidak mempunyai sebuah record). 

7.  Memperoleh nomor record sekarang 

Untuk  mengetahui  nomor  record  sekarang  (atau  dengan  kata  lain  melihat  isi  pointer 
Gambar 3.2.2  Kotak dialog option  record), bisa digunakan perintah RECNO(). 

f.  Klik tombol Ok  Perintah ini diketikan pada jendela command dan diakhiri dengan enter. Misalnya buka 


g.  Pilih dan klik control View Classes pada Form Controls Toolbar  dulu  file  table  (USE  [Link]  dikuti  dengan  ENTER),  lalu  ketik  perintah  ?RECNO() 
h.  Pilih dan klik ActiveX Controls  dikuti dengan ENTER. Perintah ini akan menampilkan posisi record sekarang.
i.  Pilih dan klik Control Microsoft ProgressBar Control, Version 5.0 
j.  Buatkan  ProgressBar  di  sebelah  bawah  Tombol  Proses,  seperti  pada  gambar 
3.2.3. 
102  19 

Pada  saat  perancangan,  form  tampak  tersusun  atas  sejumlah  titik.  Hal  ini  bermanfaat 
sebagai patokan dalam mengatur tata letak kontrol (misalnya tombol tekan atau bahkan 
teks).  Sudah  tentu,  pada  saat  aplikasi  dijalankan,  titik­titik  tersebut  tidak  kelihatan. 
Dengan kata lain, tanda titik­titik hanya muncul saat perancangan. 

Jendela  Form  Control  (lihat  gambar  1a)  merupakan  jendela  yang  membuat  berbagai 
kontrol  yang  tersedia  pada  Visual  FoxPro.  Kita  perlu  memilih  kontrol  yang  terdapat 
pada jendela ini sebelum menempatkannya pada form. 

Gambar 1a. Form Control 

Jendela  Properties  merupakan  tempat  untuk  mengatur  hal­hal  yang  berkaitan  dengan 
suatu kontrol yang terdapat pada form. Jendela ini mengandung lima buah tab, yaitu : 
a. All 
b. Data 
c. Methods 
d. LayOut  Gambar 3.2.3  Form Membuat Angka Berurut 
e. Other 
k.  Ganti name­nya dengan Ctrl 
Kelima tab ini terlihat pada bagian atas jendela properties. 
Tab  properties  berisi  properti  dari  kontrol,  misalnya  ukuran  font,  jenis  font,  nama  6.  Mengisi Control Tombol Proses dengan Formula 
kontrol, dan sebagainya. Seperti pada gambar 2a  a.  Double klik Control Tombol Proses 
b.  Cari dan pilih Procedure Clic pada object Proses 
c.  Ketik Procedure berikut : 

local a, b, c 
if [Link]>0 .or. [Link]>0 .or. ; 
[Link]>0 
[Link]=.f. 
a=[Link] 
b=[Link] 
c=[Link] 
do while a<=c 
[Link]=a 
a=a+b 
n=(100/c)*a 
Gambar 2a. Jendela Properties  if a<=c
20  101 

[Link]=n  k.  General 


endif  Dipakai untuk menyimpan grafik. Foxpro menyimpan field General dalam file .FPT. 
x=0  yang dipakai juga oleh field Memo. 
do while x<1000000 
x=x+1  l.  Character (Binary) 
enddo  m.  Memo (binary) 
enddo 
else 
messagebox("Start, Step dan Stop harus diisi !",0,"Perhatian !")  3.  Tahap Pembuatan Program 
[Link]() 
retu  Pembuatan program dengan Visual FoxPro selalu melalui dua tahap, yakni: 
endif  a.  Tahap pemrograman visual, dan 
[Link]=.t.  b.  Tahap penulisan kode 
retu 
Pada  tahap  pemrograman  visual,  mula­mula  merancang  form  yang  dipakai  program. 
7.  Simpan dan Uji Form  Pada  tahap  ini  dibuatkan  form  beserta  kontrol­kontrol  yang  diperlukan.  Perancangan 
a.  Simpan dengan nama file URUTANGKA1  form beserta kontrol­kontrol yang dilibatkan ditangani dengan menggunakan perangkat­ 
b.  Uji Form dengan meng­klik Run / !.  perangkat yang tersedia dalam paket Viasual FoxPro. 

Pada tahap penulisan kode, dituliskan kode­kode  yang dilekatkan pada kontrol­kontrol 
yang  dipakai.  Sebagai  gambaran,  Jika  operator  menekan  suatu  tombol  yang  kita 
3.3  Aplikasi FOR NEXT  buatkan,  maka  kode  yang  kita  buatkan  harus  menampilkan  suatu  tindakan.  Penulisan 
kode  ini  dilakukan  dengan  menggunakan  editor  teks  yang  tersedia  pada  paket  visual 
1.  Buka File Form URUTANGKA1  FoxPro. 
2.  Simpan dengan perintah Save As dan berinama URUTANGKA2 
3.  Double Click tombol Proses, kemudian prosedurnya edit menjadi sbb. : 
4.  Perangkat untuk Pembuatan Program 
local a, b, c, n, i 
if [Link]>0 .or. [Link]>0 .or. ;  Bila bermaksud membuat suatu program dengan Visual FoxPro, akan selalu melibatkan 
[Link]>0  tiga jendela berikut : 
[Link]=.f.  a.  Jendela Form 
a=[Link]  b.  Jendela Form Control 
b=[Link]  c.  Jendela Properties 
c=[Link] 
for i=a to c step b  Form merupakan jendela yang akan muncul sebagai latar belakang dari tampilan suatu 
[Link]=a  aplikasi.  Sebuah aplikasi  dapat memiliki  banyak  form, namun  paling  tidak melibatkan 
a=a+b  sebuah  form.  Itulah  sebabnya,  tidak  berlebihan  jika  form  dianggap  sebagai  tulang 
n=(100/c)*a  punggung  aplikasi  Visual  FoxPro.  Formlah  yang  menjadi  antarmuka  dengan  pemakai 
if a<=c  aplikasi.
[Link]=n 
100  21 

endif 
e.  Date  for x=1 to 10000000 step 1 
Menyatakan  tanggal.  Panjangnya  selalu  8  karakter.  Format  tanggal  dapat  diatur  next 
sesuai dengan format di Indonesia (tanggal­bulan­tahun) melalui SET DATE.  next 
Bentuk tanggal yang bisa di set, diantaranya :  else 
­  American  Format : mm/dd/yy  messagebox("Start, Step dan Stop harus diisi..!",0,"Perhatian ..!") 
­  British/French  Format : dd/mm/yy  [Link]() 
­  Italian  Format : dd­mm­yy  retu 
­  German  Format : [Link]  endif 
­  Ansi  Format : yy­mm­dd  [Link]=.t. 
retu 
f.  DateTime 
Menyatakan  tanggal  dan  waktu.  Panjangnya  selalu  8  karakter.  Type  DateTime  4.  Simpan Form dengan nama File URUTANGKA2 
memakai  format  HHMMSS  untuk  menyimpan  data  jam.  Jangkauan  tanggal  5.  Uji Form dengan mengklik icon Run / !. 
01/01/100  sampai  31/12/9999  dan  jangkauan  jam  adalah  12:00:00  AM  sampai 
11:59:59 PM. 
3.4  Tugas 3 
g.  Double 
Type ini menyimpan data numeric 18 digit dalam format yang telah di kompres dan  1.  Klik page Code pada project manager 
memerlukan  8  byte.  Type  ini  mempunyai  kelebihan  dalam  hal  banyaknya  angka  2.  Pilih dan klik option Program, kemudian klik tombol New 
desimal  yang  ditangani  dengan  range  –4.94065648541247E­324  sampai  3.  Ketik program berikut : 
1.79769313486232E.  function terbilang 
parameter numerik 
h.  Intiger  private hasil,ulang,uang,kesatu,kedua,ketiga,cangka 
Untuk menyatakan bilangan (yang nantinya dapat diproses untuk perhitungan). Type  private cangka0,cangka1,cangka2,cangka3,cangka4,cangka5 
ini tida mengandung pecahan. Panjang maksimal 4.  private cangka6,cangka7,cangka8,cangka9 
private satu,dua,tiga,gabung,sen1,sen2 
i.  Logical 
Menyatakan  logika  benar  atau  salah.  Isinya  Y  jika  benar  (True)  atau  N  jika  salah  hasil="" 
(False).  Misalnya  dapat  dipakai  untuk  menyatakan  jenis  kelamin  (Y  =  pria,  N  =  uang=str(numerik,15,2) 
wanita). Pasa saat memasukan  data huruf­huruf berikut (kecil ataupun kapital) bisa  kesatu=1 
digunakan Y,T,F atau N. T dianggap Y dan F dianggap N.  kedua=2 
ketiga=3 
j.  Memo  cangka0=" " 
Berguna  untuk  menyatakan  suatu  keterangan  yang  panjangnya  lebih  dari  254  cangka1="Satu " 
character.  Misalnya,  isi  surat.  Ukuran  memo  dapat  bervariasi,  disesuaikan  dengan  cangka2="Dua " 
ukuran  sebuah  blok.  Defaulnya  setiap  blok  foxpro  berukuran  64  byte.  Misalnya  cangka3="Tiga " 
untuk menampung data 72 byte diperlukan 2 blok.  cangka4="Empat " 
cangka5="Lima " 
cangka6="Enam "
22  99 

cangka7="Tujuh " 
cangka8="Delapan "  LANDASAN TEORI 
cangka9="Sembilan " 
gabung=" "  1.  Pengertian Database 

for ulang=1 to 4  Database  adalah  suatu  pengorganisasian  data  dengan  tujuan  agar  data  dapat  diakses 
satu=substr(uang,kesatu,1)  dengan  mudah.  Sebagai  contoh,  database  dapat  diterapkan  untuk  mengelola 
dua=substr(uang,kedua,1)  kepegawaian atau akunting. Pada kenyataannya, umumnya sebuah database terdiri atas 
tiga=substr(uang,ketiga,1)  sejumlah tabel. 
gabung=satu+dua+tiga 
if val(satu)=1  Sebagai gambaran, database tentang penggajian bisa mengandung tabel karyawan, tabel 
hasil=hasil+"Seratus "  golongan, tabel absensi, tabel jabatan  dan tabel transasksi penggajian. Tabel karyawan 
else  dapat  dilukiskan  sebagai  kumpulan  kartu,  dengan  masing­masing  kartu  mewakili  data 
if val(satu)>1  seorang karyawan. 
hasil=hasil+cangka&satu+"Ratus " 
endif 
endif  2.  Type Data Visual FoxPro 
DO CASE 
CASE VAL(DUA) = 1  Dalam Visual FoxPro 6.0 ini terdapat tiga belas jenis data, diantaranya: 
DO CASE 
CASE VAL(TIGA)=0  a.  Character 
HASIL=HASIL + "Sepuluh "  Type  ini  merupakan  type  bawaan.  Digunakan  untuk  menyatakan  informasi  yang 
CASE VAL(TIGA)=1  tidak untuk dihitung dan juga bukan berupa tanggal. Misalnya untuk nama pegawai 
HASIL=HASIL + "Sebelas "  atau nama barang. Bisa mengandung simbol * atau +. Type ini dapat menampung 1 
OTHER  sampai 254 character. 
HASIL=HASIL + ALLTRIM(CANGKA&TIGA)+; 
"Belas "  b.  Curency 
ENDCASE  Untuk menyatakan karakter­karakter yang dipakai untuk symbol mata uang. Angka 
CASE VAL(DUA) > 1  yang dapat ditangani data ini adalah $922 triliun. Defaultnya mempunyai 4 tempat 
HASIL=HASIL + CANGKA&DUA + "Puluh "+;  desimal dan memerlukan tempat sebesar 8 byte di dalam table. 
CANGKA&TIGA 
CASE VAL(DUA)=0 .AND. VAL(TIGA) > 0  c.  Numeric 
IF (ulang=3 .AND. GABUNG="001") .OR. ;  Untuk menyatakan bilangan (yang nantinya dapat diproses untuk perhitungan). Type 
(ulang=3 .AND. GABUNG="  1")  ini bisa mengandung bagian pecahan. Panjang maksimal 20 digit dengan maksimum 
HASIL=HASIL+"Seribu  "  19  tempat  desimal,  termasuk  tanda  plus  atau  minus  dan  juga  tempat  untuk  bagian 
ELSE  pecahan. 
HASIL=HASIL+CANGKA&TIGA 
ENDIF  d.  Float 
ENDCASE  Merupakan  type  untuk  data  yang  dinyatakan  dengan  notasi  ilmiah  (misalnya 
1.6E+02). Sifat­sifat yang lain sama dengan type Numerik.
98  23 

DO CASE 
CASE ulang=1 .AND. VAL(GABUNG)>0 
HASIL=HASIL+"Milyar " 
CASE ulang=2 .AND. VAL(GABUNG)>0 
HASIL=HASIL+"Juta " 
CASE ulang=3 .AND. VAL(GABUNG)>0 
IF GABUNG="001" .OR. GABUNG="  1" 
HASIL=HASIL+" " 
ELSE 
HASIL=HASIL+"Ribu " 
ENDIF 
ENDCASE 
kesatu=kesatu+3 
kedua=kedua+3 
ketiga=ketiga+3 
next ulang 
sen1=substr(uang,14,1) 
Gambar 13.4.1 Build Option  sen2=substr(uang,15,1) 
if len(hasil)>1 
hasil=hasil+"Rupiah " 
endif 

DO CASE 
CASE VAL(SEN1)=0 .AND. VAL(SEN2)>0 
HASIL=HASIL+CANGKA&SEN2+"Sen" 
CASE VAL(SEN1) = 1 
DO CASE 
CASE VAL(SEN2)=0 
HASIL=HASIL+"Sepuluh Sen" 
CASE VAL(SEN2)=1 
HASIL=HASIL+"Sebelas Sen" 
CASE VAL(SEN2)>1 
HASIL=HASIL+ALLTRIM(CANGKA&SEN2)+; 
"Belas Sen " 
ENDCASE 
CASE VAL(SEN1) > 1 
HASIL = HASIL + CANGKA&SEN1 + "Puluh " + ; 
CANGKA&SEN2 + "Sen" 
ENDCASE 
RETURN HASIL
24  97 

13.3  Membuat File Program 
4.  Uji Program di atas dengan form berikut : 
1.  Klik page Code 
2.  Pilih dan klik option Program, kemudian klik tombol New 
3.  Ketikan program berikut : 
CLOSE DATABASE all 
CLEAR ALL 
CLOSE ALL 
SET TALK OFF 
SET STAT OFF 
SET AUTOSAVE ON 
SET CENTURY ON 
SET DATE BRITISH 
5.  Procedure InteractiveChange pada Object Text1, adalah sbb.:  SET DEFA TO D:\SIPB\DATA 
PUSH MENU _MSYSMENU 
set defa to o:\AFOX\susi  MODI WINDOWS SCREEN TITLE 'DUTA FAMILIY MOTOR' 
set procedure to terbilang  WITH _SCREEN 
a=terbilang([Link])  .VISIBLE=.T. 
[Link]=a  .WINDOWSTATE=2 
retu  .picture='D:\SIPB\Gb\[Link]' 
ENDWITH 
RELEASE ALL 
DO d:\pembukuan\prg\[Link] 
READ EVENTS 
QUIT 

4.  Simpan program dengan nama SIPB 
5.  Jalankan program dengan meng­klik tombol Run 

13.4  Compiler File 
1.  Klik kanan pada File Program SIPB, kemudian pilih Set Mine 
2.  Klik tombol Build 
3.  Klik  Build  Action  :  Win32  executable  /  CIM  server  (exe),  seperti  pada  gambar 
13.4.1.
96  25 

3.  Object Form1 Procedure UNLOAD  IV. Praktek Visual FoxPro IV 


close data 
close index 
RETURN  Materi : 
1.  Membuat Databse 
4.  Object Batal Procedure Click  2.  Membuat Table 
[Link]()  3.  Membuat Form Transaksi Penerimaan Siswa Baru 
retu 
4.1  Bahan Praktek 4 
5.  Object Login Procedure Click 
IF EMPTY([Link]) .or. ;  1.  Buatkan Project File dengan nama PSB 
EMPTY([Link])  2.  Buatkan Database dengan nama PSB 
messagebox("User Id & Password tidak boleh kosong!";  3.  Buatkan Table dengan nama CASIS, struktur table sbb : 
,0,"Perhatian...") 
[Link] 
RETURN 
ENDIF 
use pswd 
set order to tag nmid 
seek [Link] 
if ! found() 
messagebox("Maaf User Id Anda Belum Terdaftar...!"; 
,0,"Perhatian...")  3.  Buatkan Table pada Free Table dengan nama NODAF, struktur table sbb : 
[Link]() 
retu 
else 
set order to tag pswd 
seek [Link]  4.  Buatkan Table pada Free Table dengan nama SEKOLAH, struktur table sbb : 
if ! found() 
messagebox("Maaf Password Tidak Dikenal...!"; 
,0,"Perhatian...") 
[Link]()  Entry data sekolah sbb :
retu 
else 
DO d:\sipb\prg\[Link] 
[Link]() 
endif 
endif 

7.  Simpan Form dengan nama File PASWORD 


8.  Uji Form dengan mengklik icon Run / !. 
26  95 

5..  Buatkan Form dengan nama DAFTAR, desain form dapat dilihat pada gambar 4.1.1. 
b.  Klik  Table  PSWD,  kemudian  klik  tombol  Browse  yang  terletak  sebelah 
kanannya. 
c.  Setelah kebuka, klik menu Table, kemudian pilih dan klik Append New Record 
(Ctrl + Y) 
d.  Isi nmid dengan nama depan anda 
e.  Isi Pswd dengan kode sandi anda 

2.  Membuat Form untuk Login 

1.  Buatkan Form seperti pada gambar 4.4.1 

Gambar 4.1.1 Form Kelola Pendaftaran Siswa 

6.  Listing Program : 
a.  Pbject FORM1 Procedure LOAD  Gambar 4.4.1  Form Entry Login dan Password 
SET DEFAULT TO d:\psb\data 
SET DATE BRITISH  2.  Object Form1 Procedure ACTIVATE 
SET CENTURY ON  set exact on 
CLOSE DATABASES  set defa to D:\SIPB\DATA 
CLOSE INDEXES  if used('pswd') 
IF USED("NODAF")  use in pswd 
USE IN NODAF  endif 
ENDIF  use pswd 
IF USED("Sekolah")  set order to tag nmid 
USE IN Sekolah  set order to tag pswd 
ENDIF  [Link]="" 
IF USED("CaSis")  [Link]="" 
USE IN CaSis  RETURN
ENDIF 
94  27 

10. Buatkan Sub Menu Laporan Pembelian sbb. :  SELECT A 


USE NODAF 
SELECT B 
USE sekolah 
SET ORDER TO TAG namasek 
SELECT C 
USE CASIS 
SET ORDER TO tag NoDaf 
RETURN 
11. Buatkan Sub Menu Laporan Penjualan sbb. : 
b.  Object FORM1 Procedure UNLOAD 
CLOSE DATABASES 
CLOSE INDEXES 
RETURN 

c.  Object FORM1 Procedure KOSONGKAN 


[Link]="" 
[Link]="" 
12. Buatkan Sub Menu Service sbb :  [Link]="" 
[Link]=0 
RETURN 

d.  Object FORM1 Procedure TAMPILKAN 


[Link]=[Link] 
[Link]=[Link] 
[Link]=[Link] 
13. Simpan Menu dengan nama MenuUtama  [Link]=[Link] 
14. Menguji menu dengan mengklik tombol Run  [Link]=DAY([Link]) 
[Link]=month([Link]) 
[Link]=year([Link]) 
13.2  Membuat Form Login  RETURN 
1.  Membuat Table PSWD  e.  Object FORM1 Procedure AKTIFKAN 
a.  Pada database SIPB buatkan table PSWD seperti pada gambar 13.2.1.  PARAMETERS X 
[Link]=X 
[Link]=X 
[Link]=X 
RETURN

Gambar 13.2.1  Struktur Table PSWD 
28  93 

f.  Object FORM1 Procedure KENDALI 


PARAMETERS Y 
[Link]=Y 
[Link]=Y 
[Link]=Y 
[Link]=Y 
RETURN 

g.  Object FORM1 Procedure ACTIVATE 


7.  Pada kotak Menu level sebelah kanan, pilih Menu Bar 
[Link] 
[Link](.f.)  Kemudian Klik Master, lalu klik tombol Create dan buatkan SubMenu Master sbb: 
[Link](.t.) 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=DAY(DATE())  8.  Buatkan Submenu Transaksi berikut : 
[Link]=month(DATE()) 
[Link]=year(DATE()) 
RETURN 

h.  Object TAMBAH Procedure CLICK 
PUBLIC N 
SELECT NODAF 
GO bottom 
IF EOF() 
APPEND BLANK 
n=1  9.  Buatkan Sub Menu Laporan sbb. :
ELSE 
n=[Link]+1 
ENDIF 
th1=[Link] 
th2=[Link]+1 
ta=RIGHT(STR(th1,4),2)+RIGHT(STR(th2,4),2) 
IF n<10 
vno=ta+"00"+LTRIM(STR(n,3)) 
ELSE 
92  29 

XIII. Praktek Visual FoxPro XIII  IF n<100 


vno=ta+"0"+LTRIM(STR(n,3)) 
ELSE 
Materi :  vno=ta+LTRIM(STR(n,3)) 
Membuat Menu Program  ENDIF 
ENDIF 
13.1  Membuat Organisasi Menu  [Link] 
[Link]=VNO 
1.  Klik page Other (lihat gambar 4.2.1)  [Link](.t.) 
2.  Klik option menu kemudian klik tombol New  [Link](.f.) 
3.  Pilih dan klik tombol menu  [Link]=.t. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link] 
RETURN 

i.  Object SIMPAN Procedure CLICK 
IF EMPTY([Link]) .or. ; 
EMPTY([Link]) .or. ; 
EMPTY([Link]) 
MESSAGEBOX("Isi data dengan lengkap !",0,"Perhatian...") 
Gambar 13.1.1  Kotak dialog project manager  [Link] 
RETURN 
4.  Ketik menu berikut :  ENDIF 
SELECT CaSis 
LOCATE FOR Nama=TRIM([Link]) .and. ; 
AsalSek=TRIM([Link]) 
IF FOUND() 
MESSAGEBOX("Maaf transaksi tidak dapat diproses !"+CHR(13)+; 
"Data tersebut sudah tercatat...",0,"Perhatian...") 
[Link] 
RETURN 
Gambar 13.1.2 Menu Utama  ENDIF 
LOCATE FOR NoDaf=SPACE(7) 
5.  Klik File pada baris pertama  IF ! FOUND() 
6.  Klik tombol create, kemudian buatkan sub menu berikut :  APPEND BLANK 
ENDIF
30  91 

tgl=[Link]  SELECT LAPJUAL 
bln=[Link]  APPEND FROM lapjual1 FOR LEFT(kodebrg,1)='B' 
thn=[Link]  SELECT pelanggan 
vtgl=LTRIM(STR(tgl,2))+"/"+LTRIM(STR(bln,2))+"/"+STR(thn,4)  SET ORDER TO TAG NOPEL 
REPLACE tgldaf WITH CTOD(vtgl)  SELECT LAPJUAL 
REPLACE NoDaf WITH [Link]  SET RELATION TO NOPEL INTO PELANGGAN 
REPLACE Nama WITH [Link]  *repo form d:\SIPB\prg\lapharianBB preview 
REPLACE asalsek WITH [Link]  ELSE 
REPLACE nilai WITH [Link]  SELECT LAPJUAL 
APPEND FROM lapjual1 FOR LEFT(kodebrg,1)='S' 
SELECT NODAF  SELECT pelanggan 
GO bottom  SET ORDER TO TAG NOPEL 
REPLACE no WITH N  SELECT LAPJUAL 
[Link]  SET RELATION TO NOPEL INTO PELANGGAN 
MESSAGEBOX("Penyimpanan sudah dilakukan...",0,"Perhatian...")  repo form d:\SIPB\prg\laphariansp preview 
[Link](.f.)  ENDIF 
[Link](.t.)  return 
[Link]=.f. 
[Link]=.t. 
[Link]=.f.  3.  Simpan Form dengan nama File LAPHARIANSP, kemudian jalankan form. 
[Link]=.t. 
[Link]=.f. 
[Link]=.t.  12.3  Tugas 12 
[Link]=.t. 
RETURN 
Buatkan Report Laporan Harian pembelian (disain report mirip dengan Report Laporan 
Harian Penjualan)
j.  Object BATAL Procedure CLICK 
[Link] 
[Link](.f.) 
[Link](.t.) 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=DAY(DATE()) 
[Link]=month(DATE()) 
[Link]=year(DATE()) 
RETURN 
90  31 

APPEND FROM lapjual FOR tgltran=tgla  k.  Object PERBAIKI Procedure CLICK 


SELECT faktur  [Link](.t.) 
GO top  [Link](.f.) 
do while ! eof()  [Link]=.f. 
select LAPJUAL1  [Link]=.f. 
locate for nofak=[Link]  [Link]=.t. 
IF FOUND()  [Link]=.f. 
vtotjualsp=[Link]  [Link]=.t. 
vdiskon=[Link]  [Link]=.f. 
vbayar=[Link]  [Link]=.f. 
ELSE  RETURN 
vtotjualsp=0 
vdiskon=0  l.  Object UD Procedure CLICK 
vbayar=0  jawab=MESSAGEBOX("Anda yakin mau memperbaiki data sebelumnya ?"; 
ENDIF  ,4+32+256,"Perhatian....") 
REPLACE totjualsp WITH vtotjualsp  IF jawab=6 
REPLACE diskon WITH vdiskon  SELECT CASIS 
REPLACE bayar WITH vbayar  tgl=[Link] 
SELECT FAKTUR  bln=[Link] 
skip  thn=[Link] 
ENDDO  vtgl=LTRIM(STR(tgl,2))+"/"+LTRIM(STR(bln,2))+"/"+STR(thn,4) 
SELECT lAPJUAL1  REPLACE tgldaf WITH CTOD(vtgl) 
GO top  REPLACE NoDaf WITH [Link] 
do while .not. eof()  REPLACE Nama WITH [Link] 
select barang  REPLACE asalsek WITH [Link] 
locate for kodebrg=[Link]  REPLACE nilai WITH [Link] 
IF FOUND()  ENDIF 
vnamabrg=[Link]  [Link] 
ELSE  [Link](.f.) 
vnamabrg=""  [Link](.t.) 
ENDIF  [Link]=.f. 
select lapjual1  [Link]=.t. 
repl namabrg with vnamabrg  [Link]=.f. 
skip  [Link]=.t. 
enddo  [Link]=.f. 
SELECT lapjual1  [Link]=.t. 
SET ORDER TO tag kodebrg  [Link]=.t. 
SELECT lapjual  RETURN
DELETE ALL 
PACK 
IF [Link]=2 
32  89 

m.  Object HAPUS Procedure CLICK  b.  Object Form1 Procedure UNLOAD 


jawab=MESSAGEBOX("Anda yakin record ini mau dihapus ?";  close data 
,4+32+256,"Perhatian....")  close index 
IF jawab=6  return 
DELETE 
SET DELETED ON  c.  Object KELUAR Procedure CLICK 
ENDIF  [Link]() 
[Link]  return 
[Link](.f.) 
[Link](.t.)  d.  Object CETAK Procedure CLICK 
[Link]=.f.  tgl1=[Link] 
[Link]=.t.  bln1=[Link] 
[Link]=.f.  thn1=[Link] 
[Link]=.t.  tgl1a=TRIM(str(tgl1,2))+"/"+TRIM(str(bln1,2))+"/"+; 
[Link]=.f.  str(thn1,4) 
[Link]=.f.  tgla=ctod(tgl1a) 
[Link]=.t.  select lapjual 
RETURN  dele all 
set dele off 
n.  Object KELUAR Procedure CLICK  pack 
jawab=MESSAGEBOX("Anda Yakin Mau Keluar ?",;  appe from penjualan 
4+32+256,"Perhatian....")  go top 
IF jawab=6  do while ! eof() 
SET DELETED OFF  select faktur 
SELECT CaSis  locate for nofak=[Link] 
PACK  IF FOUND() 
[Link]  vnopel=[Link] 
ENDIF  vtgltran=[Link] 
RETURN  ELSE 
vnopel="" 
o.  Object PERTAMA Procedure CLICK  vtgltran=CTOD(" / / ") 
SELECT CaSis  ENDIF 
GO top  SELECT lapjual 
IF BOF()  REPLACE nopel WITH vnopel 
MESSAGEBOX("Record kosong",0,"Perhatian...")  REPLACE tgltran with vtgltran 
RETURN  skip 
ENDIF  ENDDO 
[Link]  SELECT lapjual1 
[Link]  DELETE ALL 
RETURN  PACK
88  33 

if used("penjualan")  p.  Object SEBELUMNYA Procedure CLICK 


use in penjualan  SELECT CaSis 
endif  SKIP ­1 
if used("lapjual")  IF BOF() 
use in lapjual  GO TOP 
ENDIF 
endif  [Link] 
if used("lapjual1")  [Link] 
use in lapjual1  RETURN 
endif 
if used("pelanggan")  q.  Object BERIKUTNYA Procedure CLICK 
use in pelanggan  SELECT CaSis 
endif  SKIP 
set defa to d:\SIPB\data  IF EOF() 
select a  GO BOTTOM 
ENDIF 
use barang 
[Link] 
set order to tag kodebrg  [Link] 
select b  RETURN 
use faktur 
set order to tag nofak  r.  Object TERAKHIR Procedure CLICK 
set order to tag tgltran  SELECT CaSis 
reindex  GO BOttom 
select c  IF EOF() 
use penjualan  MESSAGEBOX("Record kosong",0,"Perhatian...") 
set order to tag nofak  RETURN 
select d  ENDIF 
use lapjual  [Link] 
[Link] 
set order to tag nofak  RETURN 
select e 
USE pelanggan  s.  Object GRID1 Procedure AfterRowColChange 
SET ORDER TO tag nopel  LPARAMETERS nColIndex 
SELECT f  [Link] 
use lapjual1  [Link](.f.) 
[Link](.t.) 
[Link]=DAY(DATE())  [Link]=.f. 
[Link]=MONTH(DATE())  [Link]=.t. 
[Link]=YEAR(DATE())  [Link]=.f. 
[Link]()  [Link]=.t. 
[Link]=.f. 
return  [Link]=.t. 
[Link]=.t. 
RETURN
34  87 

t.  Object TIMER1 Procedure TIMER  Diskon  : [Link] 


[Link]=RGB(RAND()*255,RAND()*255,RAND()*255)  Format  : Format Expression  : 99,999,999 
t=[Link]  Aligment  : Right 
[Link]=RIGHT(t,LEN(t)­1)+LEFT(t,1)  Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 
Penjualan Bersih  : 
4.2  Tugas 4  Format  : Format Expression  : 999,999,999 
Aligment  : Right 
1.  Buatkan Table dengan nama TU, struktur table sbb :  Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 

12.2  Membuat form untuk memanggil laporan harian 


1.  Disain Form, sbb : 

2.  Buatkan Form dengan nama TU, dengan disain sbb : 

2.  Listing Program : 
a.  Object Form1 Procedure ACTIVATE 
close data 
close index 
set date british 
set cent on 
if used("barang") 
use in barang 
endif 
if used("faktur") 
use in faktur 
endif
86  35 

V. Praktek Visual FoxPro V 


2.  Isi TextBox: 
Per Tanggal  : [Link] 
Materi : 
[Link]  : [Link] 
1.  Membuat Table Temp 
Kode Barang  : [Link] 
2.  Membuat Form Report 
Nama Barang  : [Link] 
Harga Satuan  : [Link] 
Format  : Format Expression  : 99,999,999  5.1  Bahan Praktek 5 
Aligment  : Right 
Qty  : [Link]  1.  Buatkan Table pada Free Table dengan nama TMPCASIS, struktur table sbb : 
Format  : Format Expression  : 9,999 
Aligment  : Right 
Jumlah Penjualan  : [Link] 
Format  : Format Expression  : 999,999,999 
Aligment  : Right 

Baris SubGrup NoFak : 
Jumlah Penjualan  : [Link] 
Format  : Format Expression  : 999,999,999 
Aligment  : Right 
Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 
Diskon  : [Link]  2.  Buatkan Report dengan nama DAFCASIS, sbb :
Format  : Format Expression  : 99,999,999 
Aligment  : Right 
Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 
Penjualan Bersih  : 
Format  : Format Expression  : 999,999,999 
Aligment  : Right 
Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 

Baris Summery atau SubGroup TglTran : 
Jumlah Penjualan  : [Link] 
Format  : Format Expression  : 999,999,999 
Aligment  : Right 
Calculate  : Calculation Type  : SUM 
Reset Based On  : Group:[Link] 
36  85 

3.  Buatkan Form dengan nama PG, dengan disain sbb:  XII. Praktek Visual FoxPro XII 

Materi : 
Membuat Laporan Harian Penjualan 

12.1  Disain Laporan Harian 
1.  Copy­kan File Free Table TMPJUAL ke LAPJUAL dan LAPJUAL1 
2.  Perbaiki idex­nya, samakan dengan file TMPJUAL 
3.  Buatkan Report Laporan Harian dengan disain sbb:

4.  Listing Program : 
a.  Object FORM1 Procedure ACTIVATE 
SET DEFAULT TO d:\psb\data 
IF USED("CaSis") 
USE IN CASIS 
ENDIF 
IF USED("TmpCaSis") 
USE IN TMPCASIS 
ENDIF 
SELECT A 
USE casis 
SET ORDER TO TAG NILAI 
SELECT B 
USE tmpcasis 
SET ORDER TO TAG NILAI 
RETURN 
84  37 

2.  Isi TextBox:  b.  Object PROSES Procedure CLICK 


Nama Pelanggan  : [Link]  SELECT TMPCASIS 
Type/[Link]  : trim([Link])+" [Link] : "+[Link]  DELETE ALL 
Nomor Faktur  : ltrim([Link])  PACK 
PG=[Link] 
Tanggal Transaksi  : [Link] 
APPEND FROM CASIS FOR NILAI>=PG 
Kode Barang  : [Link]  GO top 
Nama Barang  : [Link]  A=0 
Quantity  : [Link]  DO WHILE ! EOF() 
Format  : Format Expression  : 9,999  REPLACE NILAIPG WITH PG 
Aligment  : Right  A=A+1 
Harga Satuan  : [Link]  SKIP 
Format  : Format Expression  : 99,999,999  ENDDO 
[Link]=A 
Aligment  : Right  RETURN 
Jumlah  : [Link] 
Format  : Format Expression  : 999,999,999  c.  Object CETAK Procedure CLICK 
Aligment  : Right  SELECT TMPCASIS 
Total Transaksi  : [Link]  GO TOP 
Format  : Format Expression  : 999,999,999  VNO=1 
Aligment  : Right  DO WHILE ! EOF() 
Diskon  : [Link]  REPLACE NO WITH VNO 
VNO=VNO+1 
Format  : Format Expression  : 99,999,999  SKIP 
Aligment  : Right  ENDDO 
Total Bersih  : [Link]­[Link]  REPORT FORM D:\PSB\PRG\DAFCASIS PREVIEW 
Format  : Format Expression  : 999,999,999  RETURN 
Aligment  : Right 
Total Bayar  : [Link]  d.  Object SIMPAN Procedure CLICK 
Format  : Format Expression  : 999,999,999  SELECT CASIS 
Aligment  : Right  REPLACE ALL KET WITH "0" 
Sisa/Piutang  : [Link]  SELECT TMPCASIS 
Format  : Format Expression  : 99,999,999  GO TOP 
Aligment  : Right  DO WHILE ! EOF() 
Tanggal Titik Mangsa  : date()  SELECT CASIS 
LOCATE FOR [Link]=[Link] 
3.  Simpan  dengan  nama  File  Kuitansi,  kemudian  jalankan  report  dari  form  transaksi  IF FOUND() 
penjualan.  REPLACE [Link] WITH "1" 
ENDIF 
SELECT TMPCASIS 
SKIP 
11.2  Tugas 11  ENDDO
Buatkan  Report  kuitansi  pembelian  (disain  report  mirip  dengan  Report  kuitansi 
penjualan) 
38  83 

e.  Object KELUAR Procedure CLICK  XI. Praktek Visual FoxPro XI 


[Link] 
RETURN 
Materi : 
Membuat Report Faktur Penjualan 
5.2  Tugas 5 
Buatkan Report dengan nama DAFTU, sbb :  11.1  Disain Report Faktur 
1.  Buatkan Report Faktur Penjualan dengan disain sbb:
82  39 

6.  Buatkan Form PEMBELIAN dengan disain sbb:  VI. Praktek Visual FoxPro VI 

Materi : 
1.  Membuat Databse 
2.  Membuat Table 
3.  Membuat Form Transaksi Sederhana 

6.1  Bahan Praktek 6 
1.  Buatkan Project File dengan nama RENANG 
2.  Buatkan Database dengan nama DATARENANG 
3.  Buatkan Table dengan nama RENANG, struktur table sbb : 

4..  Buatkan  Form  dengan  nama  RENANG,  desain  form  dapat  dilihat  pada  gambar 
6.1.1: 

5.  Desain Formula : 
a.  Ketentuan Tarip Renang : 
­  Hari Kerja (Senin s/d Jumat) sebesar Rp. 10.000,­ 
­  Pada hari Week End (Sabtu dan Minggu) sebesar Rp. 15.000,­ 
b.  Ketentuan Diskon : 
­  Untuk rombongan minimal 10 orang mendapat diskon sebesar 10 % dari total 
transaksi. 
­  Untuk  rombongan  di  bawah  10  orang  atau  peroangan  tidak  mendapatkan 
diskon. 
c.  Jumlah Pembayaran = Jumlah Transaksi – Diskon
40  81 

3.  Buatkan Tabel PEMBELIAN pada Database SIPB dengan struktur file sbb: 

4.  Buatkan Tabel NoFakBeli pada Free Table dengan struktur file sbb: 

Gambar 6.1.1 Form Kelola Biaya Renang 
5.  Buatkan Tabel TMPBELI pada Free Table dengan struktur file sbb:
6.  Listing Program : 
a.  Object Form1 Procedure LOAD 
SET Date BRITISH 
SET DEFAULT TO d:\foxpro\nama 
CLOSE DATABASES 
IF USED("renang") 
USE IN renang 
ENDIF 
USE renang 
RETURN 

b.  Object Form1 Procedure UNLOAD 
CLOSE DATABASES 
RETURN 

c.  Object Form1 Procedure AKTIFKAN 
PARAMETERS X 
[Link]=x 
[Link]=x 
[Link]=x 
[Link]=x 
return 
80  41 

[Link]() 
[Link]()  d.  Object Form1 Procedure KOSONGKAN 
RETURN  [Link]=CTOD(" / / ") 
[Link]="" 
aa. Object TIMER1 Procedure TIMER  [Link]="" 
[Link]=TIME()  [Link]=0 
[Link]=RGB(RAND()*255,RAND()*255,;  [Link]=0 
RAND()*255)  return 
a=[Link] 
[Link]=right(a,LEN(a)­1)+left(a,1)  e.  Object Form1 Procedure TAMPILKAN 
[Link]=[Link] 
[Link]=[Link] 
10.4  Tugas 10  [Link]=[Link] 
[Link]=[Link] 
1.  Buatkan Tabel PEMASOK pada Database SIPB dengan struktur file sbb:  [Link]=[Link] 
return 

f.  Object Form1 Procedure KENDALI 
PARAMETERS Y 
[Link]=Y 
[Link]=Y 
RETURN 

g.  Object Form1 Procedure ACTIVATE 
[Link] 
[Link](.f.) 
[Link](.t.) 
[Link]=.t. 
[Link]=.f. 
[Link]=.t. 
2.  Buatkan Tabel FAKTURB pada Database SIPB dengan struktur file sbb:  [Link]=.t. 
[Link]=.t. 
return 

h.  Object TAMBAH Procedure CLICK 


[Link] 
[Link](.t.) 
[Link](.f.) 
[Link]=.f. 
[Link]=.t.
42  79 

[Link]=.f.  w.  Object PERTAMA Procedure CLICK 


[Link]=.f.  select faktur 
return  go top 
if eof() 
j.  Object SIMPAN Procedure CLICK  messagebox("Tidak ada record",0,"Perhatian...!") 
IF EMPTY([Link]) .OR. ;  [Link]() 
EMPTY([Link]) .OR. ;  return 
EMPTY([Link]) .OR. ;  endif 
EMPTY([Link])  [Link]() 
MESSAGEBOX("Isi data dengan lengkap !",0,;  [Link]() 
"Perhatian...")  RETURN 
[Link] 
RETURN  x.  Object SEBELUMNYA Procedure CLICK 
ENDIF  select faktur 
IF DOW([Link])=1 .OR. ;  skip ­1 
DOW([Link])=7  if bof() 
VTARIP=15000  go top 
ELSE  endif 
VTARIP=10000  [Link] 
ENDIF  [Link] 
VJMLORG=[Link]  RETURN 
JMLTRAN=VTARIP*VJMLORG 
IF VJMLORG >= 10  y.  Object BERIKUTNYA Procedure CLICK 
VDISKON= 0.1 * JMLTRAN  select faktur 
ELSE  skip 
VDISKON= 0  if eof() 
ENDIF  go bottom 
VBAYAR=JMLTRAN­VDISKON  endif 
LOCATE FOR NOBUKTI=SPACE(10)  [Link] 
IF ! FOUND()  [Link] 
APPEND BLANK  RETURN 
ENDIF 
REPLACE TANGGAL WITH [Link]  z.  Object TERAKHIR Procedure CLICK 
REPLACE NOBUKTI WITH [Link]  select faktur 
REPLACE NAMA WITH [Link]  go bottom 
REPLACE JMLORG WITH [Link]  if eof() 
REPLACE TARIP WITH VTARIP  messagebox("Tidak ada record",0,"Perhatian...!") 
REPLACE DISKON WITH VDISKON  [Link]() 
REPLACE JMLBAYAR WITH VBAYAR  return 
[Link]  endif
[Link] 
78  43 

t.  Object NOPEL Procedure InterActiveChange  [Link](.f.) 


[Link]=[Link]  [Link](.t.) 
[Link]=[Link]  [Link]=.t. 
thisform.aktif2(.t.)  [Link]=.f. 
return  [Link]=.t. 
[Link]=.t. 
u.  Object COMBO1 Procedure InterActiveChange  RETURN 
SELECT BARANG 
LOCATE FOR NAMABRG=TRIM([Link]) 
k.  Object SEBELUMNYA Procedure CLICK 
IF FOUND() 
SKIP ­1 
[Link]=[Link] 
IF BOF() 
[Link]=[Link] 
GO TOP 
[Link]=[Link] 
ENDIF 
ELSE  [Link] 
[Link]="" 
RETURN 
[Link]="" 
[Link]="" 
[Link]=""  l.  Object BERIKUTNYA Procedure CLICK 
ENDIF  SKIP 
[Link](.f.)  IF BOF() 
[Link]=.f.  GO BOTTOM 
[Link]=.t.  ENDIF 
[Link]=.f.  [Link] 
[Link]=.f.  RETURN 
[Link]=.f. 
[Link]=.f. 
m.  Object KELUAR Procedure CLICK 
[Link]=.f. 
[Link] 
[Link](.f.) 
RETU 
return 

v.  Object GRID1  Procedure AfterRowColChange  n.  Object GRID1 Procedure AfterRowColChange 


LPARAMETERS nColIndex  LPARAMETERS nColIndex 
[Link]=[Link]  [Link] 
[Link]=[Link]  RETURN
[Link]=[Link] 
[Link]=[Link] 
RETURN 
44  77 

6.2  Tugas 6  thisform.aktif2(.f.) 


thisform.aktif3(.f.) 
1.  Buat file Project dengan nama TGS6  [Link]=.t. 
2.  Buat file Database dengan nama DATATGS6  RETURN 
3.  Buat file Table dengan nama file PASIEN, dengan struktur file sbb : 
r.  Object CETAK Procedure CLICK 
SELECT pelanggan 
SET ORDER TO TAG NOPEL 
select tmpjual 
SET RELATION TO Nopel INTO Pelanggan 
REPORT form d:\SIPB\prg\kuitansi PREVIEW 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
4.  Buat Form untuk meng­input data PASIEN, dengan disain Form sbb.:  [Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link](.t.) 
[Link](.f.) 
thisform.aktif1(.f.) 
thisform.aktif2(.f.) 
thisform.aktif3(.f.) 
[Link]=.f. 
RETURN 

s.  Object KELUAR Procedure CLICK 


sele tmpjual 
dele all 
set dele off 
pack 
sele penjualan 
set dele off 
PACK 
[Link]() 
RETURN
Gambar 1. Desain Form. (Biaya Perawatan) 
76  45 

repl nopel with [Link]  5.  Ketentuan untuk mengisi BAYAR (Jumlah Bayar) adalah : 


repl diskon with [Link] 
repl bayar with [Link]  Lama Rawat = Tanggal Keluar – Tanggal Masuk 
repl piutang with [Link] 

sele NOfakJUAL  RUANG RAWAT  TARIP PER HARI 


go bottom  ICU  250,000 
repl tgltran with [Link]  VIP  300,000 
repl nofak with lnofak  KELAS 1  200,000 
ENDIF  KELAS 2  100,000 
[Link]=.t.  KELAS 3  50,000 
[Link]=.f.  Jumlah Bayar = Lama Rawat * Tarip 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.t. 
[Link]=.t. 
[Link](.t.) 
[Link](.f.)  VII. QUIZ
thisform.aktif1(.f.) 
thisform.aktif2(.f.) 
thisform.aktif3(.f.) 
[Link]=.f. 
return 

q.  Object KEMBALIAN Procedure CLICK 
do form d:\SIPB\prg\[Link] 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link](.t.) 
[Link](.f.) 
thisform.aktif1(.f.) 
46  75 

VIII. Praktek Visual FoxPro VIII  [Link]=.t. 


[Link]=.t. 
[Link]=.f. 
Materi :  [Link]=.t. 
1.  Membuat Project File Sistem Informasi Penjualan Barang  [Link]=.t. 
2.  Membuat Databse Sistem Informasi Penjualan Barang  [Link]=.f. 
3.  Membuat Table Barang, Pelanggan, Faktur & Pejualan  [Link](.f.) 
[Link] 
endif 
8.1  Membuat Project File dan DataBase  RETURN 

1.  Buatkan Project File Baru dengan nama SIPB (Sistem Informasi Penjualan Barang)  o.  Object BATAL Procedure RIGHTCLICK 


2.  Buatkan Database dengan nama SIPB  [Link]=.t. 
3.  Buatkan Tabel Barang pada Database SIPB dengan Struktur File sbb : 
p.  Object SIMPAN Procedure CLICK 
if [Link]>[Link] 
messagebox("Maaf Anda Keliru Memasukan Jumlah Bayar",; 
0,"Perhatian...") 
[Link]() 
retu 
ENDIF 

if [Link]>0 
Gambar 8.1.1  Tabel Barang  select faktur 
locate for nofak=trim([Link]) 
4.  Buatkan Tabel Pelanggan pada Database SIPB dengan Struktur File sbb :  if ! found() 
append blank 
endif 
repl nofak with [Link] 
repl totjualsp with [Link] 
repl tgltran with [Link] 
repl nopel with [Link] 
repl diskon with [Link] 
repl bayar with [Link] 
repl piutang with [Link] 

select tmpjual 
go bottom 
repl nofak with [Link] 
repl totjualsp with [Link] 
Gambar 8.1.2  Tabel Pelanggan  repl tgltran with [Link]
74  47 

repl [Link] with qty1  5.  Buatkan Tabel Faktur pada Database SIPB dengan Struktur File sbb : 


endif 
ENDIF 

sele penjualan 
loca for [Link]=TRIM([Link]); 
.and. nofak=TRIM([Link]) 
IF FOUND() 
ljml=[Link]*[Link] 
dele FOR [Link]=TRIM([Link]); 
.and. nofak=TRIM([Link]) 
ELSE  Gambar 8.1.3  Tabel Faktur 
ljml=0 
ENDIF  6.  Buatkan Tabel Penjualan pada Database SIPB dengan Struktur File sbb : 
[Link]=[Link]­ljml 
[Link]=[Link] 

sele tmpjual 
SET DELETED ON 
DELETE 
[Link]  Gambar 8.1.4  Tabel Penjualan 
[Link]=0 
ENDIF  7.  Buatkan Tabel TMPBRG pada FREE TABLE dengan Struktur File sbb : 
IF [Link]=0 
[Link](.f.) 
thisform.aktif2(.f.) 
thisform.aktif3(.f.) 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link](.t.) 
[Link] 
else 
[Link](.f.) 
thisform.aktif2(.t.) 
thisform.aktif3(.t.) 
[Link]=.f.  Gambar 8.1.5  Tabel TMPBRG
48  73 

8.2  Membuat Form Kelola Data Barang  qty1=[Link] 


qty1=qty1­[Link] 
1.  Buatkan Form Kelola Data Barang dengan disain seperti pada Gambar  8.2.1:  REPLACE [Link] with qty1 
endif 
select tmpjual 
[Link]=[Link] 
[Link]="" 
[Link]="" 
[Link]=0 
[Link]=0 
[Link](.f.) 
thisform.aktif3(.t.) 
[Link]=.f. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link](.f.) 
[Link] 
RETURN 

n.  Object BATAL Procedure CLICK 


IF EMPTY([Link]) .OR. ; 
EMPTY([Link]) .OR. ; 
Gambar 8.2.1  Disain Form Kelola Data Barang  EMPTY([Link]) 
MESSAGEBOX("Click dulu Record di Grid yang akan dibatalkan",; 
0,"Perhatian...") 
2.  Procedure Program :  [Link] 
a.  Object Form 1 Procedure LOAD  RETURN 
set exact on  ENDIF 
set defa to d:\SIPB\data  jawab=messagebox("Anda mau membatalkan transaksi ?",; 
* Menutup semua file yang tidak diperlukan  4+32+256,"Perhatian...") 
close data  if jawab=6 
close index  SELECT barang 
if USED("BARANG")  LOCATE FOR kodebrg=TRIM([Link]) 
USE IN BARANG  IF FOUND() 
endif  if [Link]>0 
if USED("PENJUALAN")  qty1=[Link] 
USE IN PENJUALAN  qty1=qty1+[Link]
72  49 

RETURN  ENDIF 
ENDIF  if USED("TMPBRG") 
sele barang  USE IN TMPBRG 
locate for namabrg=TRIM([Link])  ENDIF 
if [Link]<[Link]  * Membuka Tabel 
messagebox("Stock Barang Kurang",0+64,"Periksa Stock Barang")  SELECT A 
[Link]=[Link]  USE TMPBRG 
[Link]()  SELECT B 
return  USE PENJUALAN 
endif  SELECT C 
jml=[Link]*[Link]  use barang 
[Link]=[Link]+jml  set order to tag kodebrg 
RETURN 
select tmpjual 
if [Link]>0 .and. [Link]>0  b.  Object Form1 Procedure UNLOAD 
append blank  close data 
REPLACE nofak with [Link]  close index 
REPLACE tgltran with [Link]  return 
REPLACE nopel with [Link] 
REPLACE kodebrg with [Link]  c.  Object Form1 Procedure Kendali 
REPLACE namabrg with [Link]  parameter x 
REPLACE qty with [Link]  [Link]=x 
REPLACE hrgjual with [Link]  [Link]=x 
REPLACE jumlah with  [Link]=x 
[Link]*[Link]  [Link]=x 
SET DELETED on  RETURN 
endif 
[Link]()  d.  Object Form1 Procedure Kosongkan 
sele penjualan  [Link]="" 
if [Link]>0 .and. [Link]>0  [Link]=0 
appe blank  [Link]=0 
REPLACE Nofak with [Link]  [Link]=0 
REPLACE kodebrg with [Link]  [Link]=0 
REPLACE qty with [Link]  RETURN 
REPLACE jumlah with 
[Link]*[Link]  e.  Object Form1 Procedure NonText1 
ENDIF  PARAMETERS keadaan 
[Link]=keadaan 
sele barang  [Link]=keadaan 
locate for namabrg=TRIM([Link])  [Link]=keadaan
if [Link]>0 .and. [Link]>0 
50  71 

[Link]=keadaan  [Link] 
[Link]=keadaan  [Link]=date() 
RETURN  [Link]=.f. 
[Link]=.f. 
f.  Object Form1 Procedure Tampilkan  [Link]=.t. 
[Link]=[Link]  [Link]=.f. 
[Link]=[Link]  [Link]=.f. 
[Link]=[Link]  [Link]=.f. 
[Link]=[Link]  [Link]=.f. 
[Link]=[Link]  [Link]=.f. 
[Link]=[Link]  [Link](.F.) 
RETURN  [Link](.t.) 
thisform.aktif1(.t.) 
g.  Object Form1 Procedure ACTIVATE  thisform.aktif2(.f.) 
[Link]=.f.  thisform.aktif3(.f.) 
thisform.nontext1(.f.)  [Link]=.t. 
[Link](.t.)  [Link] 
[Link]=.t.  RETURN 
[Link]=.t. 
[Link]=.f.  l.  Object CARI Procedure CLICK 
[Link]=.f.  SELECT pelanggan 
[Link]=.f.  LOCATE FOR nopol=RTRIM([Link]) 
[Link]=.f.  IF ! FOUND() 
[Link]=.f.  MESSAGEBOX("Data tidak ditemukan !",0,"Perhatian...") 
[Link]()  [Link] 
[Link]()  RETURN 
[Link]=.t.  endif 
RETURN  [Link]=[Link] 
[Link]=[Link] 
g.  Object TAMBAH Procedure CLICK  thisform.aktif2(.t.) 
[Link]=.t.  return 
thisform.nontext1(.f.) 
[Link](.f.)  m.  Object HITUNG Procedure CLICK 
[Link]=.f.  if EMPTY([Link]) 
[Link]=.f.  messagebox("Anda Harus klik dulu tombol tambah [+],; 
[Link]=.f.  sebelum memulai transaksi!",0,"Perhatian...") 
[Link]=.t.  [Link]=.f. 
[Link]=.f.  [Link]=.t. 
[Link]=.t.  [Link]=.t. 
[Link]=.f.  [Link]
70  51 

j.  Object Form1 Procedure ACTIVATE  [Link]=.f. 


[Link]=.f.  [Link]=.f. 
[Link]=.f.  [Link]() 
[Link]=.f.  [Link]() 
[Link]=.f.  RETURN 
[Link]=.t. 
[Link]=.f.  h.  Object PERIKSA Procedure CLICK 
[Link]=.f.  if empty([Link]) 
[Link]=.f.  messagebox("Kode Barang Harus Diisi !",0,; 
[Link]=.t.  "Perhatian...!") 
[Link](.t.)  [Link] 
[Link](.f.)  return 
thisform.aktif1(.f.)  endif 
thisform.aktif2(.f.)  if left([Link],1)#"B" .and. ; 
thisform.aktif3(.f.)  left([Link],1)#"S" 
RETURN  messagebox("Kode Barang harus diawali hurup B ; 
untuk barang bubutan "+CHR(13)+"dan Hurup S ; 
k.  Object TAMBAH Procedure CLICK  untuk barang sparepart !",0,"Perhatian...!") 
public lnofak  [Link] 
[Link]  return 
select barang  ENDIF 
set order to tag namabrg  IF VAL(SUBSTR(TRIM([Link]),2,5))<1 
messagebox("Mulai karakter ke 2 hrs diisi dengan; 
sele nofakjual  no urut !",0+48,"Perhatian...") 
go bottom  [Link] 
if [Link]<>date()  RETURN 
dele all  ENDIF 
pack  IF LEN(TRIM([Link]))<6 
append blank  messagebox("Jumlah Kode harus 6 character !",0+48,; 
lnofak=1  "Perhatian...") 
else  [Link] 
lnofak=[Link]+1  RETURN 
endif  ENDIF 
tgl=day(date())  SELECT BARANG 
bln=month(date())  if seek([Link]) 
th=year(date())  [Link]() 
[Link]=ltrim(str(tgl,2))+ltrim(str(bln,2))+;  [Link]() 
ltrim(right(str(th),2))+alltrim(str(lnofak,4))  [Link]() 
sele tmpjual  jawab=messagebox("Mau Diperbaiki ?",4+32+256,; 
SET DELETED on  "Kode Tersebut Sudah Terpakai...") 
DELETE all  if jawab =6
52  69 

[Link]()  vhargadsr=0 
[Link]()  endif 
[Link]=.f.  select tmpjual 
[Link]=.t.  REPLACE namabrg with vnamabrg 
[Link]=.t.  REPLACE hargadsr with vhargadsr 
[Link]=.f.  REPLACE hrgjual WITH jumlah/qty 
[Link]=.f.  skip 
[Link]=.f.  enddo 
[Link]=.f.  REPLACE ALL NoFak WITH [Link] 
[Link]=.f.  REPLACE ALL tgltran WITH [Link] 
[Link]=.f.  REPLACE ALL Nopel WITH [Link] 
thisform.nontext1(.t.)  GO BOTTOM 
[Link](.f.)  REPLACE totjualsp with [Link] 
[Link]=.t.  REPLACE diskon with [Link] 
[Link]()  REPLACE bayar with [Link] 
return  REPLACE Piutang with [Link] 
else  [Link]=[Link] 
[Link]=.f.  [Link]=[Link] 
[Link]=.f.  [Link]=[Link] 
[Link]=.t.  [Link]=[Link] 
[Link]=.f.  [Link]=[Link] 
[Link]=.f.  GO TOP 
[Link]=.t.  [Link]() 
[Link]=.f.  [Link]=.t. 
[Link]=.f.  [Link]=.f. 
[Link]=.t.  [Link]=.f. 
thisform.nontext1(.f.)  [Link]=.f. 
[Link](.t.)  [Link]=.t. 
[Link]()  [Link]=.f. 
[Link]()  [Link]=.t. 
[Link]=.f.  [Link]=.t. 
return  [Link](.t.) 
endif  [Link](.f.) 
else  thisform.aktif1(.f.) 
[Link]=.f.  thisform.aktif2(.f.) 
[Link]=.f.  thisform.aktif3(.f.) 
[Link]=.t.  [Link]=.f. 
[Link]=.f.  RETURN
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
68  53 

h.  Object Form1 Procedure KOSONGKAN  [Link]=.f. 


[Link]=""  [Link]=.f. 
[Link]=0  thisform.nontext1(.t.) 
[Link]=""  [Link](.f.) 
[Link]=0  [Link]() 
[Link]=0  [Link]() 
[Link]=""  [Link]=.f. 
[Link]=""  endif 
[Link]=""  RETURN 
[Link]=0 
[Link]=0 
[Link]=0 
RETURN  i.  Object SIMPAN Procedure CLICK 
IF EMPTY([Link]) .or. ; 
i.  Object Form1 Procedure TAMPILKAN  EMPTY([Link]) .or. ; 
select faktur  EMPTY([Link]) .or. ; 
[Link]=[Link]  EMPTY([Link]) 
[Link]=[Link]  messagebox("Isi data dengan lengkap !",0,; 
[Link]=[Link]  "Perhatian...") 
[Link]=[Link]  [Link]() 
[Link]=[Link]  RETURN 
[Link]=[Link]  endif 
[Link]=[Link]  SELECT BARANG 
select pelanggan  locate for namabrg=trim([Link]) 
locate for nopel=[Link]  if found() 
[Link]=[Link]  messagebox("Nama Barang Ada Yang Sama !",0,; 
[Link]=[Link]  "Penyimpanan tidak bisa dilakukan") 
select tmpjual  [Link]() 
dele all  return 
set dele on  endif 
appe from penjualan for nofak=[Link]  locate for kodebrg=space(6) 
go top  if ! found() 
do while ! eof()  append blank 
select barang  endif 
locate for kodebrg=[Link]  repl kodebrg with [Link] 
IF FOUND()  repl namabrg with [Link] 
vnamabrg=[Link]  repl stock with [Link] 
vhargadsr=[Link]  repl stockmin with [Link] 
ELSE  repl hargadsr with [Link] 
vnamabrg=""  repl hargajual with [Link]
54  67 

[Link]()  b.  Object Form1 Procedure UNLOAD 


[Link]()  close index 
messagebox("Penyimpanan data sudah dilakukan !",0,;  close data 
"Perhatian...")  return 
[Link]=.t. 
[Link]=.f.  c.  Object Form1 Procedure AKTIF 
[Link]=.f.  PARAMETERS x 
[Link]=.t.  [Link]=x 
[Link]=.f.  [Link]=x 
[Link]=.f.  [Link]=x 
[Link]=.t.  RETURN 
[Link]=.t. 
[Link]=.f.  d.  Object Form1 Procedure AKTIF1 
thisform.nontext1(.f.)  PARAMETERS y 
[Link](.t.)  [Link]=y 
[Link]=.t.  [Link]=y 
RETURN  RETURN 

j.  Object BATAL Procedure CLICK  e.  Object Form1 Procedure AKTIF2 


[Link]  PARAMETERS Z 
[Link]  [Link]=z 
SELECT barang  [Link]=z 
LOCATE FOR kodebrg=TRIM([Link])  [Link]=z 
IF FOUND()  [Link]=z 
vstock=[Link]  RETURN 
vhargadsr=[Link] 
ELSE  f.  Object Form1 Procedure AKTIF3 
vstock=0  PARAMETERS r 
vhargadsr=0  [Link]=r 
ENDIF  [Link]=r 
[Link]=.f.  [Link]=r 
thisform.nontext1(.f.)  RETURN 
[Link](.t.) 
[Link]=.t.  g.  Object Form1 Procedure KENDALI 
[Link]=.t.  PARAMETERS s 
[Link]=.f.  [Link]=s 
[Link]=.f.  [Link]=s 
[Link]=.f.  [Link]=s 
[Link]=.f.  [Link]=s 
[Link]=.f.  RETURN
[Link]=.f. 
66  55 

use in pelanggan  [Link]=.t. 
endif  [Link]() 
if used("faktur")  [Link]() 
use in faktur  RETURN 
endif 
if used("penjualan")  k.  Object HAPUS Procedure CLICK 
use in penjualan  SELECT PENJUALAN 
endif  LOCATE FOR KODEBRG=TRIM([Link]) 
if used("nofakjual")  IF FOUND() 
use in nofakjual  messagebox("Sorry Record ini tidak bisa dihapus ?"; 
ENDIF  ,0,"Barang tsb sudah digunakan dalam transaksi... ") 
if used("tmpbrg")  RETURN 
use in tmpbrg  ENDIF 
ENDIF  SELECT barang 
if used("tmpjual")  LOCATE FOR KODEBRG=TRIM([Link]) 
use in tmpjual  ln=RECNO() 
ENDIF  ljawab=messagebox("Anda Yakin ?",4+32+512,; 
select 1  "Record ini mau dihapus !") 
use barang  if ljawab=6 
set order to tag kodebrg  DELETE FOR KODEBRG=TRIM([Link]) 
set order to tag namabrg  set dele on 
select 2  ENDIF 
use pelanggan  goto ln 
set order to tag nopel  [Link]() 
set order to tag namapel  [Link]() 
select 3  RETURN 
use faktur 
set order to tag nofak  l.  Object KELUAR Procedure CLICK 
select 4  jawab=messagebox("Anda Yakin ?",4+32,; 
use penjualan  "Mau Keluar dari Entry Data...") 
set order to tag nofak  if jawab=6 
select 5  SELECT BARANG 
use nofakjual  set dele off 
select 6  PACK 
USE tmpbrg  [Link]() 
SELECT 7  endif 
USE tmpjual  RETURN 
RETURN 
m.  Object LIHAT Procedure CLICK 
DO FORM d:\SIPB\Prg\[Link] 
RETURN
56  65 

n.  Object PERBAIKI Procedure CLICK  10.2  Membuat Form Transaksi Penjualan 


[Link]=.f. 
[Link]=.t.  1.  Buatkan Form Kelola Data Barang dengan disain seperti pada Gambar  9.2.1: 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
thisform.nontext1(.t.) 
[Link](.f.) 
[Link]() 
[Link]=.f. 
RETURN 

o.  Object UD Procedure CLICK 


jawab=messagebox("Mau Memperbaiki Data Sebelumnya ?",; 
4+32,"Perhatian...!") 
if jawab=6 
SELECT BARANG 
LOCATE FOR kodebrg=TRIM([Link]) 
IF FOUND() 
repl namabrg with [Link] 
repl stock with [Link] 
repl stockmin with [Link] 
repl hargadsr with [Link] 
repl hargajual with [Link] 
ENDIF  10.3  Listing Program Transaksi Penjualan 
ELSE 
[Link]  a.  Object Form1 Procedure LOAD 
[Link]  close index 
SELECT barang  close data 
LOCATE FOR kodebrg=TRIM([Link])  set date british 
IF FOUND()  set cent on 
vstock=[Link]  set defa to d:\SIPB\data 
vhargadsr=[Link]  if used("barang") 
ENDIF  use in barang 
ENDIF  endif 
[Link]=.t.  if used("pelanggan")
64  57 

X. Praktek Visual FoxPro X  [Link]=.f. 


[Link]=.f. 
[Link]=.t. 
Materi :  [Link]=.f. 
1. Membuat Temporary File  [Link]=.f. 
2. Membuat File Transaksi Penjualan  [Link]=.t. 
[Link]=.t. 
[Link]=.f. 
10.1  Membuat Temporary File  thisform.nontext1(.f.) 
[Link](.t.) 
1.  Buatkan Tabel TMPJUAL pada Free Table dengan struktu file sbb :  [Link]() 
[Link]=.t. 
RETURN 

p.  Object PERTAMA Procedure CLICK 


SELECT BARANG 
set order to 
go top 
if eof() 
messagebox("Tidak ada 
record...!",0,"Perhatian...!") 
[Link]() 
return 
ENDIF 
set order to tag kodebrg 
[Link]() 
[Link]() 
RETURN 

q.  Object SELEBUMNYA Procedure CLICK 


SELECT BARANG 
2.  Buatkan Tabel NoFakJual pada Free Table dengan struktu file sbb :  set order to 
skip ­1 
if bof() 
go top 
endif 
set order to tag kodebrg 
[Link]() 
[Link]() 
RETURN
58  63 

r.  Object BERIKUTNYA Procedure CLICK  ENDDO 


SELECT BARANG  REPORT FORM d:\SIPB\Prg\LAPBRGSP Preview 
set order to  ELSE 
skip  MESSAGEBOX("Pilih salah satu Jenis Barang yang mau ditampilkan !",; 
0,"Perhatian...!") 
if bof() 
go bottom  RETURN 
endif  ENDIF 
set order to tag kodebrg  ENDIF 
[Link]  RETURN 
[Link] 
RETURN 
t.  Object TERAKHIR Procedure CLICK  9.3  Tugas 9 
SELECT BARANG 
set order to  1.  Buatkan Report Daftar Pelanggan dengan disain seperti pada gambar 9.3.1 : 
go bottom 
if eof() 
messagebox("Tidak ada record...!",0,"Perhatian...!") 
[Link]() 
return 
ENDIF 
set order to tag kodebrg 
[Link]() 
[Link]() 
RETURN 

u.  Object GRID1 Procedure AfterRowColChange 


LPARAMETERS nColIndex 
[Link]=.t. 
[Link]=.t. 
[Link]=.f. 
[Link]=.f. 
[Link]=.f. 
thisform.nontext1(.f.) 
[Link](.t.) 
[Link]=.t.  Gambar 9.3.1 Report Daftar Pelanggan
[Link]=.f. 
[Link]=.t. 
[Link]=.t. 
[Link]=.t. 
[Link]() 
RETURN 
62  59 

8.3  Tugas 8 
1.  Buatkan Form Untuk Mengelola Data Pelanggan dengan disain seperti pada Gambar 
8.3.1. 

Gambar 9.2.1 Form LIHATBRG 

b.  Object  KELUAR Procedure CLICK 
[Link] 

c.  Object  CETAK Procedure CLICK 
SELECT tmpbrg 
DELETE ALL 
PACK 
IF [Link]=1 
APPEND FROM d:\SIPB\data\[Link] for LEFT(kodebrg,1)="B" 
SET ORDER TO TAG NAMABRG 
GO TOP 
n=1 
DO WHILE ! EOF() 
REPLACE NO WITH n 
Gambar 8.3.1  Disain Form Kelola Data Pelanggan
n=n+1 
SKIP 
ENDDO 
REPORT FORM d:\SIPB\Prg\LAPBUBUT Preview 
ELSE 
IF [Link]=2 
APPEND from d:\SIPB\data\[Link] for LEFT(kodebrg,1)="S" 
SET ORDER TO TAG NAMABRG 
GO TOP 
n=1 
DO WHILE ! EOF() 
REPLACE NO WITH n 
n=n+1 
SKIP 
60  61 

IX. Praktek Visual FoxPro IX  Stoct Minim  : [Link], 


Format :  Format Expression  : 9,999 
Type  : Character 
Materi :  Aligment  : Right 
1. Membuat File Report Barang  Harga Satuan  : [Link], 
2. Membat Form untuk memfilter Jenis Barang  Format :  Format Expression  : 99,999,999 
Type  : Character 
9.1  Membuat Report  Aligment  : Right 
Jumlah Harga  : [Link]*[Link], 
1.  Buatkan Report untuk menampilkan Daftar Persediaan Barang Sparepart. Dengan  Format :  Format Expression  : 99,999,999 
disain sbb.:  Type  : Character 
Aligment  : Right 
Pada Baris Page Footer : 
Halaman  : alltrim(str(_Pageno)) 
Jumlah Harga  : [Link]*[Link], 
Format :  Format Expression  : 999,999,999 
Type  : Character 
Aligment  : Right 
Calculate :  Calculation Type  : Sum 
Reset Based On  : Page 
Pada Baris Summary : 
Jumlah Harga  : [Link]*[Link], 
Format :  Format Expression  : 999,999,999 
Type  : Character 
Aligment  : Right 
Calculate :  Calculation Type  : Sum 
Reset Based On  : Report 

2.  Simpan Report tersebut dengan nama File LAPBRGSP. 


3.  Save As Report tersebut dengan nama File LAPBUBUT. 
4.  Ganji judul Report Menjadi DAFTAR PERSEDIAAN BARANG BUBUTAN. 
Gambar 9.1.1 Report Daftar Persediaan Barang Sparepart 
Isi TextBox : 
No.  : [Link]  9.2  Membuat Form untuk menampilkan Report 
Kode Barang  : [Link] 
Nama Barang  : [Link]  1.  Buatkan Form dengan disain seperti pada gambar 9.2.1 : 
Jumlah Unit  : [Link],  2.  Isi Procedur Program : 
Format :  Format Expression  : 9,999  a.  Object  Form1 Procedure LOAD 
Type  : Character  SELECT BARANG
Aligment  : Right 

Anda mungkin juga menyukai