You are on page 1of 60

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

  ditemukan atau tidak.text2.  Namun. berarti data tersebut tidak ditemukan.  USE MK.  .text3.  tentu  saja  data  untuk  pencarian  record  harus  sama  dengan  field  d.  21.  Pada baris Picture.  Nilai  Akhir  dan  Keterangan  ?FOUND()  adalah  perintah  untuk  mendeteksi/memeriksa  apakah  data  yang  dicari  dengan menggunakan Text Box.3. Bentuk pencarian dengan SEEK adalah sbb.  kita  perlu  memperhatikan  efek  dari  keadaan  SET  EXACT. berarti data ditemukan.  Pilih object Form pada jendela properties  digunakan.value="Lulus"  else  thisform.  Munculkan Jendela Properties dengan meng­klik kanan pada form kosong  b.value="Gagal"  endif  return  . 4  117  2.  Pada baris caption. ketik PERHITUNGAN HASIL SELEKSI  kunci.  Membuat Control Question dan Field Entry  SET ORDER TO TAG KODEMK  a.  Mengisi Entry Field dengan Formula  a.:  e.  Pilih dan klik Properties  Pencarian  suatu  record  tertentu  dapat  dilakukan  dengan  cepat  seandainya  file  indeks  c. Gambar 1.  Nilai  Akhir.text3.  Hasilnya seperti pada gambar 1.  Buatkan  Field  Entry  untuk  meng­input  Nama.F.2.  Buatkan  Questin  Nama.  Ketik Procedure berikut :  if thisform.3  Form Perhitungan Hasil Seleksi I  4.T.  Cari dan pilih Procedure InteractiveChange  c.  Bila  SET  EXACT  dalam  keadaan ON berarti mecari data yang sama persis dengan yang dituliskan dalam SEEK.  sedangkan bila SET EXACT dalam keadaan OFF.  Memberikan Judul Form dan Gambar Latar Form  20.  Double klik Control Text2  b. sedangkan jika hasilnya  d.  Munculkan toolbar Form Controler Toolbar dari menu View  SEEK “MK102­202”  b.  Pencarian Record dengan SEEK / FIND  a.DBF  3. ini bisa berarti mencari yang hurup  awalnya seperti yang dituliskan dalam SEEK. Bila hasilnya .value>=60  thisform.2.  Pencarian secara Eksak  Bila kita bermaksud mencari suatu data bertipe karakter pada field yang telah diindeks. pilih gambar latar yang dikehendaki.  dan  Keterangan  dengan  menggunakan  ?FOUND()  Label dari Form Controler Toolbar  c.

  19.  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. kita tidak dapat mengubah kata Yes menjadi Ya.1  Form Perhitungan Hasil Seleksi II .  angka  mutu  dan  hurup  mutu  dengan  ketentuan sbb.  Indeks  pada  tabel  berguna  untuk  mempercepat  pencarian  suatu  data. indeks membuat dapat disajikan secara  logika (tidak secara fisik).  Kecepatan  pencarian data berdasarkan indeks akan terasa sekali jika jumlah data sangat banyak.:  NA  = (UTS + UAS * 2 + TGS)/4  NA  AM  HM  i.3.5)  1. dari Z ke A). baik secara urut naik (ascending.  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.  Gambar 1.1. 3.  Indeks  bisa  dibuat  dengan  menggunakan  perintah  MODY  atau  MODIFY  STRUCTURE pada jendela command.  Membuat Indeks  1. Kotak Dialog dengan  dua baris pesan.116  5  Amati contoh perintah berikut :  5.  Uji Form dengan meng­klik icon Run  pada toolbar Standard  Hasilnya sebagai berikut (lihat gambar 3. Misalnya.3.  Buatkan Form seperti pada gambar 1.  Selain untuk keperluan mencari suatu data. <nama_indeks> adalah field yang dijadikan sebagai indeks.3  Latihan Membuat Form  Gbr.  Simpan  Form  dengan  nama  file  HasilSeleksi1  (sebaiknya  nama  file  tidak  pakai  sepasi)  MessageBox(“Pesan baris pertama”+CHR(13)+CHR(10)+”Pesan baris kedua”.  Buatkan  form  untuk  mencari  nilai  akhir.  Kasus 1.5.:  SET ORDER TO TAG<nama_indeks>  Dalam hal ini. ;  “Judul”. dari A ke Z) ataupun urut  turun (descending.3. 1+32+256)  6.  41  ­  55  1  D  0  ­  40  0  E  18.

text2.  Uji Form.text3.6.  Buatkan Tombol Tekan Checker          dengan fasilitas Command Button dari Form  Jawaban = MessageBox(“Pesan”.value=vam  thisform. Selanjutnya kita tinggal memeriksa isi variabel tersebut.  Caranya.value+thisform.  if vna>=86  vam=4  Tabel 3. mencantumkan nilai yang mewakili tombol yang dipilih oleh pemakai.value=vhm  h.value)/4  Tabel  3.  kode  dari  tombol  bersangkutan  akan  diletakan ke variabel jawaban.text7.  3.text5.  local vna  vna=(thisform.  CHR(13)  5. 1+32+256)  Controler Toolbar.  vhm="D"  else  Contoh dengan IF :  vam=0  vhm="D"  Jawaban = MessageBox(“Pesan”.  adalah  kode  carriage  return  dan  CHR(10)  adalah  kode  linefeed.value*2+thisform.  Kedua  kode  tersebut  secara berurutan biasa dipakai untuk membuat baris baru.  Informasi lebih dari satu baris  retu  Untuk  mengatur  informasi  yang  ditampilkan  pada  kotak  dialog  yang  terdiri  lebih  dari  4.  kita  bisa  menggunakan  pernyataan  IF ataupun  vam=1  DO CASE. “Judul”. 6  115  2.text6.  Simpan Form dengan nama File HasilSeleksi2  satu  baris.  kita  perlu  menyisipkan  kode  CHR(13)  dan  CHR(10).text4. kemudian berinama Proses. 1+32+256)  endif  IF Jawaban = 1 && Berarti tombol tombol Okyang dipilih  endif  * Memproses pesan  endif  ELSE  endif  * Membatalkan perintah  thisform.  Isikan Procedure Click dari Control Proses berikut :  Setelah  pemakai  meng­klik  salah  satu  tombol.value=vna  ENDIF  thisform. . “Judul”. 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.6.

  Kasus Tugas 1 :  Buatkan  form  untuk  menghitung  gaji  pokok.4.Kotak Dialog dengan  tombol kedua sebagai  default  Gambar 1. :  f.  gaji  lembur  dan  jumlah  gaji  dengan  16  Merah  ketentuan sbb :  ­  Jumlah jam kerja pokok = 8 jam  32  Hijau  ­  Jika bekerja lebih dari 8 jam.  Buatkan Form seperti pada gambar 1.  Nilai untuk menentukan ikon kotak dialog  1.  Sebagai  contoh :  .  Mendeteksi Tombol yang diklik oleh Pemakai  Untuk  mengetahui  tombol  pada  kotak  dialog  yang  ditekan  oleh  pemakai.5.4)  MessageBox(“Pesan”.  kita  bisa  menambahkan  angka­angka  berikut  ke  argumen  ketiga pada MessageBox. 1+32+256)  Gbr 3.4. ”Judul”.  Menentukan Tombol Default  Bila  kotak  dialog  terdiri  lebih  dari  sebuah  tombol­tekan. maka selebihnya dihitung lembur  ­  Tarip lembur = 150% * Gaji Per Jam  48  Kuning  ­  Gaji Total = Gaji Pokok + Gaji Lembur  64  Biru  2.1  Form Perhitungan Upah Harian g.4  Tugas 1  Nilai Ikon  Gambar  Warna Ikon  1.  maka  tombol  terkiri  akan  dijadikan sebagai default. Seandainya kita menghendaki lain (bukan tombol terkiri yang  dijadikan  sebagai  default).  nilai  pengembalian  dari  MessageBox  perlu  diletakan  ke  variabel  terlebih  dahulu.1.4. ·  256 untuk menjadikan tombol kedua sebagai default ·  512 untuk menjadikan tombol pertama sebagai default  Berikut adalah contoh hasil dari perintah (lihat gambar 3.114  7  Tabel 3.

  Berikut  adalah  hasil  dari  perintah  MessageBox(“Pesan”) (lihat gambar 3. seperti pada gambar 2.. :  1.3)  Tabel 3. (Gambar 3.  maka  yang  Materi :  ditampilkan adalah kotak dialog yang hanya berisi tombol tekan OK.  Penggunaan Perintah Do Case  Akan memberikan hasil sbb. Praktek Visual FoxPro II  c.2.  Cari Folder nama masing­masing di drive O:\AFOX  4. Kotak Dialog tanpa argumen  2.1.  MESSAGEBOX Tanpa Argumen Ketiga  Bila  memanggil  MessageBox  tanpa  menyertakan  argumen  ketiga.5. maka lakukan langkah sbb.  Kita  dapat  menyertakan  ikon  dengan  menambahkan  nilai­nilai  yang  tercantum pada Tabel 3.  judul  kotak  dialog  diperlakukan  seperti  jika  judul  tidak  diberikan.  Pilih dan Double Klik file project PRAKVFP.  Gambar 2. “Judul”)  3.1.  MESSAGEBOX Tanpa Argumen Kedua dan Ketiga  Apabila   rgument  kedua  dan  ketiga  MessageBox  tidak disertakan.  Penggunaan Perintah IF  4.  Tahap pembuatan form  2.2)  5.1  d.  Menyimpan.  Klik menu File  2.1  Membuka File Project  ketiga Untuk  membuka  File  Project  PRAKVFP  yang  sudah  dibuat  pada  praktek  sebelumnya.3.  Menentukan Ikon pada Kotak Dialog  MessageBox  telah  menyediakan  empat  macam  ikon  yang  bisa  kita  tampilkan  pada  kotak  dialog.  Penggunaan fasilitas Option Group & Check Box  MessageBox(“Pesan”. Contohnya :  1.1   Kotak Dialog Open File  . Kotak Dialog tanpa argumen  kedua dan ketiga  e. 8  113  II.  Klik Open  3. Menguji dan Menutup form  Tabel 3.

  5  Retry.  2.  Klik page Documents pada Project Manager  b. Ignore  Gambar 2. pilih gambar latar yang dikehendaki.  Golongan.  Klik tombol New  d.  Membuat Form Kosong  Tipe Kotak  Bentuk  yang tersedia  a.  Pilih dan klik Properties  3  Yes.  Membuat Control Question dan Field Entry  a.  Munculkan toolbar Form Controler Toolbar dari menu View  4  Yes. ketik ENTRY GAJI KARYAWAN  e.  Buatkan  Field  Entry  untuk  meng­input  Nama  Karyawan.  Jumlah  Anak.  Pada baris caption. 2. Cancel  c.2. .112  9  Tabel 3.  Status.2  Membuat File Form Baru  Tombol­tombol  1.  Munculkan Jendela Properties dengan meng­klik kanan pada form kosong  b.  Golongan. Retry.  Jumlah  Anak.  Pada baris Picture.  Tunjangan  Anak  dan  Gaji  Total  dengan  menggunakan Label dari Form Controler Toolbar  c.  Pilih dan Klik object Form  c. Tunjangan Anak dan Gaji Total dengan  menggunakan Text Box.  3.  Klik pada form sebelah kanan Status.  Tunjangan  Istri.  Buatkan  Question  Nama  Karyawan. Cancel  4. kemudian berinama ST pada properties. No  b. Gaji Pokok.1)  0  OK  1  OK.  Gaji  Pokok.  Memberikan Judul Form dan Gambar Latar Form  a. Nilai yang menentukan tombol­tekan yang ditampilkan pada kotak dialog.  Cari dan Klik control Option Group pada Form Control Toolbar  b.2. No.4. Tunjangan Istri.1  Kotak Dialog New Form  2.  Pilih dan klik tombol New Form pada kotak dialog New Form (gb. Cancel  2  Abort.  Membuat Option Group  a.  Pilih object Form pada jendela properties  d.

 string “Terima Kasih” merupakan pesan yang ditampilkan pada kotak  dialog.  Mengisi Control Spinner Gol dengan Formula  a.  Hasilnya adalah sebagai berikut (Gambar 3.  Gambar 3.2  Form Entry Gaji Karyawan  5. string karakter “Selesai” sebagai judul pada kotak dialog. 10  111  c.2. kemudian ganti dengan Belum Kawin  f.  Nilai untuk menentukan Jenis Kotak Dialog  Nilai  dasar  yang  digunakan  untuk  menentukan  jenis  kotak  dialog  ada  enam  macam.  Cari dan pilih Procedure InteractiveChange  c.2.  dengan  cara  klik  kanan  option  group  kemudian  pilih edit.  Ganti  Option1  dengan  Kawin.  e.  Hasilnya lihat gambar  2.  Ketik Procedure berikut :  gol=thisform. dan 1+32 menyatakan  jenis kotak dialog (termasuk ikon yang ditampilkan).value  do case  case gol=1  gapok=200000  case gol=2  gapok=400000  case gol=3  . kemudian pada baris Caption di jendela properties ketik Kawin. Dalam hal ini angka 1 menyatakan  bahwa kotak dialog menampilkan dua buah tombol tekan.  Klik Option1.1)  d.  Klik Option2. sedangkan 32 menyatakan jenis ikon yang ditampilkan  b.4.  sebagaimana tercantum pada tabel 3.2.gol.  Double klik Control Gol  b. yaitu tombol  dan tombol  .1 Kotak Dialog  Pada contoh ini. Gambar 2.

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

 1/10 * TotalPembelian.T.  atau  nilai  <ekspresi_2> jika <kondisi> bernilai .  Buatkan Option Group. kemudian berinama PIL.  Hasil  berupa  .  Format  pernyataan  ini  adalah : .3.OR. berikut :  15. <ekspresi_2>  .<ekspresi_1>.  atas  dan  kiri  atas  option  group  (seperti  pada  gambar  2.  Buatkan  Image  untuk  menampilkan  gambar.1  Form PilihGambar  Dapat disederhanakan menjadi :  2.  Fungsi IIF  Fungsi bernama IIF() juga dapat bertindak seperti perintah IF. Format fungsi ini adalah :  IIF(<kondisi>.  Simpan  Form  dengan  nama  file  HitungGaji  (sebaiknya  nama  file  tidak  pakai  .  Buatkan  CheckBox  Kiri  Atas  kemudian  berinama  kiri.F.AND.F.  CheckBox  Tengah  Atas  kemudian berinama tengah.  ELSEIF. 12  109  b. jika <ekspresi> bernilai .NOT.  9. 0)  4.T.  Buatkan Form seperti pada gambar 2..  Sebagai contoh :  IF TotalPembelian >= 100000  Diskon = 1/10 * TotalPembelian  ELSE Diskon = 0  ENDIF  Gambar 2.OR.  “Tidak”  Hasil .T. jika <ekspresi> bernilai . <ekspresi>  sepasi)  Operator  .  yang  diletakan  disebelah  kanan. dan CheckBox Kanan Atas kemudian berinama kanan)  Pernyataan  DO  CASE  merupakan  alternatif  dari  IF.  Cari dan pilih Procedure InteractiveChange  c.  2.NOT.  Uji Form dengan meng­klik icon Run  pada toolbar Standard  <ekspresi_1> .3.  Isi  Procedure  InteractiveChange  object  Text2  dicopy  dari  Procedure  Tabel 3.  Hasil .  Ganti Option1 s/d Option6 dengan Gambar1 s/d Gambar6  Diskon = IIF(TotalPembelian >= 100000.  kanan  atas.T.1.  Pernyataan DO CASE  5.F.1)  16. Operator Logika  Interactivechange object Gol  Operator  Keterangan  Format  8.  hanya  jika  kedua  <ekspresi>  “Dan”  bernilai .T.T..AND.  sebanya  4  buah.<ekspresi_2>)  Fungsi  IIF  memberikan  nilai  <ekspresi_1>  jika  <kondisi>  bernilai  . jika ada <ekspresi> yang bernilai .3.  “Atau”  Hasil berupa . Button Count­nya ganti 6  3. <ekspresi_2>  Operator  .3  Membuat Form PilihGambar  Operator  <ekspresi_1> .T.  1.3.

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

  (salah).gbkanan.image1.  Ekspresi yang dilibatkan oleh operator­operator ini dapat berupa: ·  Nama Field ·  Variabel Memori ·  Fungsi.  sebagaimana  operator  yang  lain. Simpan Form dengan nama File PilihGB  11.value=1  thisform. juga terdapat bentuk seperti berikut :  if thisform.1.picture=""  ELSE endif  <pernyataan­pernyataan_2>  ENDIF  10.    Operator­operator  ini.  Operasi Relasi  Operasi relasi adalah operator yang digunakan untuk membandingkan dua buah ekspresi  bertipe  data  sama  dan  menghasilkan  nilai  .4.  Pada bentuk ini.  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.F.picture  IF <kondisi>  else  <pernyataan­pernyataan_1>  thisform.4  Tugas 2  1.  berupa  simbol atau kata kunci yang melaksanakan suatu operasi terhadap data atau ekspresi. Uji Form.T.kanan.4. ·  <pernyataan­pernyataan_2> dijalankan jika <kondisi> bernilai . c=0  .  (benar)  atau  .T. :  a=0  ·  Ekspresi tanggal  b=0  Visual FoxPro menyediakan sejumlah operator relasi seperti pada tebel 3.  Form Menghitung Angka  ·  Karakter ·  Numerik 2.1.  Formula / ketentuan perhitungan adalah sbb.gbkanan.picture=thisform.1  14. 14  107  Selain bentuk di atas.F.  2. ataupun ·  Konstantan  a. ·  <pernyataan­pernyataan_1> dijalankan jika <kondisi>  bernilai .  Tipe  data  yang  dapat dikenakan pada operator ini meliputi : Gambar 2.  Buatkan Form seperti pada gambar 2.

 bentuk pernyataan IF adalah sebagai berikut :  IF <kondisi>  <pernyataan­pernyataan>  ENDIF  Dalam  hal  ini.  Operator  .  Selamat mencoba ! tidak bernilai .  <pernyataan­pernyataan>  tidak  akan dijalankan.T. maka formulanya :  Pada  contoh  ini.T.  Apabila  <kondisi>  bernilai  .  merupakan  salah  satu  operator  logika  pada  Visual  FoxPro.  tindakan  memindahkan  pointer  record  ke  record  sebelumnya  hanya  Hasil = a ­ b ­ c  dilakukan jika pointer record tidak berada pada awal file (BOF). maka formulanya :  sebelumnya. 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.NOT.  yang  bernilai  .  Jika option Kali dipilih.NOT.  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.  <kondisi>  berupa  ekspresi  logika. BOF()  Jika yang check box hanya 100 dan 2. maka :  Jika yang check box hanya 100 dan 10. maka formulanya  Hasil = b * c  IF .  .106  15  13..  Secara umum. maka formulanya  Hasil = a * b * c  Pada  pernyataan  di  atas. atau dengan kata lain “jika pointer record tidak sedang menunjuk BOF  (awal file).  berarti  “tidak”.NOT. IF  Jika Check box 10 dipilih  merupakan perintah yang berguna dalam mengambila suatu keputusan.  Sebaiknya.  jika  <kondisi>  bernilai  .NOT.T.  (salah). maka formulanya  SKIP –1  Hasil = a * c  ENDIF  Jika yang check box 100.F.  Ekspresi  .F..  (benar)  atau  .  . “  Hasil = a + b + c  Jika option Kurang dipilih.  Mengenal Pernyataan IF  Jika Check box 100 dipilih  a=100  Pernyataan IF merupakan perintah yang sering kali dilibatkan dalam penulisan kode.  BOF()  berarti  “jika  BOF()  3.  pindahkanlah  pointer record  ke  record  Jika option tambah dipilih. 10 dan 2.  maka  <pernyataan­pernyataan>  akan  dijalankan.

  Meletakan pointer record ke record yang dicari  Visual  FoxPro  juga  menyediakan  perintah  yang  berguna  untuk  mencari  suatu  record  Materi :  tertentu.  Untuk  mengtahui  yang  dicari  dengan  LOCATE  ketemu  atau  tidak.  3. Apabila hasil dari perintah LOCATE atau CONTINUE berupa :  1.F.  2.1.  Penggunaan fasilitas Olecontrol  3.  Klik Open  End of Locate scope. Fungsi ini memberikan nilai balik berupa : ·  .  kita  bisa  menggunakan fungsi FOUND(). seperti pada gambar 3..  Tahap pembuatan form  Kuliah­nya berisi COBOL .1.  Membuat Form Kosong  a.  BOF  Record 1  Record 2  Record 3  Record 4  Record N  EOF  Gambar 3. :  CONTINUE.2  Aplikasi DO WHILE  1. 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).  Misalnya.1  Membuka File Project  Untuk  membuka  File  Project  PRAKVFP  yang  sudah  dibuat  pada  praktek  Untuk  mencari  record  berikutnya  yang  cocok. 16  105  III.T.  kita  cukup  memberikan  perintah  sebelumnya. jika data yang dicari ketemu ·  .  Penggunaan Perintah FOR NEXT  5.  Pilih dan Double Klik file project PRAKVFP.  Menyimpan.  Klik menu File  2.  Penggunaan Perintah DO WHILE  LOCATE FOR NAMA_MK=”COBOL”  4. Menguji dan Menutup form  Dalam  hal  ini  LOCATE  adalah  perintah  un  tuk  mencari  suatu  record  dan  FOR  NAMA_MK=”COBOL” adalah kriteria pencarian.  perintah  untuk  menempatkan  pointer  record  yang  bagian  Mata  1. jika data yang dicari tidak ketemu  12.  3.1  Hal ini menandakan bahwa tidak ada lagi data yang cocok. Praktek Visual FoxPro III  11. maka lakukan langkah sbb.1   Kotak Dialog Open File  F F  Record maya  Record maya  di awal tabel  di akhir tabel 3.  Cari Folder nama masing­masing do drive O:\  4.  Awal File dan Akhir File  Secara logika.  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  MK.DBF  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 thisform.text1.value>0 .or. thisform.text2.value>0 .or. ; 
thisform.text3.value>0 
this.enabled=.f. 
a=thisform.text1.value 
b=thisform.text2.value 
c=thisform.text3.value 
do while a<=c 
thisform.text4.value=a 
a=a+b 
n=(100/c)*a 
Gambar 2a. Jendela Properties  if a<=c

  Jika  operator  menekan  suatu  tombol  yang  kita  3.  Perangkat untuk Pembuatan Program  local a.  Uji Form dengan meng­klik Run / !.or.value>0 .  Simpan dengan perintah Save As dan berinama URUTANGKA2  3.ctrl. ;  Bila bermaksud membuat suatu program dengan Visual FoxPro.  Double Click tombol Proses.  do while x<1000000  x=x+1  l.3  Aplikasi FOR NEXT  buatkan.  Perancangan  a.0. kemudian prosedurnya edit menjadi sbb.  Jendela Form  a=thisform. thisform.  Penulisan  kode  ini  dilakukan  dengan  menggunakan  editor  teks  yang  tersedia  pada  paket  visual  1. namun  paling  tidak melibatkan  a=a+b  sebuah  form.  a.text1.  perangkat yang tersedia dalam paket Viasual FoxPro. Step dan Stop harus diisi !".text2. :  4. c.enabled=.  maka  kode  yang  kita  buatkan  harus  menampilkan  suatu  tindakan.value=n  .  mula­mula  merancang  form  yang  dipakai  program.  Tahap penulisan kode  retu  Pada  tahap  pemrograman  visual. 20  101  thisform.value>0  tiga jendela berikut :  this.text2.text4. dan  this.text1.value  b.text3.  tidak  berlebihan  jika  form  dianggap  sebagai  tulang  n=(100/c)*a  punggung  aplikasi  Visual  FoxPro.value  c.value  for i=a to c step b  Form merupakan jendela yang akan muncul sebagai latar belakang dari tampilan suatu  thisform.value>0 . n.  Tahap Pembuatan Program  thisform.  2.  x=0  yang dipakai juga oleh field Memo.  Buka File Form URUTANGKA1  FoxPro.  Memo (binary)  enddo  else  messagebox("Start. yakni:  endif  a.  General  endif  Dipakai untuk menyimpan grafik.enabled=.  Jendela Form Control  b=thisform.  7.  Pada tahap penulisan kode.setfocus()  retu  Pembuatan program dengan Visual FoxPro selalu melalui dua tahap. i  if thisform.  Sebagai  gambaran.  Jendela Properties  c=thisform.  Simpan dan Uji Form  Pada  tahap  ini  dibuatkan  form  beserta  kontrol­kontrol  yang  diperlukan."Perhatian !")  3.  Character (Binary)  enddo  m.text3. b.value=n  k.  Itulah  sebabnya. thisform.f.  b. akan selalu melibatkan  thisform.  Simpan dengan nama file URUTANGKA1  form beserta kontrol­kontrol yang dilibatkan ditangani dengan menggunakan perangkat­  b.FPT.t.value=a  aplikasi.  Tahap pemrograman visual. Foxpro menyimpan field General dalam file .  Sebuah aplikasi  dapat memiliki  banyak  form.ctrl.text1.or. dituliskan kode­kode  yang dilekatkan pada kontrol­kontrol  yang  dipakai.  Formlah  yang  menjadi  antarmuka  dengan  pemakai  if a<=c  aplikasi.

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

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

OR. VAL(GABUNG)>0  HASIL=HASIL+"Milyar "  CASE ulang=2 . 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 .14.98  23  DO CASE  CASE ulang=1 .1)  if len(hasil)>1  hasil=hasil+"Rupiah "  endif  DO CASE  CASE VAL(SEN1)=0 . GABUNG="  1"  HASIL=HASIL+" "  ELSE  HASIL=HASIL+"Ribu "  ENDIF  ENDCASE  kesatu=kesatu+3  kedua=kedua+3  ketiga=ketiga+3  next ulang  sen1=substr(uang.AND. VAL(GABUNG)>0  IF GABUNG="001" .15.4.AND.1)  Gambar 13.1 Build Option  sen2=substr(uang. VAL(GABUNG)>0  HASIL=HASIL+"Juta "  CASE ulang=3 .AND.AND.

24  97  13.  seperti  pada  gambar  13.  thisform.  Uji Program di atas dengan form berikut :  1.WINDOWSTATE=2  retu  .  Procedure InteractiveChange pada Object Text1.text1.picture='D:\SIPB\Gb\LATAR1.  Klik kanan pada File Program SIPB.  Pilih dan klik option Program.3  Membuat File Program  4. adalah sbb.  Jalankan program dengan meng­klik tombol Run  13. kemudian pilih Set Mine  2.1. .:  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(thisform.  Klik page Code  2.  Simpan program dengan nama SIPB  5. kemudian klik tombol New  3.  Klik tombol Build  3.  Klik  Build  Action  :  Win32  executable  /  CIM  server  (exe).4.VISIBLE=.T.text2.4  Compiler File  1.mpr  READ EVENTS  QUIT  4.JPG'  ENDWITH  RELEASE ALL  DO d:\pembukuan\prg\menuutama.value)  .  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.value=a  .

  Buatkan Table pada Free Table dengan nama SEKOLAH.release()  endif  endif  7.value  4.release()  3.0.text1.or.  Object Batal Procedure Click  2.value) .text1. struktur table sbb :  thisform..  Membuat Table  thisform.0. struktur table sbb :  ..text1.  Buatkan Table dengan nama CASIS.text2.  Uji Form dengan mengklik icon Run / !."Perhatian.  Membuat Databse  4.MPR  thisform....  Buatkan Table pada Free Table dengan nama NODAF."Perhatian.  .!";  .  Buatkan Project File dengan nama PSB  EMPTY(thisform.  Simpan Form dengan nama File PASWORD  8. struktur table sbb :  if ! found()  messagebox("Maaf Password Tidak Dikenal.value  if ! found()  messagebox("Maaf User Id Anda Belum Terdaftar. ;  1.")  3..  Object Login Procedure Click  IF EMPTY(thisform."Perhatian.text2.  Object Form1 Procedure UNLOAD  IV.  Buatkan Database dengan nama PSB  messagebox("User Id & Password tidak boleh kosong!";  3. Praktek Visual FoxPro IV  close data  close index  RETURN  Materi :  1.!";  .text1..")  thisform.value)  2..0..  Membuat Form Transaksi Penerimaan Siswa Baru  retu  4.setfocus()  retu  else  set order to tag pswd  seek thisform.setfocus  RETURN  ENDIF  use pswd  set order to tag nmid  seek thisform.")  thisform. 96  25  3.setfocus()  Entry data sekolah sbb : retu  else  DO d:\sipb\prg\MENUuTAMA..1  Bahan Praktek 4  5.text2.

  c. klik menu Table.  Isi Pswd dengan kode sandi anda  2. desain form dapat dilihat pada gambar 4.value=""  IF USED("CaSis")  thisform.  Klik  Table  PSWD.1.  Setelah kebuka.. 26  95  5.text2.  Pbject FORM1 Procedure LOAD  Gambar 4.1 Form Kelola Pendaftaran Siswa  6.4.  Listing Program :  a.1.  Isi nmid dengan nama depan anda  e.text1.  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  thisform.  Buatkan Form seperti pada gambar 4.value=""  USE IN CaSis  RETURN ENDIF  .  kemudian  klik  tombol  Browse  yang  terletak  sebelah  kanannya. kemudian pilih dan klik Append New Record  (Ctrl + Y)  d.1  Gambar 4.  Buatkan Form dengan nama DAFTAR.4.  b.1.  Membuat Form untuk Login  1.1  Form Entry Login dan Password  SET DEFAULT TO d:\psb\data  SET DATE BRITISH  2.

Value=""  thisform.text2.text2. Simpan Menu dengan nama MenuUtama  thisform.Value=casis.2.Value=""  12. Buatkan Sub Menu Laporan Pembelian sbb.tgldaf.nama  thisform.  Membuat Table PSWD  e.text1.nilai  14.text1.tgldaf)  thisform.Value=0  RETURN  d.  Object FORM1 Procedure TAMPILKAN  thisform.  PARAMETERS X  thisform.  Object FORM1 Procedure AKTIFKAN  a. :  b.1.month=month(casis.text3.combo1.combo1.  Object FORM1 Procedure KOSONGKAN  thisform.year=year(casis.tgldaf)  13.2.nodaf  thisform. Menguji menu dengan mengklik tombol Run  thisform.tgldaf.asalsek  13.tgldaf)  thisform. Buatkan Sub Menu Laporan Penjualan 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. 94  27  10.enabled=X  thisform.  Object FORM1 Procedure UNLOAD  CLOSE DATABASES  CLOSE INDEXES  RETURN  c.text3.text3.Value=""  thisform.tgldaf.1  Struktur Table PSWD  .  Pada database SIPB buatkan table PSWD seperti pada gambar 13.Value=casis. Buatkan Sub Menu Service sbb :  thisform.2  Membuat Form Login  RETURN  1.text2.day=DAY(casis.enabled=X  thisform.combo1.Value=Casis.enabled=X  RETURN Gambar 13.Value=casis.

tgldaf.4).3))  ELSE  .berikutnya.Enabled=.  Buatkan Submenu Transaksi berikut :  thisform.keluar.perbaiki.tgldaf.f.  Object FORM1 Procedure KENDALI  PARAMETERS Y  thisform.f. lalu klik tombol Create dan buatkan SubMenu Master sbb:  thisform.f.kendali(.  thisform.f.Enabled=.Enabled=.day=DAY(DATE())  8.ud.)  Kemudian Klik Master. pilih Menu Bar  thisform.f.  Object TAMBAH Procedure CLICK  PUBLIC N  SELECT NODAF  GO bottom  IF EOF()  APPEND BLANK  n=1  9.month=month(DATE())  thisform.sebelumnya.hapus.f.  thisform.aktifkan(.tgldaf.Enabled=Y  RETURN  g.)  thisform.Enabled=.tgldaf.simpan.  thisform.t.Enabled=.year  th2=thisform.tambah.year+1  ta=RIGHT(STR(th1.4).Enabled=.batal.  thisform.Enabled=Y  thisform.tgldaf.2)  IF n<10  vno=ta+"00"+LTRIM(STR(n.t.Enabled=Y  thisform.Enabled=.Enabled=Y  thisform.  Object FORM1 Procedure ACTIVATE  7.  thisform.  Buatkan Sub Menu Laporan sbb.pertama.terakhir.year=year(DATE())  RETURN  h.  Pada kotak Menu level sebelah kanan.  thisform.2)+RIGHT(STR(th2.28  93  f. : ELSE  n=nodaf.t.no+1  ENDIF  th1=thisform.  thisform.kosongkan  thisform.

t..Value) .Value) .setfocus  RETURN  i.  Klik option menu kemudian klik tombol New  thisform.text2. ;  EMPTY(thisform..Enabled=.Value)  MESSAGEBOX("Isi data dengan lengkap !". ;  EMPTY(thisform.tambah.value=VNO  1.text2.Enabled=.perbaiki.or."Perhatian.Enabled=.1)  thisform.2.  thisform.Enabled=. 92  29  XIII.1  Kotak dialog project manager  thisform.f.  thisform..  Pilih dan klik tombol menu  thisform.Value) .text2.  Ketik menu berikut :  ENDIF  SELECT CaSis  LOCATE FOR Nama=TRIM(thisform.Enabled=.1.3))  ELSE  Materi :  vno=ta+LTRIM(STR(n.simpan.  thisform.  Klik File pada baris pertama  IF ! FOUND()  6.  thisform.Enabled=.0..f.  thisform.batal.  Klik page Other (lihat gambar 4.or.f.  Object SIMPAN Procedure CLICK  IF EMPTY(thisform.)  2. Praktek Visual FoxPro XIII  IF n<100  vno=ta+"0"+LTRIM(STR(n.")  thisform.text3.text3..text2. kemudian buatkan sub menu berikut :  APPEND BLANK  ENDIF .and.t.keluar.."Perhatian.SetFocus  RETURN  Gambar 13.".)  3.text1.f.  Klik tombol create.text2.Enabled=.kosongkan  thisform.")  Gambar 13.f.kendali(.1  Membuat Organisasi Menu  thisform.1.text4.3))  Membuat Menu Program  ENDIF  ENDIF  13.0.Value)  IF FOUND()  MESSAGEBOX("Maaf transaksi tidak dapat diproses !"+CHR(13)+;  "Data tersebut sudah tercatat. ;  AsalSek=TRIM(thisform.SetFocus  RETURN  4.aktifkan(.  thisform.2 Menu Utama  ENDIF  LOCATE FOR NoDaf=SPACE(7)  5.f.hapus.t.ud.  thisform.

f.  RETURN  Buatkan Report Laporan Harian pembelian (disain report mirip dengan Report Laporan  Harian Penjualan) j.f.tgldaf.f..Enabled=.3  Tugas 12  thisform.Enabled=.perbaiki.f.year  SELECT pelanggan  vtgl=LTRIM(STR(tgl.Enabled=.  thisform. kemudian jalankan form.tambah.  thisform.  thisform.".2))+"/"+STR(thn.f.  thisform.30  91  tgl=thisform.4)  SET ORDER TO TAG NOPEL  REPLACE tgldaf WITH CTOD(vtgl)  SELECT LAPJUAL  REPLACE NoDaf WITH thisform..  12.Value  ELSE  REPLACE nilai WITH thisform.keluar.)  thisform.Enabled=.hapus.  thisform.hapus.  3.  thisform..f.tgldaf.t.  thisform.month  APPEND FROM lapjual1 FOR LEFT(kodebrg.kendali(.tgldaf.Value  *repo form d:\SIPB\prg\lapharianBB preview  REPLACE asalsek WITH thisform.tambah.f.year=year(DATE())  RETURN  .text1.batal.refresh  SET RELATION TO NOPEL INTO PELANGGAN  MESSAGEBOX("Penyimpanan sudah dilakukan.tgldaf.kosongkan  thisform.t.t.t.1)='S'  SELECT NODAF  SELECT pelanggan  GO bottom  SET ORDER TO TAG NOPEL  REPLACE no WITH N  SELECT LAPJUAL  thisform.f.simpan.day=DAY(DATE())  thisform.batal.  Object BATAL Procedure CLICK  thisform.aktifkan(.0.day  SELECT LAPJUAL  bln=thisform.Enabled=.Enabled=.ud."Perhatian.")  repo form d:\SIPB\prg\laphariansp preview  thisform.)  thisform.kendali(.f.)  ENDIF  thisform.month=month(DATE())  thisform.t.aktifkan(.t.perbaiki.text3.Enabled=.text2.Enabled=.)  return  thisform.keluar.Value  SET RELATION TO NOPEL INTO PELANGGAN  REPLACE Nama WITH thisform.ud.1)='B'  thn=thisform.  thisform.tgldaf.t.Enabled=.t.2))+"/"+LTRIM(STR(bln.combo1..  thisform.  thisform.simpan.tgldaf.Enabled=.Enabled=.Enabled=.Enabled=.f.  thisform.Enabled=.Value  SELECT LAPJUAL  APPEND FROM lapjual1 FOR LEFT(kodebrg.  thisform.  Simpan Form dengan nama File LAPHARIANSP.

)  ENDIF  thisform.f.hapus.  ELSE  RETURN  vtotjualsp=0  vdiskon=0  l.)  vnamabrg=""  thisform.kdbrg.  IF FOUND()  thisform.Value  locate for kodebrg=lapjual1.  skip  thisform.Value  select barang  REPLACE asalsek WITH thisform.f.  select lapjual1  thisform.tgldaf.f.kodebrg  REPLACE nilai WITH thisform..2))+"/"+STR(thn.f..  repl namabrg with vnamabrg  thisform.Value  do while .hapus.f.Enabled=.ud.year  ENDDO  vtgl=LTRIM(STR(tgl.bayar  thisform.f.  Object UD Procedure CLICK  vbayar=0  jawab=MESSAGEBOX("Anda yakin mau memperbaiki data sebelumnya ?";  ENDIF  .text3.tambah.)  GO top  thisform.f.tgldaf.Enabled=.Enabled=.90  31  APPEND FROM lapjual FOR tgltran=tgla  k.  vdiskon=faktur.not.f.text1.namabrg  thisform.  vbayar=faktur.perbaiki.diskon  thisform.2))+"/"+LTRIM(STR(bln.text2.Enabled=.nofak  thisform.t.Enabled=.Enabled=.Enabled=.refresh  ELSE  thisform.perbaiki.t.simpan.  locate for nofak=FAKTUR. eof()  REPLACE Nama WITH thisform.  SELECT lapjual  RETURN DELETE ALL  PACK  IF thisform.Value=2  .)  do while ! eof()  thisform.tambah.simpan."Perhatian.f.ud.  select LAPJUAL1  thisform..t.t.Enabled=.tgldaf.  Object PERBAIKI Procedure CLICK  SELECT faktur  thisform.totjualsp  thisform.t.  SELECT lapjual1  thisform.4+32+256.aktifkan(.t.batal.Enabled=.Enabled=.t.kendali(.4)  SELECT lAPJUAL1  REPLACE tgldaf WITH CTOD(vtgl)  GO top  REPLACE NoDaf WITH thisform.f.month  skip  thn=thisform.kendali(.Enabled=.aktifkan(.  vtotjualsp=faktur.Value  IF FOUND()  ENDIF  vnamabrg=barang.  SET ORDER TO tag kodebrg  thisform.keluar.Enabled=.Enabled=.keluar.t.")  REPLACE totjualsp WITH vtotjualsp  IF jawab=6  REPLACE diskon WITH vdiskon  SELECT CASIS  REPLACE bayar WITH vbayar  tgl=thisform.day  SELECT FAKTUR  bln=thisform.Enabled=.combo1.  enddo  thisform.batal.

)  d..f.  tgl1a=TRIM(str(tgl1.t.tgltran  RETURN  ELSE  vnopel=""  o.t.")  go top  IF jawab=6  do while ! eof()  SET DELETED OFF  select faktur  SELECT CaSis  locate for nofak=lapjual.nopel  ENDIF  vtgltran=faktur.Enabled=.tgl1.)  thisform.release()  thisform.")  REPLACE tgltran with vtgltran  RETURN  skip  ENDIF  ENDDO  thisform..  thn1=thisform.SetFocus  SELECT lapjual1  thisform.refresh  return  thisform.kendali(..perbaiki.f.Refresh  DELETE ALL  RETURN  PACK .year  thisform.  str(thn1.2))+"/"+TRIM(str(bln1.tambah..32  89  m.4+32+256.Enabled=.;  appe from penjualan  4+32+256.t.tgl1.aktifkan(.Enabled=.  tgla=ctod(tgl1a)  thisform."Perhatian."Perhatian...Enabled=.f.  Object KELUAR Procedure CLICK  ENDIF  thisform.ud..  select lapjual  RETURN  dele all  set dele off  n.f.  Object Form1 Procedure UNLOAD  jawab=MESSAGEBOX("Anda yakin record ini mau dihapus ?";  close data  ."Perhatian.  Object CETAK Procedure CLICK  thisform.keluar.day  thisform.Enabled=.  Object PERTAMA Procedure CLICK  vtgltran=CTOD(" / / ")  SELECT CaSis  ENDIF  GO top  SELECT lapjual  IF BOF()  REPLACE nopel WITH vnopel  MESSAGEBOX("Record kosong".Enabled=.Release  vnopel=faktur.  bln1=thisform..2))+"/"+;  thisform.nofak  PACK  IF FOUND()  thisform.  tgl1=thisform.hapus.0.")  close index  IF jawab=6  return  DELETE  SET DELETED ON  c.month  thisform.tgl1.Enabled=.simpan.batal.4)  thisform.  Object KELUAR Procedure CLICK  pack  jawab=MESSAGEBOX("Anda Yakin Mau Keluar ?".grid1.t.  Object HAPUS Procedure CLICK  b.f.

day=DAY(DATE())  thisform."Perhatian.f.Refresh  select b  RETURN  use faktur  set order to tag nofak  r.f.Refresh  set order to tag nofak  RETURN  select e  USE pelanggan  s.month=MONTH(DATE())  thisform.batal.setfocus()  thisform.  Object GRID1 Procedure AfterRowColChange  SET ORDER TO tag nopel  LPARAMETERS nColIndex  SELECT f  thisform.Enabled=.tgl1.)  thisform.ud.  thisform.Enabled=.  thisform.grid1.Enabled=.f.88  33  if used("penjualan")  p..tgl1.")  set order to tag nofak  RETURN  select d  ENDIF  use lapjual  thisform.simpan.  return  thisform.tambah.  Object TERAKHIR Procedure CLICK  set order to tag tgltran  SELECT CaSis  reindex  GO BOttom  select c  IF EOF()  use penjualan  MESSAGEBOX("Record kosong".  thisform.tampilkan  use lapjual1  thisform.)  thisform.  Object SEBELUMNYA Procedure CLICK  use in penjualan  SELECT CaSis  endif  SKIP ­1  if used("lapjual")  IF BOF()  use in lapjual  GO TOP  ENDIF  endif  thisform.t.keluar.t.tgl1.kendali(.t..Refresh  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  thisform.  RETURN .SetFocus  if used("lapjual1")  thisform.grid1.t.f.perbaiki.SetFocus  thisform.Enabled=.0.Enabled=.  thisform.tgl1.Enabled=.SetFocus  set order to tag kodebrg  thisform.aktifkan(.  thisform.t.grid1.year=YEAR(DATE())  thisform.hapus.Enabled=.

1)  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual.  Buatkan Table dengan nama TU. dengan disain sbb :  2.  Buatkan Form dengan nama TU.TglTran  12.RAND()*255)  Format  : Format Expression  : 99.l.diskon  Thisform.999.FORECOLOR=RGB(RAND()*255.  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 .  Listing Program :  a.999.RAND()*255. struktur table sbb :  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual.2  Tugas 4  Format  : Format Expression  : 999.  Object TIMER1 Procedure TIMER  Diskon  : lapjual.l.LEN(t)­1)+LEFT(t.TglTran  Penjualan Bersih  :  4.999  t=thisform.999  Aligment  : Right  1. 34  87  t.2  Membuat form untuk memanggil laporan harian  1.l. sbb :  2.  Disain Form.caption=RIGHT(t.caption  Aligment  : Right  thisform.

Praktek Visual FoxPro V  2.Nofak  Diskon  : lapjual.jumlah  Format  : Format Expression  : 999. struktur table sbb :  Format  : Format Expression  : 9.999  Aligment  : Right  Jumlah Penjualan  : lapjual. sbb : Format  : Format Expression  : 99.Faktur  : lapjual.999.jumlah  Format  : Format Expression  : 999.Nofak  Baris Summery atau SubGroup TglTran :  Jumlah Penjualan  : lapjual.  Isi TextBox:  Per Tanggal  : lapjual.1  Bahan Praktek 5  Aligment  : Right  Qty  : lapjual.jumlah  Format  : Format Expression  : 999.999.namabrg  Harga Satuan  : lapjual.hrgjual  Format  : Format Expression  : 99.999  Aligment  : Right  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual.tgltran  Materi :  No.nofak  1.diskon  2.Nofak  Penjualan Bersih  :  Format  : Format Expression  : 999.999.  Buatkan Table pada Free Table dengan nama TMPCASIS.999.999  Aligment  : Right  Baris SubGrup NoFak :  Jumlah Penjualan  : lapjual.999.999  Aligment  : Right  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual. 86  35  V.999  Aligment  : Right  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual.999  Aligment  : Right  Calculate  : Calculation Type  : SUM  Reset Based On  : Group:Lapjual.TglTran  .999  5.  Buatkan Report dengan nama DAFCASIS.  Membuat Table Temp  Kode Barang  : lapjual.  Membuat Form Report  Nama Barang  : lapjual.kodebrg  2.999.qty  1.

36  85  3.  Buatkan Form dengan nama PG.  Buatkan Report Laporan Harian dengan disain sbb: 4.  Listing Program :  a.  Copy­kan File Free Table TMPJUAL ke LAPJUAL dan LAPJUAL1  2. Praktek Visual FoxPro XII  Materi :  Membuat Laporan Harian Penjualan  12.  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  . samakan dengan file TMPJUAL  3.1  Disain Laporan Harian  1. dengan disain sbb:  XII.  Perbaiki idex­nya.

Value=A  Aligment  : Right  RETURN  Jumlah  : tmpjual.  Isi TextBox:  b.text1.  Object PROSES Procedure CLICK  Nama Pelanggan  : pelanggan.Polisi : "+pelanggan.text2.999.999  SELECT CASIS  Aligment  : Right  REPLACE ALL KET WITH "0"  Sisa/Piutang  : tmpjual.999  c.namapel  SELECT TMPCASIS  Type/No. 84  37  2.999  REPLACE NILAIPG WITH PG  Aligment  : Right  A=A+1  Harga Satuan  : tmpjual.jumlah  Format  : Format Expression  : 999.totjualsp  GO TOP  Format  : Format Expression  : 999.  Simpan  dengan  nama  File  Kuitansi.diskon  REPLACE NO WITH VNO  VNO=VNO+1  Format  : Format Expression  : 99.999.kodebrg  GO top  Nama Barang  : tmpjual.tgltran  APPEND FROM CASIS FOR NILAI>=PG  Kode Barang  : tmpjual.  REPLACE CASIS.Polisi  : trim(pelanggan.namabrg  A=0  Quantity  : tmpjual.999  GO TOP  Aligment  : Right  DO WHILE ! EOF()  Tanggal Titik Mangsa  : date()  SELECT CASIS  LOCATE FOR CASIS.qty  DO WHILE ! EOF()  Format  : Format Expression  : 9.type)+" No.Value  Tanggal Transaksi  : tmpjual.2  Tugas 11  ENDDO Buatkan  Report  kuitansi  pembelian  (disain  report  mirip  dengan  Report  kuitansi  penjualan)  .totjualsp­tmpjual.NODAF  3.bayar  d.  kemudian  jalankan  report  dari  form  transaksi  IF FOUND()  penjualan.diskon  REPORT FORM D:\PSB\PRG\DAFCASIS PREVIEW  Format  : Format Expression  : 999.KET WITH "1"  ENDIF  SELECT TMPCASIS  SKIP  11.999.999.nofak)  PACK  PG=thisform.999.999.piutang  SELECT TMPCASIS  Format  : Format Expression  : 99.999  VNO=1  Aligment  : Right  DO WHILE ! EOF()  Diskon  : tmpjual.999.999  ENDDO  thisform.nopol  DELETE ALL  Nomor Faktur  : ltrim(tmpjual.hrgjual  SKIP  Format  : Format Expression  : 99.NODAF=TMPCASIS.999  RETURN  Aligment  : Right  Total Bayar  : tmpjual.999  SKIP  Aligment  : Right  ENDDO  Total Bersih  : tmpjual.  Object SIMPAN Procedure CLICK  Format  : Format Expression  : 999.  Object CETAK Procedure CLICK  Aligment  : Right  SELECT TMPCASIS  Total Transaksi  : tmpjual.

38  83  e. sbb :  11.  Object KELUAR Procedure CLICK  XI.1  Disain Report Faktur  1.2  Tugas 5  Buatkan Report dengan nama DAFTU.Release  RETURN  Materi :  Membuat Report Faktur Penjualan  5. Praktek Visual FoxPro XI  thisform.  Buatkan Report Faktur Penjualan dengan disain sbb: .

  Jumlah Pembayaran = Jumlah Transaksi – Diskon .1  Bahan Praktek 6  1.  Ketentuan Diskon :  ­  Untuk rombongan minimal 10 orang mendapat diskon sebesar 10 % dari total  transaksi.  c.1:  5. Praktek Visual FoxPro VI  Materi :  1.­  b.  Buatkan Table dengan nama RENANG.  Buatkan  Form  dengan  nama  RENANG.­  ­  Pada hari Week End (Sabtu dan Minggu) sebesar Rp.  Ketentuan Tarip Renang :  ­  Hari Kerja (Senin s/d Jumat) sebesar Rp. 15.  Buatkan Form PEMBELIAN dengan disain sbb:  VI. struktur table sbb :  4. 82  39  6.1.  Buatkan Project File dengan nama RENANG  2.  Buatkan Database dengan nama DATARENANG  3.000.  Membuat Form Transaksi Sederhana  6.  Membuat Databse  2. 10.  Membuat Table  3.  Desain Formula :  a.000..  desain  form  dapat  dilihat  pada  gambar  6.  ­  Untuk  rombongan  di  bawah  10  orang  atau  peroangan  tidak  mendapatkan  diskon.

Enabled=x  return  .text4.text1.  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.40  81  3.text3.text2.Enabled=x  thisform.1.  Buatkan Tabel PEMBELIAN pada Database SIPB dengan struktur file sbb:  4.  Buatkan Tabel TMPBELI pada Free Table dengan struktur file sbb: 6.  Listing Program :  a.Enabled=x  thisform.  Buatkan Tabel NoFakBeli pada Free Table dengan struktur file sbb:  Gambar 6.Enabled=x  thisform.  Object Form1 Procedure UNLOAD  CLOSE DATABASES  RETURN  c.1 Form Kelola Biaya Renang  5.  Object Form1 Procedure AKTIFKAN  PARAMETERS X  thisform.

caption  thisform.f.  return  h.aktifkan(. Object TIMER1 Procedure TIMER  thisform.  Object Form1 Procedure TAMPILKAN  thisform.Value=0  Thisform.label13.)  thisform.f.t.tambah.Value=CTOD(" / / ")  thisform.)  thisform.t.  Object Form1 Procedure KENDALI  PARAMETERS Y  thisform.  2.keluar.;  thisform.caption=right(a.Value=""  thisform.Enabled=Y  thisform.t.Value=renang.Value=renang.  thisform.simpan.Value=TIME()  thisform.f.  Object Form1 Procedure ACTIVATE  thisform.jmlorg  1.text5.text5.text5.LEN(a)­1)+left(a.  thisform.4  Tugas 10  thisform.Value=renang.  thisform.  Buatkan Tabel FAKTURB pada Database SIPB dengan struktur file sbb:  thisform.refresh()  d.Enabled=Y  RETURN  g.Value=0  RAND()*255)  return  a=thisform.kosongkan  thisform.RAND()*255.tambah.grid1.simpan.readonly=.)  thisform.Enabled=.text3.aktifkan(.enabled=.kendali(. 80  41  thisform.  Buatkan Tabel PEMASOK pada Database SIPB dengan struktur file sbb:  thisform.Enabled=.  Object Form1 Procedure KOSONGKAN  RETURN  thisform.Enabled=.tampilkan()  thisform.t.text1.text1.  thisform.text2.label13.jmlbayar  return  f.label13.Enabled=.Berikutnya.)  thisform.kendali(.Value=renang.kosongkan  thisform.text4.Enabled=.t.text4.t.text2.Sebelumnya.Value=""  aa.grid1.tanggal  thisform.FORECOLOR=RGB(RAND()*255.t.text3.nama  thisform.f. .nobukti  10.Value=renang.  Object TAMBAH Procedure CLICK  thisform.1)  e.

!")  REPLACE DISKON WITH VDISKON  thisform.TEXT3.Value  select faktur  REPLACE NAMA WITH THISFORM.  w.VALUE  RETURN  JMLTRAN=VTARIP*VJMLORG  IF VJMLORG >= 10  y.VALUE) .  Object TERAKHIR Procedure CLICK  REPLACE NOBUKTI WITH THISFORM.OR.."Perhatian.0..SETFOCUS  RETURN  x.TEXT2.VALUE)  thisform.GRID1.")  RETURN  THISFORM.refresh  VJMLORG=THISFORM.TEXT1.TEXT1.42  79  thisform.refresh()  "Perhatian.Value  if eof()  REPLACE TARIP WITH VTARIP  messagebox("Tidak ada record".release()  EMPTY(THISFORM.tampilkan  ENDIF  thisform.release()  REPLACE JMLBAYAR WITH VBAYAR  return  THISFORM.f.VALUE)=1 .refresh  APPEND BLANK  RETURN  ENDIF  REPLACE TANGGAL WITH THISFORM. ;  endif  EMPTY(THISFORM.Value  z. ;  thisform.  Object PERTAMA Procedure CLICK  thisform.TEXT3."Perhatian. ;  return  EMPTY(THISFORM.  Object BERIKUTNYA Procedure CLICK  VDISKON= 0.keluar.OR.VALUE) .VALUE) .TEXT1.VALUE)=7  if bof()  VTARIP=15000  go top  ELSE  endif  VTARIP=10000  thisform.0.SetFocus  endif THISFORM.tampilkan()  MESSAGEBOX("Isi data dengan lengkap !".TEXT1.OR.tampilkan  IF ! FOUND()  thisform.  Object SIMPAN Procedure CLICK  messagebox("Tidak ada record".0. ;  skip ­1  DOW(THISFORM.TEXT4.  select faktur  return  go top  if eof()  j.!")  IF EMPTY(THISFORM..;  thisform.f.REFRESH  .TEXT2.Value  go bottom  REPLACE JMLORG WITH THISFORM.TEXT4.  Object SEBELUMNYA Procedure CLICK  ENDIF  select faktur  IF DOW(THISFORM.OR.TEXT1.1 * JMLTRAN  select faktur  ELSE  skip  VDISKON= 0  if eof()  ENDIF  go bottom  VBAYAR=JMLTRAN­VDISKON  endif  LOCATE FOR NOBUKTI=SPACE(10)  thisform.TEXT4..enabled=.Enabled=...grid1.

f.f.t.f.qty.f.kendali(.baru.tambah.text2.kodebrg  thisform.Enabled=.hargadsr.  return  thisform.value=""  l.cari.text2.Enabled=.  thisform.simpan.kodebrg  IF BOF()  thisform.Tampilkan  thisform.  Object BERIKUTNYA Procedure CLICK  ENDIF  SKIP  thisform.text1.f.grid1.cetak.value=barang.batal.value=""  RETURN  thisform.hargajual  ENDIF  ELSE  THISFORM.qty  thisform.aktif2(.combo1.)  RETU  return  v.enabled=.hargadsr.value=""  thisform.value=pelanggan.TAMPILKAN  thisform.t.keluar.  Object GRID1 Procedure AfterRowColChange  LPARAMETERS nColIndex  LPARAMETERS nColIndex  thisform.value)  k.value=tmpjual.)  thisform.Release  thisform.value=tmpjual.nopol.namapel  thisform.  Object GRID1  Procedure AfterRowColChange  n.value=""  thisform.Enabled=.  thisform.  Object COMBO1 Procedure InterActiveChange  RETURN  SELECT BARANG  LOCATE FOR NAMABRG=TRIM(thisform.t.hitung.  thisform.f.Enabled=.value=tmpjual.hrgjual  RETURN  .Enabled=.t.  Object KELUAR Procedure CLICK  thisform.f.Enabled=.  Object NOPEL Procedure InterActiveChange  thisform.aktif(.namabrg  RETURN thisform.  RETURN  thisform.f.text1.text2.Enabled=.)  thisform.  THISFORM.keluar.t.text1.  ENDIF  thisform.TAMPILKAN  thisform.  u.Combo1. 78  43  t.hargadsr  GO TOP  thisform.f.aktifkan(.simpan.f.Enabled=.value=barang.  Object SEBELUMNYA Procedure CLICK  IF FOUND()  SKIP ­1  thisform.value=barang.kendali(.namapel.Enabled=.  THISFORM.value=pelanggan.)  IF BOF()  thisform.value=tmpjual.COMBO5.Enabled=.t.nopol  thisform.  GO BOTTOM  thisform.)  thisform.  m.

t.enabled=.f.aktif2(.  4. dengan disain Form sbb.f.)  thisform.kendali(.  Buat file Table dengan nama file PASIEN.simpan.  RETURN  s.keluar.hitung.t.:  thisform.  thisform.t.simpan.f.aktif3(.f.  Object KELUAR Procedure CLICK  sele tmpjual  dele all  set dele off  pack  sele penjualan  set dele off  PACK  thisform.enabled=.aktif1(.  Buat file Database dengan nama DATATGS6  RETURN  3. Desain Form.batal.  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  thisform.2  Tugas 6  thisform.aktif(.release()  RETURN Gambar 1.t.cetak.f.f.  thisform.enabled=.cari.enabled=. 44  77  6.)  thisform.  thisform.)  thisform.  thisform.f.  thisform.enabled=. dengan struktur file sbb :  r.enabled=.  Buat file Project dengan nama TGS6  thisform.f.f.baru.enabled=.)  thisform. (Biaya Perawatan)  .enabled=.enabled=.f.  thisform.f.f.  2.aktif2(.)  1.  Buat Form untuk meng­input data PASIEN.kembalian.cari.  thisform.)  thisform.aktif3(.)  thisform.enabled=.t.

000  thisform.  thisform.)  .f.)  thisform.f.batal.enabled=.enabled=.f.f.000  thisform.enabled=.simpan.enabled=.aktif(.value  5.value  Lama Rawat = Tanggal Keluar – Tanggal Masuk  repl piutang with thisform.kendali(.enabled=.  thisform.value  sele NOfakJUAL  RUANG RAWAT  TARIP PER HARI  go bottom  ICU  250.enabled=.  thisform.t.text6.hitung.t.  Jumlah Bayar = Lama Rawat * Tarip  thisform.combo3.  thisform.cetak.  thisform.hitung.kembalian.f.f.)  thisform.000  repl tgltran with thisform.simpan.keluar.enabled=.kembalian.aktif1(.f.000  repl nofak with lnofak  KELAS 1  200.f.keluar.  thisform.t.kendali(.tgljual.  thisform.  thisform.enabled=.enabled=.cetak.f.t.  KELAS 3  50.enabled=.  thisform.batal.enabled=.enabled=.  Object KEMBALIAN Procedure CLICK  do form d:\SIPB\prg\hitungkembalian.f.  thisform.)  thisform.f.enabled=.f.t.simpan.aktif(.f.f. QUIZ thisform.enabled=.nopel.enabled=.)  thisform.text4.scx  thisform.aktif3(.enabled=.t.enabled=.baru.value  repl bayar with thisform.  return  q.value  VIP  300.)  thisform.f.76  45  repl nopel with thisform.  Ketentuan untuk mengisi BAYAR (Jumlah Bayar) adalah :  repl diskon with thisform.f.f.cari.simpan.000  ENDIF  KELAS 2  100.  thisform.  thisform.  thisform.enabled=.)  thisform.t.aktif2(.text5.enabled=.  thisform.f.f.  thisform.t.baru.text7.aktif1(.  thisform.)  VII.

value  repl diskon with thisform.  Buatkan Project File Baru dengan nama SIPB (Sistem Informasi Penjualan Barang)  o.1.value  repl piutang with thisform.t.baru.  Buatkan Tabel Barang pada Database SIPB dengan Struktur File sbb :  p.f.1  Tabel Barang  select faktur  locate for nofak=trim(thisform..  thisform.  Object BATAL Procedure RIGHTCLICK  2.value)  4.nofak.text3..t.text7.text3.text3.value  repl bayar with thisform.value  repl totjualsp with thisform.Enabled=.enabled=.f.value  repl tgltran with thisform.kendali(.t.value .text3.  Materi :  thisform.Enabled=.t.")  thisform.value  repl totjualsp with thisform.value>0  Gambar 8.text4.batal."Perhatian.;  0.  3.  3.  1.tgljual.hitung.text6.keluar.2  Tabel Pelanggan  repl tgltran with thisform. Praktek Visual FoxPro VIII  thisform.  Membuat Project File Sistem Informasi Penjualan Barang  thisform.value  messagebox("Maaf Anda Keliru Memasukan Jumlah Bayar".  Object SIMPAN Procedure CLICK  if thisform.  Membuat Table Barang.text6.setfocus()  retu  ENDIF  if thisform.nofak.value  select tmpjual  go bottom  repl nofak with thisform.t.  Membuat Databse Sistem Informasi Penjualan Barang  thisform.keluar. 46  75  VIII.Enabled=.1.Enabled=.refresh  endif  8.cetak.  Buatkan Database dengan nama SIPB  thisform. Faktur & Pejualan  thisform.value>thisform.text6.nopel.  thisform.Enabled=. Pelanggan.)  thisform.value  repl nopel with thisform.f.1  Membuat Project File dan DataBase  RETURN  1.  2.simpan.nofak.  Buatkan Tabel Pelanggan pada Database SIPB dengan Struktur File sbb :  if ! found()  append blank  endif  repl nofak with thisform.Enabled=.value  Gambar 8.tgljual.

Value)  IF FOUND()  ljml=thisform.aktif(.cari.Enabled=.f.and.nofak.batal.f.t.hitung.value);  .kendali(.5  Tabel TMPBRG .  thisform.)  thisform.aktif3(.text3.simpan.)  thisform.value=thisform.qty.aktif3(.  Buatkan Tabel Penjualan pada Database SIPB dengan Struktur File sbb :  thisform.f.value­ljml  thisform.nofak.t.text3.f.f.  Buatkan Tabel Faktur pada Database SIPB dengan Struktur File sbb :  endif  ENDIF  sele penjualan  loca for penjualan.4  Tabel Penjualan  thisform.baru.  thisform.)  thisform.qty.Enabled=.text1.1.f.text2.value*thisform.aktif2(.text3.  thisform.kodebrg=TRIM(thisform.  Gambar 8.1.74  47  repl barang.text3.cetak.1.Enabled=.Enabled=. nofak=TRIM(thisform.  thisform.keluar.value  sele tmpjual  SET DELETED ON  DELETE  thisform.)  thisform.  Buatkan Tabel TMPBRG pada FREE TABLE dengan Struktur File sbb :  IF thisform.f.aktif(.f.refresh  else  thisform.Enabled=.)  thisform.cari.value=thisform.Enabled=.t.Enabled=.Value=0  thisform.stock with qty1  5.value=0  ENDIF  7.3  Tabel Faktur  ljml=0  ENDIF  6.and.aktif2(.  thisform.f.Enabled=.text6.refresh  Gambar 8.)  thisform.Value)  ELSE  Gambar 8.kodebrg=TRIM(thisform.value  dele FOR penjualan. nofak=TRIM(thisform.)  thisform.value);  .f.t.text1.  thisform.t.  thisform.

.qty.2  Membuat Form Kelola Data Barang  qty1=barang.Enabled=.Enabled=.grid1.  Procedure Program :  thisform.text4.)  thisform.setfocus  RETURN  n.  thisform.text2.f.cari.text6.value=thisform.Value) .stock  qty1=qty1­thisform.value .QTY.value=0  thisform.combo1.text1.;  * Menutup semua file yang tidak diperlukan  4+32+256.OR.value=0  thisform.f.baru.  Object BATAL Procedure CLICK  IF EMPTY(THISFORM. ;  EMPTY(THISFORM.f.hitung.2.value=""  thisform.Value)  MESSAGEBOX("Click dulu Record di Grid yang akan dibatalkan".)  thisform..t.Enabled=.f.Enabled=.value  thisform.t.batal.Value) .value=""  thisform.cetak.  thisform.aktif(.Enabled=.  thisform.  Object Form 1 Procedure LOAD  RETURN  set exact on  ENDIF  set defa to d:\SIPB\data  jawab=messagebox("Anda mau membatalkan transaksi ?".")  close data  if jawab=6  close index  SELECT barang  if USED("BARANG")  LOCATE FOR kodebrg=TRIM(thisform.text1.1  Disain Form Kelola Data Barang  EMPTY(THISFORM.keluar.simpan.  thisform.Enabled=.Value)  USE IN BARANG  IF FOUND()  endif  if thisform.;  0.COMBO5.kendali(.  thisform."Perhatian.2.aktif3(.text3..f.)  thisform. ;  Gambar 8.stock  USE IN PENJUALAN  qty1=qty1+thisform."Perhatian.Enabled=.1:  REPLACE barang.f.SetFocus  a.  Buatkan Form Kelola Data Barang dengan disain seperti pada Gambar  8.f.  thisform.TEXT1. 48  73  8.qty.qty.stock with qty1  endif  select tmpjual  thisform.qty.  thisform.")  2.t..value  1.OR.value>0  if USED("PENJUALAN")  qty1=barang.

stock  USE TMPBRG  thisform.setfocus()  SELECT B  return  USE PENJUALAN  endif  SELECT C  jml=thisform.combo1.terakhir.text2.text2.72  49  RETURN  ENDIF  ENDIF  if USED("TMPBRG")  sele barang  USE IN TMPBRG  locate for namabrg=TRIM(thisform.qty.combo1.sebelumnya.value  return  REPLACE nopel with thisform.value>0  thisform.text2.text2.qty.qty.qty.text3.text5.STOCK<thisform.qty. thisform.value  RETURN  REPLACE jumlah with  thisform. thisform.value  use barang  thisform.text4.and.and.qty.value  thisform.Nofak.value=0  appe blank  thisform.pertama.text6.value>0 .enabled=x  SET DELETED on  RETURN  endif  thisform.  Object Form1 Procedure Kendali  REPLACE namabrg with thisform.value=""  if thisform.value+jml  set order to tag kodebrg  RETURN  select tmpjual  if thisform.value=thisform.value=0  REPLACE Nofak with thisform.text3.  Object Form1 Procedure NonText1  ENDIF  PARAMETERS keadaan  thisform.value  thisform.value  * Membuka Tabel  messagebox("Stock Barang Kurang".enabled=keadaan  sele barang  thisform.text3.value  thisform.value=barang.value>0  b.text2.Nofak.value  e.value)  ENDIF  if barang.enabled=x  REPLACE jumlah with  thisform.value  REPLACE kodebrg with thisform.enabled=keadaan  locate for namabrg=TRIM(thisform.value=0  REPLACE qty with thisform.text3.combo1.text1.value*thisform.text1.qty.value  close index  REPLACE tgltran with thisform.text2.nopel."Periksa Stock Barang")  SELECT A  thisform.0+64.value>0 .qty.enabled=x  thisform.text2.value  thisform.text2.value)  thisform.value  c.  Object Form1 Procedure Kosongkan  sele penjualan  thisform.  Object Form1 Procedure UNLOAD  append blank  close data  REPLACE nofak with thisform.value>0 .value>0  .refresh()  d.value  parameter x  REPLACE qty with thisform.text4.enabled=x  REPLACE hrgjual with thisform. thisform.and.text2.value=0  REPLACE kodebrg with thisform.qty.value  thisform.qty.value*thisform.tgljual.value*thisform.qty.berikutnya.enabled=keadaan if thisform.

enabled=.  f.t.hapus.value=barang.baru.nopel.text5.  thisform.kendali(.F.)  thisform.  SELECT pelanggan  thisform.enabled=.  thisform.enabled=.enabled=.keluar.refresh  thisform.enabled=.kembalian.t.enabled=.f.f.enabled=.  endif  RETURN  thisform.  return  thisform.f.enabled=.  thisform.")  thisform.  thisform.f.  l.enabled=keadaan  thisform.namapel  thisform.)  thisform.  IF ! FOUND()  thisform.value=pelanggan..f.f.t.Value)  thisform.)  m.;  thisform.f.f.  thisform.enabled=keadaan  thisform.f.)  thisform."Perhatian.kendali(.simpan.text5.cetak.cari.enabled=.simpan.text1.f.text4.keluar.)  thisform.setfocus .t.aktif1(.hargajual  thisform.f.enabled=.  Object CARI Procedure CLICK  thisform.batal.enabled=.  messagebox("Anda Harus klik dulu tombol tambah [+].  Object HITUNG Procedure CLICK  thisform.enabled=.  thisform.  RETURN  thisform.periksa.perbaiki.f.stock  thisform.text1.0.value=date()  RETURN  thisform.baru.f.0.nopol.value=barang.kosongkan()  thisform.  thisform.value=barang.  thisform.nofak.enabled=.f.baru.t.f.enabled=.t.value=barang.simpan.namapel.  thisform.enabled=.t.t.text6..value=pelanggan.f.enabled=.  LOCATE FOR nopol=RTRIM(thisform.simpan.grid1.kendali(.aktif2(.  MESSAGEBOX("Data tidak ditemukan !".stockmin  thisform.aktif(.setfocus()  RETURN  thisform.  thisform.batal.tgljual.  Object Form1 Procedure ACTIVATE  thisform.  thisform.  Object TAMBAH Procedure CLICK  thisform.enabled=.text6.)  g.aktif2(.value=barang.nopol.f.enabled=.hapus.  thisform.  thisform..enabled=."Perhatian.  thisform.hitung.nontext1(.enabled=.text3.enabled=.enabled=.f.  thisform.text2.t.text1.f.f.aktif3(.)  RETURN  thisform.namabrg  thisform.)  thisform.f.Value)  thisform.perbaiki.)  thisform.enabled=.")  thisform.text1.f.keluar.nopel  g.batal.baru.nopol.hargadsr  thisform.f.enabled=.hitung.  sebelum memulai transaksi!".t.t.50  71  thisform.  thisform..  thisform.f.t.value=barang.)  thisform.baru.enabled=.enabled=.  Object Form1 Procedure Tampilkan  thisform.enabled=.t.enabled=.  if EMPTY(thisform.t.setFocus  thisform.kodebrg  thisform.enabled=.nontext1(.periksa.keluar.setfocus  thisform.

cetak.text1.f.ud.text1..text1.value)  th=year(date())  thisform.0+48.text1.)  if left(thisform.text1.enabled=.grid1.)  return  thisform.tampilkan()  sele tmpjual  jawab=messagebox("Mau Diperbaiki ?".  thisform.!")  public lnofak  thisform.1)#"S"  RETURN  messagebox("Kode Barang harus diawali hurup B ;  untuk barang bubutan "+CHR(13)+"dan Hurup S ;  k..")  else  thisform.)  left(thisform.  Object TAMBAH Procedure CLICK  untuk barang sparepart !".setfocus()  thisform.2.0+48.2))+ltrim(str(bln.enabled=.enabled=.value=ltrim(str(tgl.value."Perhatian.!")  thisform.f.0.enabled=.)  thisform."Perhatian.baru.Value).  h.kosongkan  return  select barang  ENDIF  set order to tag namabrg  IF VAL(SUBSTR(TRIM(thisform.2))+alltrim(str(lnofak.;  lnofak=1  "Perhatian.text1.f.keluar.;  thisform.f.setfocus  thisform.grid1.t..tgltran<>date()  RETURN  dele all  ENDIF  pack  IF LEN(TRIM(thisform.f.  thisform.aktif(.2))+;  thisform.  thisform.enabled=.enabled=...  Object PERIKSA Procedure CLICK  thisform.aktif1(.hitung.  Object Form1 Procedure ACTIVATE  thisform.text1.")  DELETE all  if jawab =6 .t.f.value.simpan.0.nofak+1  RETURN  endif  ENDIF  tgl=day(date())  SELECT BARANG  bln=month(date())  if seek(thisform.  if empty(thisform.  thisform.4+32+256.text1.refresh()  ltrim(right(str(th)..t.enabled=.value)  thisform..setfocus()  thisform.enabled=.;  SET DELETED on  "Kode Tersebut Sudah Terpakai.Value))<6  append blank  messagebox("Jumlah Kode harus 6 character !".  thisform..text1.)  endif  thisform.text1.aktif3(.kendali(. ;  thisform.batal.f..f.4))  thisform.enabled=.f.5))<1  messagebox("Mulai karakter ke 2 hrs diisi dengan;  sele nofakjual  no urut !".setfocus  thisform.cari.1)#"B" .setfocus  if nofakjual.  thisform.nofak.f.enabled=.enabled=.aktif2(.setfocus  lnofak=nofakjual.  "Perhatian.  RETURN  thisform.kembalian..  messagebox("Kode Barang Harus Diisi !".f.text1. 70  51  j.kosongkan()  thisform.simpan.")  go bottom  thisform.and.f.f.

enabled=.qty.  thisform.f.enabled=.keluar.f.  GO TOP  thisform.enabled=.  thisform.hargadsr.value  else  thisform.enabled=.ud.enabled=.)  thisform.setfocus()  thisform.enabled=.baru.  REPLACE ALL NoFak WITH thisform.  REPLACE diskon with thisform.)  thisform.grid1.f.batal.Value  thisform.t.f.cari.enabled=.  thisform.  select tmpjual  thisform.  thisform.f.f.enabled=.enabled=.kendali(.  skip  thisform.)  thisform.  thisform.  REPLACE namabrg with vnamabrg  thisform.f.  thisform.enabled=.  .kendali(.batal.enabled=.  thisform.enabled=.f.t.f.ud.  REPLACE ALL Nopel WITH thisform.  thisform.enabled=.enabled=.periksa.  thisform.  REPLACE ALL tgltran WITH thisform.  thisform.)  thisform.  thisform.  REPLACE hargadsr with vhargadsr  thisform.namabrg  thisform.52  69  thisform.qty  thisform.refresh()  endif  thisform.text2.enabled=.kosongkan()  thisform.grid1.t.t.f.  thisform.hitung.value=tmpjual.keluar.text3.)  thisform.text6.enabled=.f.t.  thisform.f.setfocus()  vhargadsr=0  thisform.enabled=.t.hargadsr  thisform.f.  RETURN thisform.f.baru.enabled=.)  REPLACE totjualsp with thisform.batal.  thisform.f.cetak.value  thisform.  return  thisform.t.aktif2(.  thisform.perbaiki.f.kodebrg  thisform.enabled=.f.text1.simpan.Nofak.value=tmpjual.kendali(.f.enabled=.hrgjual  thisform.f.setfocus()  REPLACE bayar with thisform.  thisform.f.value=tmpjual.simpan.t.f.enabled=.enabled=.simpan.enabled=.keluar.periksa.Value  thisform.enabled=.text7.enabled=.  enddo  thisform.combo1.grid1.  thisform.nontext1(.)  GO BOTTOM  thisform.keluar.value=tmpjual.text1.perbaiki.batal.f.t.aktif3(.f.  REPLACE hrgjual WITH jumlah/qty  thisform.enabled=.)  else  thisform.  thisform.tgljual.hapus.baru.periksa.t.t.Value  thisform.perbaiki.simpan.nontext1(.value  thisform.enabled=.hapus.kembalian.baru.enabled=.Nopel.f.enabled=.t.t.value=tmpjual.aktif1(.  thisform.f.f.  thisform.f.text1.aktif(.text4.text2.ud.f.enabled=.  thisform.refresh()  thisform.  thisform.t.f.enabled=.value  return  REPLACE Piutang with thisform.text1.)  endif  thisform.t.enabled=.simpan.enabled=.enabled=.enabled=.enabled=.f.

0.hapus.f.0.nontext1(.value  locate for kodebrg=space(6)  go top  if ! found()  do while ! eof()  append blank  select barang  endif  locate for kodebrg=tmpjual.value  ELSE  repl hargadsr with thisform..value) .kosongkan()  thisform.value  vnamabrg=""  repl hargajual with thisform.hargadsr  repl stockmin with thisform.value=0  thisform.nopol.setfocus()  dele all  return  set dele on  endif  appe from penjualan for nofak=thisform.bayar  RETURN  thisform.text2.value=0  thisform.or.setfocus()  thisform.f.value=faktur.text3.nopol  "Penyimpanan tidak bisa dilakukan")  select tmpjual  thisform.text6.nopel.enabled=.piutang  endif  thisform.diskon  thisform.value  IF FOUND()  repl namabrg with thisform.setfocus()  thisform.  thisform.;  thisform.f.  thisform.value .text3.text2.;  thisform.nofak.value=""  thisform.namabrg  repl stock with thisform.value=faktur.or.text4.f.nopel.text6.totjualsp  "Perhatian.text4.value=0  thisform.value=""  thisform.text4.t.value)  thisform.value=pelanggan.kendali(.text5.tgljual.text6.text4.nofak.text3.value=""  RETURN  thisform. ;  i.value=""  thisform.value=""  endif  thisform.  Object Form1 Procedure TAMPILKAN  EMPTY(thisform.grid1.text2.kodebrg  repl kodebrg with thisform.qty.value=faktur.value  vnamabrg=barang.")  thisform. ;  select faktur  EMPTY(thisform.combo1. ;  thisform.value=faktur.  thisform.text7..namapel.nopel. 68  53  h.enabled=.nopel  SELECT BARANG  select pelanggan  locate for namabrg=trim(thisform.text3.tgltran  messagebox("Isi data dengan lengkap !".text2.value=pelanggan.or.text2.text2.value)  locate for nopel=thisform.value  if found()  thisform.  Object SIMPAN Procedure CLICK  IF EMPTY(thisform.value  vhargadsr=barang.value=0  RETURN  i.value=0  thisform.value=faktur.nopol.text7.value=faktur.value=0  thisform.value=faktur.)  thisform.value) .text6.text1.text1.text1.enabled=.namapel.namapel  messagebox("Nama Barang Ada Yang Sama !".nofak  EMPTY(thisform.)  thisform.text2.value) .  Object Form1 Procedure KOSONGKAN  thisform.

  RETURN thisform.text7.Enabled=r  thisform.0.Enabled=y  RETURN  RETURN  j.  PARAMETERS s  thisform.tgljual.Enabled=z  vstock=barang.t.  d.f..simpan.Enabled=r  ENDIF  thisform.simpan.t.grid1.text1.kendali(.  Object Form1 Procedure AKTIF1  thisform.  thisform.t.enabled=.)  RETURN  thisform.hapus.  thisform.berikutnya.  thisform.  PARAMETERS x  thisform.sebelumnya.text1.  Object Form1 Procedure KENDALI  thisform.Enabled=s  thisform.nofak.  RETURN  thisform.")  return  thisform.pertama.t.f.  thisform.t.enabled=.baru.  thisform.enabled=.nopol.f.Enabled=s  thisform.t.enabled=.  c.  Object Form1 Procedure AKTIF2  thisform.enabled=.  thisform.periksa.Enabled=z  SELECT barang  thisform.  Object BATAL Procedure CLICK  e.f.SetFocus  PARAMETERS Z  thisform.ud.Enabled=s  thisform.  thisform.enabled=.enabled=.keluar.enabled=.grid1.text2.text1.  .batal.periksa.terakhir.enabled=.)  thisform.Enabled=x  thisform.enabled=.enabled=.Enabled=r  thisform.f.54  67  thisform.perbaiki.Enabled=z  LOCATE FOR kodebrg=TRIM(thisform.f.f.enabled=.kendali(.f.text6.nopel.enabled=.hargadsr  ELSE  f.Enabled=x  thisform.Enabled=z  IF FOUND()  thisform.keluar.enabled=.text1.stock  RETURN  vhargadsr=barang.nontext1(.Refresh  thisform.;  close data  "Perhatian.enabled=.t.qty.grid1.value)  thisform.ud.combo1.Enabled=y  thisform.  thisform.f.  thisform.)  thisform.enabled=.  thisform.perbaiki.baru.batal.f.  Object Form1 Procedure AKTIF  thisform.  Object Form1 Procedure AKTIF3  vstock=0  PARAMETERS r  vhargadsr=0  thisform.)  PARAMETERS y  thisform.t.Refresh()  close index  messagebox("Penyimpanan data sudah dilakukan !".hapus.namapel.Enabled=x  thisform.t.setfocus()  b.text4.Enabled=s  thisform.f..enabled=.  g.f.enabled=.nontext1(.enabled=.  thisform.  Object Form1 Procedure UNLOAD  thisform.f.f.

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

value)  IF FOUND()  repl namabrg with thisform.stock  set defa to d:\SIPB\data  vhargadsr=barang.kendali(.text2.t.)  thisform.value  ENDIF  10.simpan.f.text1.nontext1(.  RETURN  o.  Buatkan Form Kelola Data Barang dengan disain seperti pada Gambar  9.f.text4.  thisform.text3.keluar.enabled=.text6.grid1.batal.2  Membuat Form Transaksi Penjualan  thisform.SetFocus  a.t.  thisform..enabled=.2.enabled=.1:  thisform.  Object UD Procedure CLICK  jawab=messagebox("Mau Memperbaiki Data Sebelumnya ?".hargadsr  if used("barang")  ENDIF  use in barang  ENDIF  endif  thisform.!")  if jawab=6  SELECT BARANG  LOCATE FOR kodebrg=TRIM(thisform.text2.value  repl stock with thisform.grid1.f.enabled=.perbaiki.enabled=.f.  if used("pelanggan") .value)  set date british  IF FOUND()  set cent on  vstock=barang.enabled=.value  repl hargadsr with thisform.value  repl hargajual with thisform.t.value  repl stockmin with thisform.)  thisform.ud.  Object Form1 Procedure LOAD  thisform.baru.  Object PERBAIKI Procedure CLICK  10."Perhatian.f.enabled=.56  65  n.t.;  4+32.  thisform.f.f.enabled=.  thisform.  thisform.  thisform.text1.enabled=.hapus.f.  thisform.text1.perbaiki.periksa.setfocus()  thisform..3  Listing Program Transaksi Penjualan  ELSE  thisform.enabled=.Refresh  close index  SELECT barang  close data  LOCATE FOR kodebrg=TRIM(thisform.text5.  thisform.f.enabled=.  1.

text1.f.  RETURN  p.simpan.nontext1(..enabled=.enabled=.periksa.setfocus()  thisform.t.enabled=.f.f.  2.setfocus()  thisform.  thisform.grid1.kendali(.keluar.0.enabled=..setfocus()  thisform.grid1..  Object SELEBUMNYA Procedure CLICK  SELECT BARANG  2.refresh()  RETURN  q.  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  thisform.!". Membuat Temporary File  thisform.enabled=.t. 64  57  X.refresh()  RETURN . Membuat File Transaksi Penjualan  thisform.refresh()  return  ENDIF  set order to tag kodebrg  thisform..  thisform.enabled=.ud.hapus.batal.t.enabled=.  1.)  thisform.  10.f.text1.)  1."Perhatian.grid1.  Object PERTAMA Procedure CLICK  SELECT BARANG  set order to  go top  if eof()  messagebox("Tidak ada  record.enabled=.t.baru.t.  thisform.  Materi :  thisform.1  Membuat Temporary File  thisform.f.  Buatkan Tabel TMPJUAL pada Free Table dengan struktu file sbb :  thisform.f.  thisform. Praktek Visual FoxPro X  thisform.!")  thisform.enabled=.

simpan.kendali(.!".  Gambar 9.baru.  thisform.  thisform.grid1."Perhatian.)  thisform.enabled=..1 Report Daftar Pelanggan thisform.  Object GRID1 Procedure AfterRowColChange  LPARAMETERS nColIndex  thisform.periksa.  thisform.t.t.enabled=.enabled=.!")  thisform.  Buatkan Report Daftar Pelanggan dengan disain seperti pada gambar 9.text1.readonly=.!")  if bof()  go bottom  RETURN  endif  ENDIF  set order to tag kodebrg  ENDIF  thisform.f..  thisform.t.0.batal."Perhatian.1 :  go bottom  if eof()  messagebox("Tidak ada record..3.  thisform.;  0.t.3.)  thisform.refresh  RETURN  t.58  63  r.enabled=.enabled=.setfocus  RETURN  thisform.hapus.enabled=.f.setfocus()  thisform.f.grid1.  thisform.nontext1(.enabled=..3  Tugas 9  SELECT BARANG  set order to  1..enabled=.t.keluar.perbaiki.refresh()  return  ENDIF  set order to tag kodebrg  thisform.grid1.grid1.t.  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 !".enabled=.refresh()  RETURN  u.t.  thisform.tampilkan()  RETURN  .f..f.  thisform.  thisform.  Object TERAKHIR Procedure CLICK  9.

1 Form LIHATBRG  b.dbf for LEFT(kodebrg.3.3  Tugas 8  1.dbf for LEFT(kodebrg.1.release  c.1  Disain Form Kelola Data Pelanggan n=n+1  SKIP  ENDDO  REPORT FORM d:\SIPB\Prg\LAPBUBUT Preview  ELSE  IF thisform.JB.  Buatkan Form Untuk Mengelola Data Pelanggan dengan disain seperti pada Gambar  8.JB.  Object  CETAK Procedure CLICK  SELECT tmpbrg  DELETE ALL  PACK  IF thisform.2.1)="S"  SET ORDER TO TAG NAMABRG  GO TOP  n=1  DO WHILE ! EOF()  REPLACE NO WITH n  n=n+1  SKIP  .Value=1  APPEND FROM d:\SIPB\data\barang.1)="B"  SET ORDER TO TAG NAMABRG  GO TOP  n=1  DO WHILE ! EOF()  REPLACE NO WITH n  Gambar 8.3.Value=2  APPEND from d:\SIPB\data\barang.  Object  KELUAR Procedure CLICK  thisform.62  59  8.  Gambar 9.

  1.stock.999  a.  Buatkan Form dengan disain seperti pada gambar 9.1 :  Jumlah Unit  : tmpbrg.  Ganji judul Report Menjadi DAFTAR PERSEDIAAN BARANG BUBUTAN.stock. 60  61  IX.no  9.999.1 Report Daftar Persediaan Barang Sparepart  Isi TextBox :  No.1  Membuat Report  Aligment  : Right  Jumlah Harga  : tmpbrg.999. Membat Form untuk memfilter Jenis Barang  Format :  Format Expression  : 99.stock. Membuat File Report Barang  Harga Satuan  : tmpbrg.999  disain sbb.2.hargadsr*tmpbrg.hargadsr*tmpbrg.  Buatkan Report untuk menampilkan Daftar Persediaan Barang Sparepart.stock. Praktek Visual FoxPro IX  Stoct Minim  : tmpbrg.  Isi Procedur Program :  Format :  Format Expression  : 9.kodebrg  Nama Barang  : tmpbrg.  Object  Form1 Procedure LOAD  Type  : Character  SELECT BARANG Aligment  : Right  .1.  : tmpbrg.  2.999  Type  : Character  Materi :  Aligment  : Right  1.  4.999  Type  : Character  Aligment  : Right  Calculate :  Calculation Type  : Sum  Reset Based On  : Page  Pada Baris Summary :  Jumlah Harga  : tmpbrg.  Format :  Format Expression  : 999.hargadsr*tmpbrg.2  Membuat Form untuk menampilkan Report  Kode Barang  : tmpbrg.  Gambar 9.hargadsr.999  Type  : Character  Aligment  : Right  Calculate :  Calculation Type  : Sum  Reset Based On  : Report  2.  2. Dengan  Format :  Format Expression  : 99.999.  Format :  Format Expression  : 999.  Save As Report tersebut dengan nama File LAPBUBUT.  Format :  Format Expression  : 9.999  Type  : Character  9.999.:  Type  : Character  Aligment  : Right  Pada Baris Page Footer :  Halaman  : alltrim(str(_Pageno))  Jumlah Harga  : tmpbrg.stockmin.  3.  Simpan Report tersebut dengan nama File LAPBRGSP.namabrg  1.