1. pendahuluan 2. tipe file dan ekstensi · pdf filebedanya, field varchar tidak ... jendela...

127
1 1. Pendahuluan Fox Software adalah perusahaan yang pertama kali mengembangkan program sebagai FoxBASE. Fox Software bergabung dengan Microsoft pada tahun 1992 dan program aplikasi yang dikembangkannya semakin disempurnakan serta mulai menggunakan label visual. Sejak dikembangkan dengan versi visualnya, Visual FoxPro telah terbukti menjadi tool dan solusi yang tepat untuk membangun aplikasi database secara cepat dan handal. Visual FoxPro mampu manangani berbagai tipe database. Bahkan perangkat lunak pemrograman yang berbasis objek ini juga menyediakan databasenya sendiri, baik berupa database container (DBC) maupun free table (DBF). 2. Tipe File dan Ekstensi Pada saat membangun aplikasi database dengan Visual FoxPro, maka akan terdapat file-file pembangunan database. Pada layar komputer terdapat kotak dialog yang terdiri dari : 1. Project merupakan file yang berisikan file-file lain yang terdapat pada aplikasi, baik file data, dokumen dan objek. Ekstensi file project adalah .pjx. 2. Database merupakan file yang berisi informasi file-file penyusun database yang dapat berupa table, index atau view. Ekstensi file database adalah .dbc. 3. Tabel merupakan file yang berisi informasi yang tersusun dari beberapa record. Ekstensi file table adalah .dbf. 4. Form merupakan sarana untuk berinteraksi antara user dengan lingkungan data dan umumnya digunakan untuk entry atau edit data. Form ini berisi beberapa kontrol- kontrol untuk menampilkan atau mengedit data. Ekstensi file form adalah .scx. 5. Report merupakan salah satu bentuk pengujian informasi yang dapat dicetak di kertas. Ekstensi file report ini adalah .frx. 6. Program merupakan file yang berisi satu atau lebih perintah pemrograman yang tersusun secara teratur untuk menjalankan proses tertentu. Ekstensi file program ini adalah .prg. 7. Menu merupakan daftar perintah yang terdapat pada baris paling atas. Menu ini terdiri dari menubar dan submenu. Ekstensi untuk file menu adalah. Mnx. Tipe file dan ekstensi lainnya yang digunakan dalam pemrograman Visual FoxPro dapat dilihat pada tabel 1.

Upload: doancong

Post on 27-Feb-2018

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

1

1. Pendahuluan

Fox Software adalah perusahaan yang pertama kali mengembangkan program

sebagai FoxBASE. Fox Software bergabung dengan Microsoft pada tahun 1992 dan

program aplikasi yang dikembangkannya semakin disempurnakan serta mulai

menggunakan label visual.

Sejak dikembangkan dengan versi visualnya, Visual FoxPro telah terbukti

menjadi tool dan solusi yang tepat untuk membangun aplikasi database secara cepat

dan handal. Visual FoxPro mampu manangani berbagai tipe database. Bahkan

perangkat lunak pemrograman yang berbasis objek ini juga menyediakan databasenya

sendiri, baik berupa database container (DBC) maupun free table (DBF).

2. Tipe File dan Ekstensi

Pada saat membangun aplikasi database dengan Visual FoxPro, maka akan

terdapat file-file pembangunan database. Pada layar komputer terdapat kotak dialog

yang terdiri dari :

1. Project merupakan file yang berisikan file-file lain yang terdapat pada aplikasi, baik

file data, dokumen dan objek. Ekstensi file project adalah .pjx.

2. Database merupakan file yang berisi informasi file-file penyusun database yang

dapat berupa table, index atau view. Ekstensi file database adalah .dbc.

3. Tabel merupakan file yang berisi informasi yang tersusun dari beberapa record.

Ekstensi file table adalah .dbf.

4. Form merupakan sarana untuk berinteraksi antara user dengan lingkungan data dan

umumnya digunakan untuk entry atau edit data. Form ini berisi beberapa kontrol-

kontrol untuk menampilkan atau mengedit data. Ekstensi file form adalah .scx.

5. Report merupakan salah satu bentuk pengujian informasi yang dapat dicetak di

kertas. Ekstensi file report ini adalah .frx.

6. Program merupakan file yang berisi satu atau lebih perintah pemrograman yang

tersusun secara teratur untuk menjalankan proses tertentu. Ekstensi file program ini

adalah .prg.

7. Menu merupakan daftar perintah yang terdapat pada baris paling atas. Menu ini

terdiri dari menubar dan submenu. Ekstensi untuk file menu adalah. Mnx.

Tipe file dan ekstensi lainnya yang digunakan dalam pemrograman Visual

FoxPro dapat dilihat pada tabel 1.

Page 2: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

2

Tabel 1 Daftar Ekstensi dan Tipe File Visual FoxPro

Ekstensi

File Tipe File Keterangan

.app Generated Application Aplikasi yang hanya bisa dijalan-kan dalam

Visual FoxPro

.exe Executeable program Aplikasi/program yang siap dijalankan

.pjt Project memo File memo project

.dct Database memo File memo database

.dcx Database index File index database

.fpt Table memo File memo table

.idx Single index Index tunggal

.cdx Compound index Kumpulan satu atau lebih index tunggal

Ekstensi

File Tipe File Keterangan

.qpr Generated query program File query

.sct Form memo File memo form

.vcx Visual class library File library kelas Visual FoxPro

.vct Visual class library memo File memo library kelas Visual PoxPro

.frt Report memo File memo report Visual FoxPro

.fxp Compiled program File program yang telah dikompilasi

.h Header file File header biasanya digunakan intern di

dalam pengkodean

.mnt Menu memo File memo menu Visual FoxPro

.mpr Generated menu program File menu yang bisa dijalankan

.mpx Compiled menu program File menu yang telah dikompilasi

.err Compilation error File penyimpanan hasil kesalahan yang

terjadi saat kompilasi program/aplikasi

Sumber : Wahana Komputer, (2007:21)

3. Tipe Data dan Tipe Field

Page 3: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

3

Dalam Visual FoxPro, tipe data dibedakan dengan tipe field. Tipe data bersifat

lebih luas karena tipe data selain dapat digunakan untuk field juga dapat digunakan

untuk mendeklarasikan suatu variabel tertentu. Sedangkan tipe field hanya bisa

diterapkan pada field dalam tabel. Untuk melihat perbedaan keduanya, perhatikan tabel

2 dan 3 berikut ini :

Tabel 2. Tipe-tipe data dalam Visual FoxPro

Tipe Data Keterangan Ukuran Range

Blob

Data biner dgn panjang tidak

ditentukan. Nilai Blob disimpan dalam

file memo (.fpt)

4 bit pada tabel Dibatasi memory yang tersedia

dan atau sampai 2GB file.

Character Teks alpanumerik 1 bit per

karakter

Semua karakter, angka, simbol,

dll.

Currency Jumlah nilai uang 8 bit

-$922337203685477.5807

sampai dengan $922337203685477.5807

Date Data kronologis yang berisi bln, tgl,

tahun 8 bit 0001-01-01 s/d 9999-12-31

Date Time

Data kronologis yang berisi bln, tgl, tahun, jam, menit, dan detik

8 bit 0001-01-01 s/d 9999-12-31,

plus 00:00:00 a.m. s/d 11:59:59

pm.

Logical Nilai Boolean : Benar atau Salah 1 bit True (.T.) or False (.F.)

Numeric Integer atau angka desimal 8 bit pada

memori; 1-20

bit pada tabel

-.9999999999E+19 s/d .9999999999E+20

Varbinary Nilai-nilai biner

1 bit pernilai

heksadesimal

s/d total 255

bit

Semua nilai heksadesimal

Variant

Tipe data varian bisa berupa tipe data

apa saja yang dimiliki Visual FoxPro bahkan termasuk nilai nul.

Namu sekali nilai diberikan pada tipe

varian ini, maka tipe varian

diasumsikan sama dengan tipe data isi/nilai tsb.

Tergantung

nilai yang

diberikan pada

tipe varian ini

Tergantung nilai yang

diberikan pada tipe varian ini

Sumber : Wahana Komputer, (2007:46)

Tabel 3. Tipe-tipe field dalam Visual FoxPro

Page 4: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

4

Tipe Data Keterangan Ukuran Range Character

(Binary)

Teks alpanumerik yang tidak ingin

diubah melaui code page

1 bit per

karakter Semua karakter, angka, symbol

Double Angka yang memerlu-kan tingkat

keakuratan dan ketelitian tinggi 8 bit

+/- 4.94065645841247E-324 s/d

+/- 8.9884656743115E307

Float Integer atau angka desimal

8 bit pada

memori ; 1-20

bit pada tabel

-.9999999999E+19 s/d

.9999999999E+20

Integer Nilai angka tanpa desimal 4 bit -2147483647 s/d 2147483647

Intiger

(Autoinc)

Sama dengan integer sekaligus

memiliki nilai yang otomatis

meningkat. Read-only

4 bis Nilai ditentukan pada nilai

autoincrement Next dan Step

General Referensi pada OLE object 4 bit pada tabel Dibatasi memori yang tersedia

Memo

Teks alpanumerik dengan panjang

yang tidak ditentukan atau

referensi pada satu blok data

4 bit pada tabel Dibatasi memori yang tersedia

Memo

(Binary)

Memo yang tidak diubah melalui

code page 4 bit pada tabel Dibatasi memori yang tersedia

Varchar

Teks alpanumerik

Sama dengan tipe Character,

bedanya, field Varchar tidak memberikan spasi tambahan untuk

memenuhi panjang field

1 bit per

karakter s/d total 254 bit

Semua karakter

Varchar

(Binary)

Tipe Varchar yang tidak ingin

diubah melaui code page

1 bit per

karakter s/d

total 254 bit

Semua karakter

Sumber : Wahana Komputer, (2007:47)

4. Tahap Pembuatan Program

Pembuatan program dengan Visual FoxPro selalu melalui dua tahap, yakni:

a. Tahap pemrograman visual, dan

b. Tahap penulisan kode

Pada tahap pemrograman visual, mula-mula merancang form yang dipakai

program. Pada tahap ini dibuatkan form beserta kontrol-kontrol yang diperlukan.

Perancangan form beserta kontrol-kontrol yang dilibatkan ditangani dengan

menggunakan perangkat-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

Page 5: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

5

buatkan, maka kode yang kita buatkan harus menampilkan suatu tindakan. Penulisan

kode ini dilakukan dengan menggunakan editor teks yang tersedia pada paket visual

FoxPro.

5. Perangkat untuk Pembuatan Program

Bila bermaksud membuat suatu program dengan Visual FoxPro, akan selalu

melibatkan tiga jendela berikut :

a. Jendela Form

b. Jendela Form Control

c. Jendela Properties

Form merupakan jendela yang akan muncul sebagai latar belakang dari tampilan

suatu aplikasi. Sebuah aplikasi dapat memiliki banyak form, namun paling tidak

melibatkan sebuah form. Itulah sebabnya, tidak berlebihan jika form dianggap sebagai

tulang punggung aplikasi Visual FoxPro. Formlah yang menjadi antarmuka dengan

pemakai aplikasi.

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

Page 6: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

6

e. Other

Kelima tab ini terlihat pada bagian atas jendela properties. Tab properties berisi

properti dari kontrol, misalnya ukuran font, jenis font, nama kontrol, dan sebagainya.

Seperti pada gambar 2a

Gambar 2a. Jendela Properties

6. Gambaran program dengan kontrol Tombol Tekan dan Field Entri

Jika kita perhatikan program-program pada windows, pengerjaan suatu tindakan

bisa dilakukan dengan menggunakan suatu tombol perintah, seperti Ok atau Cansel.

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)

Page 7: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

7

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

8. Memperoleh nomor record sekarang

Untuk mengetahui nomor record sekarang (atau dengan kata lain melihat isi

pointer record), bisa digunakan perintah RECNO().

Perintah ini diketikan pada jendela command dan diakhiri dengan enter.

Misalnya buka dulu file table (USE MK.DBF dikuti dengan ENTER), lalu ketik

perintah ?RECNO() dikuti dengan ENTER. Perintah ini akan menampilkan posisi

record sekarang.

9. Memindahkan pointer record

Pointer record dapat diatur agar menunjuk ke suatu record tertentu dan tentu

saja record 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>

Page 8: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

8

Kata RECORD yang ditulis dalam tanda [] bisa diberikan ataupun tidak, tanpa

mengubah makna. Perlu diketahui, jika kata RECORD disertakan, tanda [] tidak perlu

ditulis.

10. Meletakan ke record pertama dan record terakhir

Untuk menggerakan pointer ke record pertama, bisa digunakan perintah GOTO

1 atau GOTO TOP. Perintah ini identik dengan GO 1 atau GO TOP.

Sedangkan untuk memindahkan pointer ke record terakhir, bisa digunakan

perintah GOTO BOTTOM atau GO BOTTOM.

11. Memindahkan posisi record ke record berikutnya

Salah satu tindakan yang nantinya banyak dijumpai dalam pemrograman adalah

memindahkan pointer ke record berikutnya. Langkah ini dapat ditempuh dengan

menggunakan perintah SKIP. Format perintah ini adalah :

SKIP [ <jumlah recor yang dilompati>]

Apabila jumlah record yang dilompati tidak disertakan, pergeseran adalah

sebesar satu record. Jadi SKIP identik dengan SKIP 1.

12. Meletakan pointer record ke record yang dicari

Visual FoxPro juga menyediakan perintah yang berguna untuk mencari suatu

record tertentu. Misalnya, perintah untuk menempatkan pointer record yang bagian

Mata Kuliah-nya berisi COBOL .

LOCATE FOR NAMA_MK=”COBOL”

Dalam hal ini LOCATE adalah perintah un tuk mencari suatu record dan FOR

NAMA_MK=”COBOL” adalah kriteria pencarian.

Untuk mencari record berikutnya yang cocok, kita cukup memberikan perintah

CONTINUE. Apabila hasil dari perintah LOCATE atau CONTINUE berupa :

End of Locate scope.

Page 9: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

9

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

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

14. Mengenal Pernyataan IF Pernyataan IF merupakan perintah yang sering kali dilibatkan dalam penulisan

kode. IF merupakan perintah yang berguna dalam mengambila suatu keputusan. Dalam

bentuk pseudocode, barang kali kita akan melakukan suatu tindakan dengan kriteria

sebagai berikut:

“Jika pointer tidak menunjuk ke awal file, pindahkanlah pointer record ke record

sebelumnya“.

Pada contoh ini, tindakan memindahkan pointer record ke record sebelumnya

hanya dilakukan jika pointer record tidak berada pada awal file (BOF).

Pseudokode di atas dapat dituangkan ke dalam pernyataan Visual FoxPro

sebagai berikut :

IF .NOT. BOF()

SKIP –1

ENDIF

Record maya

di awal tabel

Record maya

di akhir tabel

Page 10: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

10

Pada pernyataan di atas, .NOT. merupakan salah satu operator logika pada

Visual FoxPro. Operator .NOT. berarti “tidak”. Ekspresi .NOT. BOF() berarti “jika

BOF() 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.

Selain bentuk di atas, juga terdapat bentuk seperti berikut :

IF <kondisi>

<pernyataan-pernyataan_1>

ELSE

<pernyataan-pernyataan_2>

ENDIF

Pada bentuk ini,

<pernyataan-pernyataan_1> dijalankan jika <kondisi> bernilai .T.

<pernyataan-pernyataan_2> dijalankan jika <kondisi> bernilai .F.

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

Page 11: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

11

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 :

Karakter

Numerik

Ekspresi tanggal

Visual FoxPro menyediakan sejumlah operator relasi seperti pada tebel 3.

Tabel 3. Operator relasi

Operator Keterangan

< Kurang dari

> Lebih besar dari

= Sama dengan

= = Tepat sama dengan (bermanfaat untuk pembandingan string karakter)

<> atau # Tidak sama dengan

<= atau =< Kurang dari atau sama dengan

>= atau => Lebih besar dari atau sama dengan

$ Pembandingan string

Beberapa contoh ungkapan yang melibatkan operator relasi dapat dilihat pada tabel 4.

Page 12: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

12

Tebel 4. Contoh pembandingan dengan memakai operator relasi

Ekspresi Hasil Keterangan

‘A’ > ‘B’ .F. Menurut tabel ASCII, ‘A’ terletak sebelum ‘B’, jadi

nilai ‘A’ lebih kecil daripada ‘B’

‘A’ < ‘a’ .T. Menurut tabel ASCII, ‘A’ terletak sebelum ‘a’

2 > 1 .T. Nilai 2 memang lebih besar daripada 1

“Yogya”=”YOGYA” .F. Hurup kecil berbeda dengan hurup kapital

“ABCD” = “ABC” .T. Jika SET EXACT dalam keadaan OFF

“ABCD” = “ABC” .F. Jika SET EXACT dalam keadaan ON

“ABCD” = = “ABC” .F. Selalu menghasilkan .F., tidak tergantung pada

keadaan SET EXACT

“AB” $ “ABCD” .T. String “AB” ada pada “ABCD”

“BC” $ “ABCD” .T. String “BC” ada pada “ABCD”

“ABCD” $ “AB” .F. String “ABCD” tidak ada pada string “AB”

{21/12/2000} >

{12/11/2000}

.T. Tanggal 21 Desember 2000 memang lebih

belakangan daripada 12 Nopember 2000

b. Operator Logika

Operator logika digunakan untuk membandingkan dua buah ekspresi logika dan

menghasilkan nilai .T. (benar) atau .F. (salah). Operator logika yang disediakan oleh

Visual FoxPro dapat dilihat pada tabel 5.

Tabel 5. Operator Logika

Operator Keterangan Format

.NOT. Operator

“Tidak”

.NOT. <ekspresi>

Hasil .T. jika <ekspresi> bernilai .F.

Hasil .F. jika <ekspresi> bernilai .T.

.AND. Operator

“Dan”

<ekspresi_1> .AND. <ekspresi_2>

Hasil berupa .T. hanya jika kedua <ekspresi>

bernilai .T.

.OR. Operator

“Atau”

<ekspresi_1> .OR. <ekspresi_2>

Hasil berupa .T. jika ada <ekspresi> yang bernilai .T.

Page 13: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

13

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

Dapat disederhanakan menjadi :

Diskon = IIF(TotalPembelian >= 100000, 1/10 * TotalPembelian, 0)

17. Pernyataan DO CASE

Pernyataan DO CASE merupakan alternatif dari IF.. ELSEIF. Format

pernyataan ini adalah :

DO CASE

CASE <kondisi_1>

<pernyataan_pernyataan_1>

CASE <kondisi_2>

<pernyataan_pernyataan_2>

OTHERWISE

<pernyataan_pernyataan_n>

ENDCASE

Dimana :

Bila <kondisi_1> bernilai .T., maka <pernyataan_pernyataan_1> saja yang akan

dijalankan.

Page 14: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

14

Bilai <kondisi_2> bernilai .T., maka <pernyataan_pernyataan_2> saja yang akan

dijalankan.

<pernyataan_pernyataan_n> hanya akan dijalankan sekiranya tidak ada <kondisi>

yang bernilai .T.

Bagian OTHERWISE bisa tidak disertakan. Jika bagian ini tidak disertakan, dan tak

satupun <kondisi> yang bernilai .T., maka tak ada pernyataan yang dieksekusi.

18. Mengenal Kotak Dialog

Kotak dialog digunakan untuk memberitahukan sesuatu informasi kepada

pemakai, misalnya untuk menyampaikan suatu pesan kesalahan. Selain untuk

kleperluan seperti ini, kotak dialog juga bisa dipakai untuk melakukan suatu konfirmasi

terhadap pemakai; misalnya pemakai perlu menjawab Yes atau No. Sebuah kotak

dialog paling tidak mempunyai sebuah tombol tekan.

a. Kaidah MESSAGEBOX

Kaidah perintah MessageBox adalah sebagai berikut :

MessageBox(<pesan>, [<tipe-kotak-dialog>,[<judul>]]

Argumen kedua dan ketiga bisa tidak disertakan.

Contoh :

MessageBox("Terima Kasih",1+32, "Selesai")

Hasilnya adalah sebagai berikut (Gambar 3.1)

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

Page 15: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

15

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

Tabel 6. Nilai yang menentukan tombol-tekan yang ditampilkan pada kotak dialog.

Tipe Kotak Tombol-tombol

yang tersedia Bentuk

0 OK

1 OK, Cancel

2 Abort, Retry, Ignore

3 Yes, No, Cancel

Page 16: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

16

4 Yes, No

5 Retry, Cancel

c. MESSAGEBOX Tanpa Argumen Ketiga

Bila memanggil MessageBox tanpa menyertakan argumen ketiga, maka yang

ditampilkan adalah kotak dialog yang hanya berisi tombol tekan OK. Contohnya :

MessageBox(“Pesan”, “Judul”)

Akan memberikan hasil sbb. (Gambar 3.2)

Gambar 3.2 Kotak Dialog tanpa argumen ketiga

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)

Page 17: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

17

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

Tabel 3.5. Nilai untuk menentukan ikon kotak dialog

Nilai Ikon Gambar Warna Ikon

16

Merah

32

Hijau

48

Kuning

64

Biru

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

Page 18: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

18

Berikut adalah contoh hasil dari perintah (lihat gambar 3.4)

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

Gambar 3.4 Kotak Dialog dengan tombol kedua sebagai default

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 :

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

Setelah pemakai meng-klik salah satu tombol, kode dari tombol bersangkutan akan

diletakan ke variabel jawaban. Selanjutnya kita tinggal memeriksa isi variabel tersebut.

Tabel 3.6. mencantumkan nilai yang mewakili tombol yang dipilih oleh pemakai.

Page 19: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

19

Tabel 3.6. Kode tombol pada kotak dialog

Nilai Tombol yang dipilih

1 OK

2 Cancel

3 Abort

4 Retry

5 Ignore

6 Yes

7 No

Untuk menyeleksi tombol yang dipilih, kita bisa menggunakan pernyataan IF ataupun

DO CASE.

Contoh dengan IF :

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

IF Jawaban = 1 && Berarti tombol tombol Okyang dipilih

* Memproses pesan

ELSE

* Membatalkan perintah

ENDIF

h. Informasi lebih dari satu baris

Untuk mengatur informasi yang ditampilkan pada kotak dialog yang terdiri

lebih dari satu baris. Caranya, kita perlu menyisipkan kode CHR(13) dan CHR(10).

CHR(13) adalah kode carriage return dan CHR(10) adalah kode linefeed. Kedua kode

tersebut secara berurutan biasa dipakai untuk membuat baris baru.

Amati contoh perintah berikut :

MessageBox(“Pesan baris pertama”+CHR(13)+CHR(10)+”Pesan baris kedua”, ;

“Judul”, 1+32+256)

Hasilnya sebagai berikut (lihat gambar 3.5)

Page 20: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

20

Gambar 3.5 Kotak Dialog dengan dua baris pesan

i. Kelemahan MESSAGEBOX

MessageBox tidak memungkinkan kita mengganti keterangan yang terdapat

pada tombol kotak dialog. Misalnya, kita tidak dapat mengubah kata Yes menjadi Ya.

19. Membuat Indeks

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.

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

Page 21: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

21

21. Pencarian Record dengan SEEK / FIND

Pencarian suatu record tertentu dapat dilakukan dengan cepat seandainya file

indeks digunakan. Namun, tentu saja data untuk pencarian record harus sama dengan

field kunci. Bentuk pencarian dengan SEEK adalah sbb.:

USE MK.DBF

SET ORDER TO TAG KODEMK

SEEK “MK102-202”

?FOUND()

?FOUND() adalah perintah untuk mendeteksi/memeriksa apakah data yang

dicari ditemukan atau tidak. Bila hasilnya .T. berarti data ditemukan, sedangkan jika

hasilnya .F. berarti data tersebut tidak ditemukan.

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

Page 22: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

22

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

Page 23: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

23

Gambar 1.1.2. Kotak dialog penyimpanan file Project

Gambar 1.1.3. Kotak dialog penyimpanan file Project

Page 24: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

24

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

Page 25: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

25

2. Memberikan Judul Form dan Gambar Latar Form a. Munculkan Jendela Properties dengan meng-klik kanan pada form kosong

b. Pilih dan klik Properties

c. Pilih object Form pada jendela properties

d. Pada baris caption, ketik PERHITUNGAN HASIL SELEKSI

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

b. Buatkan Questin Nama, Nilai Akhir, dan Keterangan dengan menggunakan

Label dari Form Controler Toolbar

c. Buatkan Field Entry untuk meng-input Nama, Nilai Akhir dan Keterangan

dengan menggunakan Text Box.

d. Hasilnya seperti pada gambar 1.2.3.

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 thisform.text2.value>=60

thisform.text3.value="Lulus"

else

thisform.text3.value="Gagal"

endif

return

Page 26: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

26

5. Simpan Form dengan nama file HasilSeleksi1 (sebaiknya nama file tidak pakai

sepasi)

6. Uji Form dengan meng-klik icon Run pada toolbar Standard

1.3 Latihan Membuat Form

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

86 - 100 4 A

71 - 85 3 B

56 - 70 2 C

41 - 55 1 D

0 - 40 0 E

1. Buatkan Form seperti pada gambar 1.3.1.

Gambar 1.3.1 Form Perhitungan Hasil Seleksi II

Page 27: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

27

2. Buatkan Tombol Tekan Checker dengan fasilitas Command Button dari Form

Controler Toolbar, kemudian berinama Proses.

3. Isikan Procedure Click dari Control Proses berikut :

local vna

vna=(thisform.text2.value+thisform.text3.value*2+thisform.text4.value)/4

if vna>=86

vam=4

vhm="A"

else

if vna>=71

vam=3

vhm="B"

else

if vna>=56

vam=2

vhm="C"

else

if vna>=41

vam=1

vhm="D"

else

vam=0

vhm="D"

endif

endif

endif

endif

thisform.text5.value=vna

thisform.text6.value=vam

thisform.text7.value=vhm

retu

4. Simpan Form dengan nama File HasilSeleksi2

5. Uji Form.

Page 28: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

28

1.4 Tugas 1

1. Kasus Tugas 1 :

Buatkan form untuk menghitung gaji pokok, gaji lembur dan jumlah gaji dengan

ketentuan sbb :

- Jumlah jam kerja pokok = 8 jam

- Jika bekerja lebih dari 8 jam, maka selebihnya dihitung lembur

- Tarip lembur = 150% * Gaji Per Jam

- Gaji Total = Gaji Pokok + Gaji Lembur

2. Buatkan Form seperti pada gambar 1.4.1. :

Gambar 1.4.1 Form Perhitungan Upah Harian

Page 29: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

29

II. Praktek Visual FoxPro II

Materi : 1. Tahap pembuatan form

2. Penggunaan fasilitas Option Group & Check Box

3. Penggunaan Perintah IF

4. Penggunaan Perintah Do Case

5. Menyimpan, Menguji dan Menutup form

2.1 Membuka File Project

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

Gambar 2.1.1 Kotak Dialog Open File

Page 30: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

30

2.2 Membuat File Form Baru

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. 2.2.1)

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

c. Pilih object Form pada jendela properties

d. Pada baris caption, ketik ENTRY GAJI KARYAWAN

6 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

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.

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.

Page 31: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

31

c. Ganti Option1 dengan Kawin, dengan cara klik kanan option group kemudian

pilih edit.

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 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=thisform.gol.value

do case

case gol=1

gapok=200000

case gol=2

gapok=400000

case gol=3

gapok=600000

Page 32: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

32

case gol=4

gapok=800000

otherwise

gapok=0

endcase

st=thisform.st.value

if st=1

thisform.ja.visible=.t.

thisform.text2.visible=.t.

thisform.o.visible=.t.

ti=0.5*gapok

else

thisform.ja.visible=.f.

thisform.text2.visible=.f.

thisform.o.visible=.f.

ti=0

thisform.text2.value=0

endif

ja=thisform.text2.value

if ja>3

ta=0.2*gapok*3

else

ta=0.2*gapok*ja

endif

gatot=gapok+ti+ta

thisform.text3.value=gapok

thisform.text4.value=ti

thisform.text5.value=ta

thisform.text6.value=gatot

retu

6. Mengisi Control Option Group StatusK dengan Formula

a. Double klik Control StatusK

b. Cari dan pilih Procedure InteractiveChange

c. Isi Procedure InteractiveChange object ST dicopy dari Procedure

Interactivechange object Gol

7. Mengisi Control Field Entry Text2 dengan Formula

a. Double klik Control Text2

b. Cari dan pilih Procedure InteractiveChange

Page 33: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

33

c. Isi Procedure InteractiveChange object Text2 dicopy dari Procedure

Interactivechange object Gol

8. Simpan Form dengan nama file HitungGaji (sebaiknya nama file tidak pakai

sepasi)

9. Uji Form dengan meng-klik icon Run pada toolbar Standard

2.3 Membuat Form PilihGambar

1. Buatkan Form seperti pada gambar 2.3.1. berikut :

Gambar 2.3.1 Form PilihGambar

2. Buatkan Option Group, kemudian berinama PIL. Button Count-nya ganti 6

3. Ganti Option1 s/d Option6 dengan Gambar1 s/d Gambar6

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)

5. Buatkan CheckBox Kiri Atas kemudian berinama kiri, CheckBox Tengah Atas

kemudian berinama tengah, dan CheckBox Kanan Atas kemudian berinama

kanan) sebanyak tiga buah yang diletakan disebelah Kiri Bawah, Tengah Bawah

dan Kanan Bawah Option Group (seperti pada gambar 2.3.1)

Page 34: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

34

6. Double Klik control OptionGroup Pil, kemudian pilih procedure InteractiveChange,

lalu ketik procedure berikut :

do case

case thisform.pil.value=1

thisform.image1.picture="gb1.jpg"

case thisform.pil.value=2

thisform.image1.picture="gb2.jpg"

case thisform.pil.value=3

thisform.image1.picture="gb3.jpg"

case thisform.pil.value=4

thisform.image1.picture="gb4.jpg"

case thisform.pil.value=5

thisform.image1.picture="gb5.jpg"

case thisform.pil.value=6

otherwise

thisform.image1.picture="gb6.jpg"

endcase

7. Double Klik control CheckBox Kiri, kemudian pilih procedure InteractiveChange,

lalu ketik procedure berikut :

if thisform.kiri.value=1

thisform.gbkiri.picture=thisform.image1.picture

else

thisform.gbkiri.picture=""

endif

8. Double Klik control CheckBox Tengah, kemudian pilih procedure

InteractiveChange, lalu ketik procedure berikut :

if thisform.tengah.value=1

thisform.gbtengah.picture=thisform.image1.picture

else

thisform.gbtengah.picture=""

endif

9. Double Klik control CheckBox Kanan, kemudian pilih procedure

InteractiveChange, lalu ketik procedure berikut :

if thisform.kanan.value=1

thisform.gbkanan.picture=thisform.image1.picture

Page 35: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

35

else

thisform.gbkanan.picture=""

endif

10. Simpan Form dengan nama File PilihGB

11. Uji Form.

2.4 Tugas 2

1. Buatkan Form seperti pada gambar 2.4.1

Gambar 2.4.1. Form Menghitung Angka

2. Formula / ketentuan perhitungan adalah sbb. :

a=0

b=0

c=0

Jika Check box 100 dipilih

a=100

Jika Check box 10 dipilih

b=10

Page 36: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

36

Jika Check box 2 dipilih

c=2

Jika option tambah dipilih, maka formulanya :

Hasil = a + b + c

Jika option Kurang dipilih, maka formulanya :

Jika yang check box hanya 100 dan 10, maka formulanya

Hasil = a - b

Jika yang check box hanya 10 dan 2, maka formulanya

Hasil = b - c

Jika yang check box hanya 100 dan 2, maka formulanya

Hasil = a - c

Jika yang check box 100, 10 dan 2, maka formulanya

Hasil = a - b - c

Jika option Kali dipilih, maka :

Jika yang check box hanya 100 dan 10, maka formulanya

Hasil = a * b

Jika yang check box hanya 10 dan 2, maka formulanya

Hasil = b * c

Jika yang check box hanya 100 dan 2, maka formulanya

Hasil = a * c

Jika yang check box 100, 10 dan 2, maka formulanya

Hasil = a * b * c

3. Selamat mencoba !

Page 37: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

37

III. Praktek Visual FoxPro III

Materi : 1. Tahap pembuatan form

2. Penggunaan fasilitas Olecontrol

3. Penggunaan Perintah DO WHILE

4. Penggunaan Perintah FOR NEXT

5. Menyimpan, Menguji dan Menutup form

3.1 Membuka File Project 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 do drive O:\

4.. Pilih dan Double Klik file project PRAKVFP, seperti pada gambar 3.1.1

Gambar 3.1.1 Kotak Dialog Open File

3.2 Aplikasi DO WHILE

1. Membuat Form Kosong

a. Klik page Documents pada Project Manager

b. Pilih dan Klik object Form

Page 38: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

38

c. Klik tombol New

d. Pilih dan klik tombol New Form pada kotak dialog New Form (gambar 3.2.1)

Gambar 3.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

c. Pilih object Form pada jendela properties

d. Pada baris caption, ketik MEMBUAT ANGKA BERURUT

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

b. Buatkan Question Start, Step, Stop, dan Hasil dengan menggunakan Label dari

Form Controler Toolbar

c. Buatkan Field Entry untuk meng-input Start, Step, Stop, dan Hasil dengan

menggunakan Text Box.

4. Membuat Command Button

a. Cari dan Klik control Command Button pada Form Control Toolbar

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

b. Pilih dan Klik Option

c. Pilih dan Klik page Controls

Page 39: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

39

d. Pilih dan Klik ActiveX Control

e. Cari Microsoft ProgressBar Control 6.0 kemudian berikan tanda Check Box

pada kotak sebelah kirinya, seperti pada gambar 3.2.2.

Gambar 3.2.2 Kotak dialog option

f. Klik tombol Ok

g. Pilih dan klik control View Classes pada Form Controls Toolbar

h. Pilih dan klik ActiveX Controls

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.

Page 40: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

40

Gambar 3.2.3 Form Membuat Angka Berurut

k. Ganti name-nya dengan Ctrl

6. Mengisi Control Tombol Proses dengan Formula

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

if a<=c

thisform.ctrl.value=n

endif

Page 41: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

41

x=0

do while x<1000000

x=x+1

enddo

enddo

else

messagebox("Start, Step dan Stop harus diisi !",0,"Perhatian !")

thisform.text1.setfocus()

retu

endif

this.enabled=.t.

retu

7. Simpan dan Uji Form a. Simpan dengan nama file URUTANGKA1

b. Uji Form dengan meng-klik Run / !.

3.3 Aplikasi FOR NEXT

1. Buka File Form URUTANGKA1

2. Simpan dengan perintah Save As dan berinama URUTANGKA2

3. Double Click tombol Proses, kemudian prosedurnya edit menjadi sbb. :

local a, b, c, n, i

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

for i=a to c step b

thisform.text4.value=a

a=a+b

n=(100/c)*a

if a<=c

thisform.ctrl.value=n

endif

for x=1 to 10000000 step 1

next

Page 42: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

42

next

else

messagebox("Start, Step dan Stop harus diisi..!",0,"Perhatian ..!")

thisform.text1.setfocus()

retu

endif

this.enabled=.t.

retu

4. Simpan Form dengan nama File URUTANGKA2

5. Uji Form dengan mengklik icon Run / !.

3.4 Tugas 3

1. Klik page Code pada project manager

2. Pilih dan klik option Program, kemudian klik tombol New

3. Ketik program berikut :

function terbilang

parameter numerik

private hasil,ulang,uang,kesatu,kedua,ketiga,cangka

private cangka0,cangka1,cangka2,cangka3,cangka4,cangka5

private cangka6,cangka7,cangka8,cangka9

private satu,dua,tiga,gabung,sen1,sen2

hasil=""

uang=str(numerik,15,2)

kesatu=1

kedua=2

ketiga=3

cangka0=" "

cangka1="Satu "

cangka2="Dua "

cangka3="Tiga "

cangka4="Empat "

cangka5="Lima "

cangka6="Enam "

cangka7="Tujuh "

cangka8="Delapan "

cangka9="Sembilan "

gabung=" "

for ulang=1 to 4

satu=substr(uang,kesatu,1)

Page 43: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

43

dua=substr(uang,kedua,1)

tiga=substr(uang,ketiga,1)

gabung=satu+dua+tiga

if val(satu)=1

hasil=hasil+"Seratus "

else

if val(satu)>1

hasil=hasil+cangka&satu+"Ratus "

endif

endif

DO CASE

CASE VAL(DUA) = 1

DO CASE

CASE VAL(TIGA)=0

HASIL=HASIL + "Sepuluh "

CASE VAL(TIGA)=1

HASIL=HASIL + "Sebelas "

OTHER

HASIL=HASIL + ALLTRIM(CANGKA&TIGA)+" Belas "

ENDCASE

CASE VAL(DUA) > 1

HASIL=HASIL + CANGKA&DUA + "Puluh "+CANGKA&TIGA

CASE VAL(DUA)=0 .AND. VAL(TIGA) > 0

IF (ulang=3 .AND. GABUNG="001") .OR. ;

(ulang=3 .AND. GABUNG=" 1")

HASIL=HASIL+"Seribu "

ELSE

HASIL=HASIL+CANGKA&TIGA

ENDIF

ENDCASE

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

Page 44: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

44

sen1=substr(uang,14,1)

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

4. Uji Program di atas dengan form berikut :

5. Procedure InteractiveChange pada Object Text1, adalah sbb.:

set defa to d:\Visual1\Encep

set procedure to terbilang

a=terbilang(thisform.text1.value)

thisform.text2.value=a

retu

Page 45: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

45

IV. Praktek Visual FoxPro IV

Materi : 1. Membuat Databse

2. Membuat Table

3. Membuat Form Transaksi Penerimaan Siswa Baru

4.1 Bahan Praktek 4

1. Buatkan Project File dengan nama PSB

2. Buatkan Database dengan nama PSB

3. Buatkan Table dengan nama CASIS, struktur table sbb :

4. Buatkan lagi Table dengan nama SEKOLAH, struktur table sbb :

Entry data sekolah sbb :

Page 46: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

46

5. Buatkan Table pada Free Table dengan nama NODAF, struktur table sbb :

6.. Buatkan Form dengan nama DAFTAR, desain form dapat dilihat pada gambar

4.1.1.

Gambar 4.1.1 Form Kelola Pendaftaran Siswa

7. Listing Program :

a. Object FORM1 Procedure LOAD SET DEFAULT TO d:\psb\data

SET DATE BRITISH

SET CENTURY ON

CLOSE DATABASES

CLOSE INDEXES

IF USED("NODAF")

USE IN NODAF

ENDIF

IF USED("Sekolah")

USE IN Sekolah

ENDIF

Page 47: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

47

IF USED("CaSis")

USE IN CaSis

ENDIF

SELECT A

USE NODAF

SELECT B

USE sekolah

SET ORDER TO TAG asalsek

SELECT C

USE CASIS

SET ORDER TO tag NoDaf

RETURN

b. Object FORM1 Procedure UNLOAD CLOSE DATABASES

CLOSE INDEXES

RETURN

c. Object FORM1 Procedure KOSONGKAN thisform.nodaf.Value=""

thisform.nama.Value=””

thisform.asalsek.Value=""

thisform.nilai.Value=0

RETURN

d. Object FORM1 Procedure TAMPILKAN thisform.nodaf.Value=Casis.nodaf

thisform.nama.Value=casis.nama

thisform.asalsek.Value=casis.asalsek

thisform.nilai.Value=casis.nilai

thisform.tgldaf.day=DAY(casis.tgldaf)

thisform.tgldaf.month=month(casis.tgldaf)

thisform.tgldaf.year=year(casis.tgldaf)

RETURN

e. Object FORM1 Procedure AKTIFKAN PARAMETERS X

thisform.nama.enabled=X

thisform.asalsek.enabled=X

thisform.nilai.enabled=X

RETURN

Page 48: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

48

f. Object FORM1 Procedure KENDALI PARAMETERS Y

thisform.pertama.Enabled=Y

thisform.sebelumnya.Enabled=Y

thisform.berikutnya.Enabled=Y

thisform.terakhir.Enabled=Y

RETURN

g. Object FORM1 Procedure ACTIVATE thisform.kosongkan

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.f.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.f.

thisform.keluar.Enabled=.t.

thisform.tgldaf.day=DAY(DATE())

thisform.tgldaf.month=month(DATE())

thisform.tgldaf.year=year(DATE())

RETURN

h. Object TAMBAH Procedure CLICK PUBLIC N

SELECT NODAF

GO bottom

IF EOF()

APPEND BLANK

N=1

ELSE

N=nodaf.no+1

ENDIF

th1=thisform.tgldaf.year

th2=thisform.tgldaf.year+1

ta=RIGHT(STR(th1,4),2)+RIGHT(STR(th2,4),2)

IF n<10

vno=ta+"00"+LTRIM(STR(n,3))

ELSE

IF n<100

Page 49: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

49

vno=ta+"0"+LTRIM(STR(n,3))

ELSE

vno=ta+LTRIM(STR(n,3))

ENDIF

ENDIF

thisform.kosongkan

thisform.nodaf.value=VNO

thisform.aktifkan(.t.)

thisform.kendali(.f.)

thisform.simpan.Enabled=.t.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.t.

thisform.perbaiki.Enabled=.f.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.nama.setfocus

RETURN

i. Object SIMPAN Procedure CLICK IF EMPTY(thisform.nama.Value) .or. ;

EMPTY(thisform.nilai.Value) .or. ;

EMPTY(thisform.asalsek.Value)

MESSAGEBOX("Isi data dengan lengkap !",0,"Perhatian...")

thisform.nama.SetFocus

RETURN

ENDIF

SELECT CaSis

LOCATE FOR Nama=TRIM(thisform.nama.Value) .and. ;

AsalSek=TRIM(thisform.asalsek.Value)

IF FOUND() MESSAGEBOX("Maaf transaksi tidak dapat diproses !"+CHR(13)+;

"Data tersebut sudah tercatat...",0,"Perhatian...")

thisform.nama.SetFocus

RETURN

ENDIF

LOCATE FOR NoDaf=SPACE(7)

IF ! FOUND()

APPEND BLANK

ENDIF

tgl=thisform.tgldaf.day

bln=thisform.tgldaf.month

Page 50: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

50

thn=thisform.tgldaf.year

vtgl=LTRIM(STR(tgl,2))+"/"+LTRIM(STR(bln,2))+"/"+STR(thn,4)

REPLACE tgldaf WITH CTOD(vtgl)

REPLACE NoDaf WITH thisform.nodaf.Value

REPLACE Nama WITH thisform.nama.Value

REPLACE asalsek WITH thisform.asalsek.Value

REPLACE nilai WITH thisform.nilai.Value

SELECT NODAF

GO bottom

REPLACE no WITH N

thisform.refresh MESSAGEBOX("Penyimpanan sudah dilakukan...",0,"Perhatian...")

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.t.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.t.

thisform.keluar.Enabled=.t.

RETURN

j. Object BATAL Procedure CLICK thisform.kosongkan

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.f.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.f.

thisform.keluar.Enabled=.t.

thisform.tgldaf.day=DAY(DATE())

thisform.tgldaf.month=month(DATE())

thisform.tgldaf.year=year(DATE())

RETURN

Page 51: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

51

k. Object PERBAIKI Procedure CLICK thisform.aktifkan(.t.)

thisform.kendali(.f.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.t.

thisform.perbaiki.Enabled=.f.

thisform.ud.Enabled=.t.

thisform.hapus.Enabled=.f.

thisform.keluar.Enabled=.f.

RETURN

l. Object UD Procedure CLICK jawab=MESSAGEBOX("Anda yakin mau memperbaiki data sebelumnya ?"; ,4+32+256,"Perhatian....")

IF jawab=6

SELECT CASIS

tgl=thisform.tgldaf.day

bln=thisform.tgldaf.month

thn=thisform.tgldaf.year vtgl=LTRIM(STR(tgl,2))+"/"+LTRIM(STR(bln,2))+"/"+STR(thn,4)

REPLACE tgldaf WITH CTOD(vtgl)

REPLACE NoDaf WITH thisform.nodaf.Value

REPLACE Nama WITH thisform.nama.Value

REPLACE asalsek WITH thisform.asalsek.Value

REPLACE nilai WITH thisform.nilai.Value

ENDIF

thisform.refresh

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.t.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.t.

thisform.keluar.Enabled=.t.

RETURN

Page 52: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

52

m. Object HAPUS Procedure CLICK jawab=MESSAGEBOX("Anda yakin record ini mau dihapus ?";

,4+32+256,"Perhatian....")

IF jawab=6

DELETE

SET DELETED ON

ENDIF

thisform.refresh

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.t.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.f.

thisform.keluar.Enabled=.t.

RETURN

n. Object KELUAR Procedure CLICK jawab=MESSAGEBOX("Anda Yakin Mau Keluar ?",;

4+32+256,"Perhatian....")

IF jawab=6

SET DELETED OFF

SELECT CaSis

PACK

thisform.Release

ENDIF

RETURN

o. Object PERTAMA Procedure CLICK SELECT CaSis

GO top

IF BOF()

MESSAGEBOX("Record kosong",0,"Perhatian...")

RETURN

ENDIF

thisform.grid1.SetFocus

thisform.Refresh

RETURN

Page 53: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

53

p. Object SEBELUMNYA Procedure CLICK SELECT CaSis

SKIP -1

IF BOF()

GO TOP

ENDIF

thisform.grid1.SetFocus

thisform.Refresh

RETURN

q. Object BERIKUTNYA Procedure CLICK SELECT CaSis

SKIP

IF EOF()

GO BOTTOM

ENDIF

thisform.grid1.SetFocus

thisform.Refresh

RETURN

r. Object TERAKHIR Procedure CLICK SELECT CaSis

GO BOttom

IF EOF()

MESSAGEBOX("Record kosong",0,"Perhatian...")

RETURN

ENDIF

thisform.grid1.SetFocus

thisform.Refresh

RETURN

s. Object GRID1 Procedure AfterRowColChange LPARAMETERS nColIndex

thisform.tampilkan

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.perbaiki.Enabled=.t.

thisform.ud.Enabled=.f.

thisform.hapus.Enabled=.t.

thisform.keluar.Enabled=.t.

RETURN

Page 54: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

54

t. Object TIMER1 Procedure TIMER Thisform.l.FORECOLOR=RGB(RAND()*255,RAND()*255,RAND()*255)

t=thisform.l.caption

thisform.l.caption=RIGHT(t,LEN(t)-1)+LEFT(t,1)

4.2 Tugas 4

1. Buatkan Table dengan nama TU, struktur table sbb :

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

Page 55: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

55

V. Praktek Visual FoxPro V

Materi : 1. Membuat Table Temp

2. Membuat Form Report

5.1 Bahan Praktek 5

1. Buatkan Table dengan nama SELEKSI, struktur table sbb :

2. Buatkan Report dengan nama DAFCASIS, sbb :

Page 56: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

56

3. Copykan file CASIS ke TMPCASIS, pada command prompt, dengan perintah :

SET DEFA TO O:\AFOX\NAMAANDA

USE CASIS

COPY TO TMPCASIS

4. Buatkan Form dengan nama PG, 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("seleksi")

USE IN seleksi

ENDIF

SELECT A

USE casis

SELECT B

USE seleksi

RETURN

Page 57: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

57

b. Object PROSES Procedure CLICK IF USED("tmpcasis")

USE IN TMPCASIS

ENDIF

DELETE FILE tmpcasis.dbf

SELECT CASIS

SORT ON NILAI/D TO TMPCASIS

jml=thisform.text1.Value

SELECT seleksi

DELETE ALL

PACK

APPEND FROM TMPCASIS FOR RECNO()<=jml

GO bottom

A=seleksi.nilai

REPLACE ALL nilaipg WITH a

thisform.text2.Value=A

RETURN

c. Object CETAK Procedure CLICK SELECT seleksi

GO TOP

VNO=1

DO WHILE ! EOF()

REPLACE NO WITH VNO

VNO=VNO+1

SKIP

ENDDO

REPORT FORM D:\PRG\PSB\PRG\DAFCASIS PREVIEW

RETURN

d. Object SIMPAN Procedure CLICK SELECT CASIS

REPLACE ALL KET WITH "0"

SELECT SELEKSI

GO TOP

DO WHILE ! EOF()

SELECT CASIS

LOCATE FOR CASIS.NODAF=SELEKSI.NODAF

IF FOUND()

REPLACE CASIS.KET WITH "1"

ENDIF

SELECT SELEKSI

Page 58: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

58

SKIP

ENDDO

e. Object KELUAR Procedure CLICK thisform.Release

RETURN

5.2 Tugas 5

Buatkan Report dengan nama DAFTU, sbb :

Page 59: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

59

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

Page 60: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

60

Gambar 6.1.1 Form Kelola Biaya Renang

6. Listing Program :

a. Object Form1 Procedure LOAD SET Date BRITISH

SET DEFAULT TO d:\Visual1\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

thisform.text1.Enabled=x

thisform.text2.Enabled=x

thisform.text3.Enabled=x

thisform.text4.Enabled=x

return

Page 61: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

61

d. Object Form1 Procedure KOSONGKAN thisform.text1.Value=CTOD(" / / ")

thisform.text2.Value=""

thisform.text3.Value=""

thisform.text4.Value=0

thisform.text5.Value=0

return

e. Object Form1 Procedure TAMPILKAN thisform.text1.Value=renang.tanggal

thisform.text2.Value=renang.nobukti

thisform.text3.Value=renang.nama

thisform.text4.Value=renang.jmlorg

thisform.text5.Value=renang.jmlbayar

return

f. Object Form1 Procedure KENDALI PARAMETERS Y

thisform.Sebelumnya.Enabled=Y

thisform.Berikutnya.Enabled=Y

RETURN

g. Object Form1 Procedure ACTIVATE thisform.kosongkan

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.tambah.Enabled=.t.

thisform.simpan.Enabled=.f.

thisform.keluar.Enabled=.t.

thisform.grid1.readonly=.t.

thisform.grid1.enabled=.t.

return

h. Object TAMBAH Procedure CLICK thisform.kosongkan

thisform.aktifkan(.t.)

thisform.kendali(.f.)

thisform.tambah.Enabled=.f.

thisform.simpan.Enabled=.t.

thisform.keluar.Enabled=.f.

thisform.grid1.enabled=.f.

return

Page 62: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

62

j. Object SIMPAN Procedure CLICK IF EMPTY(THISFORM.TEXT1.VALUE) .OR. ;

EMPTY(THISFORM.TEXT2.VALUE) .OR. ;

EMPTY(THISFORM.TEXT3.VALUE) .OR. ;

EMPTY(THISFORM.TEXT4.VALUE)

MESSAGEBOX("Isi data dengan lengkap !",0,;

"Perhatian...")

THISFORM.TEXT1.SETFOCUS

RETURN

ENDIF

IF DOW(THISFORM.TEXT1.VALUE)=1 .OR. ;

DOW(THISFORM.TEXT1.VALUE)=7

VTARIP=15000

ELSE

VTARIP=10000

ENDIF

VJMLORG=THISFORM.TEXT4.VALUE

JMLTRAN=VTARIP*VJMLORG

IF VJMLORG >= 10

VDISKON= 0.1 * JMLTRAN

ELSE

VDISKON= 0

ENDIF

VBAYAR=JMLTRAN-VDISKON

LOCATE FOR NOBUKTI=SPACE(10)

IF ! FOUND()

APPEND BLANK

ENDIF

REPLACE TANGGAL WITH THISFORM.TEXT1.Value

REPLACE NOBUKTI WITH THISFORM.TEXT2.Value

REPLACE NAMA WITH THISFORM.TEXT3.Value

REPLACE JMLORG WITH THISFORM.TEXT4.Value

REPLACE TARIP WITH VTARIP

REPLACE DISKON WITH VDISKON

REPLACE JMLBAYAR WITH VBAYAR

Thisform.text5.value=vbayar

THISFORM.GRID1.SetFocus

THISFORM.REFRESH

thisform.aktifkan(.f.)

thisform.kendali(.t.)

thisform.tambah.Enabled=.t.

Page 63: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

63

thisform.simpan.Enabled=.f.

thisform.keluar.Enabled=.t.

thisform.grid1.enabled=.t.

RETURN

k. Object SEBELUMNYA Procedure CLICK SKIP -1

IF BOF()

GO TOP

ENDIF

THISFORM.TAMPILKAN

RETURN

l. Object BERIKUTNYA Procedure CLICK SKIP

IF BOF()

GO BOTTOM

ENDIF

THISFORM.TAMPILKAN

RETURN

m. Object KELUAR Procedure CLICK THISFORM.Release

RETU

n. Object GRID1 Procedure AfterRowColChange LPARAMETERS nColIndex

thisform.Tampilkan

RETURN

Page 64: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

64

6.2 Tugas 6

1. Buat file Project dengan nama TGS6

2. Buat file Database dengan nama DATATGS6

3. Buat file Table dengan nama file PASIEN, dengan struktur file sbb :

4. Buat Form untuk meng-input data PASIEN, dengan disain Form sbb.:

Gambar 1. Desain Form. (Biaya Perawatan)

Page 65: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

65

5. Ketentuan untuk mengisi BAYAR (Jumlah Bayar) adalah :

Lama Rawat = Tanggal Keluar – Tanggal Masuk

RUANG RAWAT TARIP PER HARI

ICU 250,000

VIP 300,000

KELAS 1 200,000

KELAS 2 100,000

KELAS 3 50,000

Jumlah Bayar = Lama Rawat * Tarip

VII. QUIZ

Page 66: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

66

VIII. Praktek Visual FoxPro VIII

Materi : 1. Membuat Project File Sistem Informasi Penjualan Barang Metode FIFO

2. Membuat Databse Sistem Informasi Penjualan Barang

3. Membuat Table Barang, Pemasok, Pembelian dan DetailBeli

4. Membuat Tabel Pelanggan, Faktur, Pejualan dan DetailJual

8.1 Membuat Project File dan DataBase

1. Buatkan Project File Baru dengan nama SIPB (Sistem Informasi Penjualan Barang)

2. Buatkan Database dengan nama DATASIPB

3. Buatkan Tabel Barang pada Database DATASIPB dengan Struktur File sbb :

Gambar 8.1.1 Tabel Barang

4. Buatkan Tabel Pemasok pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.2 Tabel Pemasok

Page 67: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

67

5. Buatkan Tabel Pembelian pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.3 Tabel Pembelian

6. Buatkan Tabel DetailBeli pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.4 Tabel DetailBeli

7. Buatkan Tabel Faktur pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.5 Tabel Faktur

Page 68: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

68

8. Buatkan Tabel Penjualan pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.6 Tabel Penjualan

9. Buatkan Tabel DetailJual pada Database SIPB dengan Struktur File sbb :

Gambar 8.1.7 Tabel DetailJual

10. Buatkan Tabel KodeBrg pada Free Table dengan Struktur File sbb :

Gambar 8.1.8 Tabel KodeBrg

11. Buatkan Tabel TmpBeli pada Free Table dengan Struktur File sbb :

Page 69: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

69

8.2 Membuat Form Kelola Data Barang

1. Buatkan Form Kelola Data Barang dengan disain seperti pada Gambar 8.2.1:

Gambar 8.2.1 Disain Form Kelola Data Barang

Page 70: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

70

2. Procedure Program :

a. Object Form 1 Procedure LOAD set exact on

set defa to D:\SIPBFIFO\DATA

* Menutup semua file yang tidak diperlukan

close data

close index

if USED("BARANG")

USE IN BARANG

endif

if USED("DETAILBELI")

USE IN DETAILBELI

ENDIF

if USED("KODEBRG")

USE IN KODEBRG

ENDIF

* Membuka Tabel

SELECT A

USE DETAILBELI

SELECT B

use barang EXCLUSIVE

set order to tag kodebrg

SELECT C

USE KODEBRG

RETURN

b. Object Form1 Procedure UNLOAD close data

close index

return

c. Object Form1 Procedure Kendali parameter x

thisform.pertama.enabled=x

thisform.sebelumnya.enabled=x

thisform.berikutnya.enabled=x

thisform.terakhir.enabled=x

RETURN

d. Object Form1 Procedure Kosongkan thisform.namabrg.value=""

thisform.stockmin.value=0

Page 71: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

71

thisform.hargajual.value=0

RETURN

e. Object Form1 Procedure NonKodeBrg PARAMETERS keadaan

thisform.namabrg.enabled=keadaan

thisform.stockmin.enabled=keadaan

thisform.hargajual.enabled=keadaan

RETURN

f. Object Form1 Procedure Tampilkan thisform.kodebrg.value=barang.kodebrg

thisform.namabrg.value=barang.namabrg

thisform.stockmin.value=barang.stockmin

thisform.hargajual.value=barang.hargajual

RETURN

g. Object Form1 Procedure ACTIVATE thisform.kodebrg.enabled=.f.

thisform.nonkodebrg(.f.)

thisform.kendali(.t.)

thisform.Tambah.enabled=.t.

thisform.keluar.enabled=.t.

thisform.hapus.enabled=.f.

thisform.simpan.enabled=.f.

thisform.batal.enabled=.f.

thisform.perbaiki.enabled=.f.

thisform.ud.enabled=.f.

thisform.cetak.enabled=.f.

thisform.kosongkan

thisform.kodebrg.setfocus

thisform.grid1.enabled=.t.

RETURN

g. Object TAMBAH Procedure CLICK thisform.kodebrg.enabled=.t.

thisform.nonkodebrg(.f.)

thisform.kendali(.f.)

thisform.Tambah.enabled=.f.

thisform.keluar.enabled=.f.

thisform.hapus.enabled=.f.

Page 72: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

72

thisform.simpan.enabled=.f.

thisform.batal.enabled=.t.

thisform.perbaiki.enabled=.f.

thisform.ud.enabled=.f.

thisform.cetak.enabled=.f.

thisform.grid1.enabled=.f.

thisform.kosongkan

thisform.kodebrg.setfocus

RETURN

h. Object KODEBRG Procedure LOSTFOCUS PUBLIC VN

SELECT KODEBRG

LOCATE FOR

KODEBRG.KODE=LEFT(THISFORM.KODEBRG.VALUE,1)

IF KODEBRG.KODE="B" .AND. KODEBRG.NO=0

VN=1

ELSE

IF KODEBRG.KODE="B" .AND. KODEBRG.NO>0

VN=KodeBrg.No+1

ELSE

IF KODEBRG.KODE="S" .AND. KODEBRG.NO=0

VN=1

ELSE

IF KODEBRG.KODE="S" .AND. KODEBRG.NO>0

VN=KodeBrg.No+1

ENDIF

ENDIF

ENDIF

ENDIF

vkd=LEFT(thisform.kodebrg.Value,1)

IF VN<10

Vkodebrg=vkd+"0000"+STR(vn,1)

ELSE

IF VN<100

Vkodebrg=vkd+"000"+STR(vn,2)

ELSE

IF VN<1000

Vkodebrg=vkd+"00"+STR(vn,3)

ELSE

Page 73: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

73

IF VN<10000

Vkodebrg=vkd+"0"+STR(vn,4)

ELSE

Vkodebrg=vkd+STR(vn,5)

ENDIF

ENDIF

ENDIF

ENDIF

thisform.kodebrg.Value=vkodebrg

if left(thisform.KODEBRG.value,1)#"B" .and. ;

left(thisform.KODEBRG.value,1)#"S"

messagebox("Kode Barang harus diawali hurup B ;

untuk barang bubutan "+CHR(13)+"dan Hurup S ;

untuk barang sparepart !",0,"Perhatian...!")

thisform.KODEBRG.setfocus

return

ENDIF

thisform.perbaiki.enabled=.f.

thisform.ud.enabled=.f.

thisform.batal.enabled=.t.

thisform.Tambah.enabled=.f.

thisform.simpan.enabled=.t.

thisform.keluar.enabled=.f.

thisform.hapus.enabled=.f.

thisform.cetak.enabled=.f.

thisform.KODEBRG.enabled=.f.

thisform.nonkodebrg(.t.)

thisform.kendali(.f.)

thisform.NAMABRG.setfocus

thisform.grid1.enabled=.f.

RETURN

i. Object SIMPAN Procedure CLICK IF EMPTY(thisform.namabrg.value)

messagebox("Isi dulu Nama Barang !",0,;

"Perhatian...")

thisform.namabrg.setfocus

RETURN

ENDIF

IF EMPTY(thisform.stockmin.value)

messagebox("Isi dulu Stock Minimum Barang !",0,;

Page 74: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

74

"Perhatian...")

thisform.stockmin.setfocus

RETURN

ENDIF

IF EMPTY(thisform.hargajual.value)

messagebox("Isi dulu Harga Jual Barang !",0,;

"Perhatian...")

thisform.hargajual.setfocus

RETURN

ENDIF

SELECT BARANG

locate for namabrg=trim(thisform.namabrg.value)

if found()

messagebox("Nama Barang Ada Yang Sama !",0,;

"Penyimpanan tidak bisa dilakukan")

thisform.namabrg.setfocus

return

endif

locate for kodebrg=space(6)

if ! found()

append blank

endif

repl kodebrg with thisform.kodebrg.value

repl namabrg with thisform.namabrg.value

repl stockmin with thisform.stockmin.value

repl hargajual with thisform.hargajual.value

thisform.grid1.setfocus

thisform.Refresh

SELECT KODEBRG

LOCATE FOR

KODEBRG.KODE=LEFT(thisform.kodebrg.Value,1)

REPLACE KODEBRG.NO WITH VN

messagebox("Penyimpanan data sudah dilakukan !",0,;

"Perhatian...")

thisform.perbaiki.enabled=.t.

thisform.ud.enabled=.f.

thisform.batal.enabled=.f.

thisform.Tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.keluar.enabled=.t.

Page 75: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

75

thisform.hapus.enabled=.t.

thisform.cetak.enabled=.t.

thisform.kodebrg.enabled=.f.

thisform.nonkodebrg(.f.)

thisform.kendali(.t.)

thisform.grid1.enabled=.t.

RETURN

j. Object BATAL Procedure CLICK thisform.grid1.SetFocus

thisform.Refresh

SELECT barang

LOCATE FOR kodebrg=TRIM(thisform.kodebrg.value)

IF FOUND()

vstock=barang.stock

vhargadsr=barang.hargadsr

ELSE

vstock=0

vhargadsr=0

ENDIF

thisform.kodebrg.enabled=.f.

thisform.nonkodebrg(.f.)

thisform.kendali(.t.)

thisform.tambah.enabled=.t.

thisform.keluar.enabled=.t.

thisform.hapus.enabled=.t.

thisform.simpan.enabled=.f.

thisform.batal.enabled=.f.

thisform.perbaiki.enabled=.t.

thisform.ud.enabled=.f.

thisform.cetak.enabled=.t.

thisform.grid1.enabled=.t.

thisform.kosongkan

thisform.kodebrg.setfocus

RETURN

k. Object HAPUS Procedure CLICK SELECT PENJUALAN

LOCATE FOR KODEBRG=TRIM(THISFORM.kodebrg.Value)

IF FOUND()

Page 76: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

76

messagebox("Sorry Record ini tidak bisa dihapus

?",0,"Barang tsb sudah digunakan dalam transaksi...

")

RETURN

ENDIF

SELECT barang

LOCATE FOR KODEBRG=TRIM(THISFORM.kodebrg.Value)

ln=RECNO()

ljawab=messagebox("Anda Yakin ?",4+32+512,"Record ini

mau dihapus !")

if ljawab=6

DELETE

set dele on

ENDIF

goto ln

thisform.grid1.setfocus

thisform.refresh

RETURN

l. Object KELUAR Procedure CLICK jawab=messagebox("Anda Yakin ?",4+32,;

"Mau Keluar dari Entry Data...")

if jawab=6

SELECT BARANG

set dele off

PACK

thisform.release

endif

RETURN

m. Object CETAK Procedure CLICK SELECT BARANG

SET ORDER TO KODEBRG && KODEBRG

SET FILTER to

REPORT FORM d:\sipbFIFO\Prg\LAPBARANG PREVIEW

RETURN

n. Object PERBAIKI Procedure CLICK thisform.nonkodebrg(.t.)

thisform.perbaiki.enabled=.f.

thisform.ud.enabled=.t.

Page 77: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

77

thisform.batal.enabled=.t.

thisform.tambah.enabled=.f.

thisform.simpan.enabled=.f.

thisform.keluar.enabled=.f.

thisform.hapus.enabled=.f.

thisform.cetak.enabled=.f.

thisform.kodebrg.enabled=.f.

thisform.kendali(.f.)

thisform.namabrg.setfocus

thisform.grid1.enabled=.f.

RETURN

o. Object UD Procedure CLICK IF EMPTY(thisform.namabrg.value)

messagebox("Isi dulu Nama Barang !",0,;

"Perhatian...")

thisform.namabrg.setfocus

RETURN

Endif

IF EMPTY(thisform.stockmin.value)

messagebox("Isi dulu Stock Minimum Barang !",0,;

"Perhatian...")

thisform.stockmin.setfocus

RETURN

endif

IF EMPTY(thisform.hargajual.value)

messagebox("Isi dulu Harga Jual Barang !",0,;

"Perhatian...")

thisform.hargajual.setfocus

RETURN

endif

jawab=messagebox("Mau Memperbaiki Data Sebelumnya ?",;

4+32+256,"Perhatian...!")

if jawab=6

SELECT BARANG

LOCATE FOR kodebrg=TRIM(thisform.kodebrg.value)

IF FOUND()

repl namabrg with thisform.namabrg.value

repl stockmin with thisform.stockmin.value

repl hargajual with thisform.hargajual.value

ENDIF

Page 78: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

78

ELSE

thisform.grid1.SetFocus

thisform.Refresh

ENDIF

thisform.perbaiki.enabled=.t.

thisform.ud.enabled=.f.

thisform.batal.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.keluar.enabled=.t.

thisform.hapus.enabled=.t.

thisform.cetak.enabled=.f.

thisform.kodebrg.enabled=.f.

thisform.nonkodebrg(.f.)

thisform.kendali(.t.)

thisform.grid1.setfocus

thisform.grid1.enabled=.t.

RETURN

p. Object PERTAMA Procedure CLICK SELECT BARANG

set order to

go top

if eof()

messagebox("Tidak ada record...!",0,"Perhatian...!")

thisform.refresh()

return

ENDIF

set order to tag kodebrg

thisform.grid1.setfocus

thisform.refresh

RETURN

q. Object SELEBUMNYA Procedure CLICK SELECT BARANG

set order to

skip -1

if bof()

go top

endif

set order to tag kodebrg

thisform.grid1.setfocus

Page 79: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

79

thisform.refresh

RETURN

r. Object BERIKUTNYA Procedure CLICK SELECT BARANG

set order to

skip

if eof()

go bottom

endif

set order to tag kodebrg

thisform.grid1.setfocus

thisform.refresh

RETURN

t. Object TERAKHIR Procedure CLICK SELECT BARANG

set order to

go bottom

if eof()

messagebox("Tidak ada record...!",0,"Perhatian...!")

thisform.refresh()

return

ENDIF

set order to tag kodebrg

thisform.grid1.setfocus

thisform.refresh

RETURN

u. Object GRID1 Procedure AfterRowColChange LPARAMETERS nColIndex

thisform.perbaiki.enabled=.t.

thisform.hapus.enabled=.t.

thisform.batal.enabled=.f.

thisform.kodebrg.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.keluar.enabled=.t.

thisform.grid1.enabled=.t.

thisform.cetak.enabled=.t.

thisform.nonkodebrg(.f.)

thisform.kendali(.t.)

Page 80: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

80

thisform.tampilkan

RETURN

8.3 Tugas 8

1. Buatkan Form Untuk Mengelola Data Pemasok dengan disain seperti pada Gambar

8.3.1.

Gambar 8.3.1 Disain Form Kelola Data Pemasok

Page 81: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

81

IX. Praktek Visual FoxPro IX

Materi : 1. Membuat File Report Barang

2. Membat Form untuk memfilter Jenis Barang

9.1 Membuat Report

1. Buatkan Report untuk menampilkan Daftar Barang. Dengan disain sbb.:

Gambar 9.1.1 Report Daftar Barang

Isi TextBox :

Pada Baris Group Header :

“Jenis Barang "+IIF(LEFT( Barang.kodebrg,1)="B","Bubutan","Sparepart")

Kode Barang : barang.kodebrg

Nama Barang : barang.namabrg

Jumlah Unit : barang.stockMin,

Format : Format Expression : 999

Type : Character

Page 82: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

82

Aligment : Right

Harga Satuan : barang.hargaJual,

Format : Format Expression : 99,999,999

Type : Character

Aligment : Right

2. Simpan Report tersebut dengan nama File LAPBARANG

9.2 Tugas 9

1. Buatkan Report Daftar Pemasok dengan disain seperti pada gambar 9.3.1 :

Gambar 9.3.1 Report Daftar Pemasok

Page 83: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

83

X. Praktek Visual FoxPro X

Materi : 1. Membuat File Transaksi Pembelian

10.1 Membuat Form Transaksi Pembelian

1. Buatkan Form Kelola Data Pembelian dengan disain seperti pada Gambar 9.2.1:

10.2 Listing Program Transaksi Pembelian

a. Object Form1 Procedure LOAD close index

close data

set date british

set cent on

set defa to d:\sipbfifo\data

if used("barang")

use in barang

Page 84: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

84

endif

if used("pemasok")

use in pemasok

endif

if used("detailbeli")

use in detailbeli

endif

if used("pembelian")

use in pembelian

endif

SELECT 1

use barang

set order to namabrg

SELECT 2

use pemasok

set order to nopem

SELECT 3

use pembelian EXCLUSIVE

set order to nofakbeli

SELECT 4

use detailbeli EXCLUSIVE

set order to nofakbeli

return

b. Object Form1 Procedure UNLOAD close index

close data

return

c. Object Form1 Procedure AKTIF PARAMETERS x

thisform.nopem.Enabled=x

thisform.perusahaan.Enabled=x

retu

d. Object Form1 Procedure AKTIF1 PARAMETERS y

thisform.nofakbeli.Enabled=y

thisform.tglbeli.Enabled=y

RETURN

Page 85: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

85

e. Object Form1 Procedure AKTIF2 PARAMETERS Z

thisform.kodebrg.Enabled=z

thisform.hargabeli.Enabled=z

thisform.qty.Enabled=z

thisform.namabrg.Enabled=z

RETURN

f. Object Form1 Procedure AKTIF3 PARAMETERS r

thisform.diskon.Enabled=r

thisform.totalbayar.Enabled=r

thisform.utang.Enabled=r

RETURN

g. Object Form1 Procedure KENDALI PARAMETERS s

thisform.pertama.Enabled=s

thisform.sebelumnya.Enabled=s

thisform.berikutnya.Enabled=s

thisform.terakhir.Enabled=s

RETURN

h. Object Form1 Procedure KOSONGKAN thisform.namabrg.value=""

thisform.nopem.value=""

thisform.perusahaan.value=""

thisform.qty.value=0

thisform.kodebrg.value=""

thisform.hargabeli.value=0

thisform.totalbeli.value=0

thisform.diskon.value=0

thisform.totalbayar.value=0

thisform.utang.value=0

return

i. Object Form1 Procedure TAMPILKAN select pembelian

thisform.nofakbeli.value=pembelian.nofakbeli

thisform.nopem.value=pembelian.nopem

thisform.totalbeli.value=pembelian.totalbeli

Page 86: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

86

thisform.diskon.value=pembelian.diskon

thisform.Totalbayar.value=pembelian.Totalbayar

thisform.utang.value=pembelian.utang

select pemasok

locate for nopem=thisform.nopem.value

thisform.perusahaan.value=pemasok.perusahaan

SELECT DETAILBELI

SET FILTER TO NOFAKBELI=TRIM(thisform.Nofakbeli.Value)

GO top

thisform.tglbeli.value=detailbeli.tglbeli

thisform.Qty.value=detailbeli.qtyb

thisform.Hargabeli.value=detailbeli.HargaBeli

SELECT BARANG

LOCATE FOR KODEBRG=TRIM(thisform.kodebrg.Value)

thisform.NamaBrg.value=Barang.NamaBrg

thisform.refresh()

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.t.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

return

j. Object Form1 Procedure ACTIVATE thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

Page 87: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

87

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

return

k. Object TAMBAH Procedure CLICK thisform.kosongkan

select barang

set order to tag namabrg

thisform.refresh

thisform.tglbeli.value=date()

thisform.proses.enabled=.f.

thisform.batal.enabled=.t.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.f.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.f.

thisform.kendali(.F.)

thisform.aktif(.t.)

thisform.aktif1(.t.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

THISFORM.NOFAKBELI.value=""

THISFORM.NOFAKBELI.SETFOCUS

return

l. Object NOPEM Procedure LOSTFOCUS SELECT Pemasok

LOCATE FOR nopem=RTRIM(thisform.nopem.Value)

IF ! FOUND()

MESSAGEBOX("Data tidak ditemukan !",0,"Perhatian...")

thisform.nopem.setFocus

RETURN

endif

thisform.perusahaan.value=pemasok.perusahaan

thisform.aktif2(.t.)

thisform.kodebrg.setFocus

return

Page 88: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

88

m. Object PERUSAHAAN Procedure InteractiveChange

thisform.nopem.value=pemasok.nopem

thisform.aktif2(.t.)

return

n. Object KODEBRG Procedure LOSTFOCUS IF EMPTY(thisform.kodebrg.Value)

thisform.kodebrg.value=""

thisform.qty.Value=0

thisform.kodebrg.setfocus

return

ENDIF

SELECT BARANG

LOCATE FOR KODEBRG=TRIM(thisform.kodebrg.Value)

IF FOUND()

thisform.namabrg.value=barang.NamaBrg

thisform.qty.Value=1

thisform.Proses.setfocus

ELSE

thisform.kodebrg.value=""

thisform.qty.Value=0

thisform.kodebrg.setfocus

ENDIF

thisform.aktif(.f.)

thisform.proses.Enabled=.t.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

return

o. Object NAMABRG Procedure INTERACTIVECHANGE SELECT barang

LOCATE FOR namabrg=TRIM(thisform.namabrg.Value)

IF found()

thisform.kodebrg.value=barang.kodebrg

thisform.qty.Value=1

Page 89: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

89

ELSE

thisform.kodebrg.value=""

thisform.qty.Value=0

ENDIF

thisform.aktif(.f.)

thisform.Proses.Enabled=.t.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

return

p. Object PROSES Procedure CLICK jml=thisform.hargabeli.value*thisform.qty.value

thisform.totalbeli.value=thisform.totalbeli.value+jml

if thisform.qty.value>0 .and. thisform.hargabeli.value>0

sele detailbeli

appe blank

REPLACE Nofakbeli with thisform.Nofakbeli.value

REPLACE TglBeli with thisform.TglBeli.value

REPLACE kodebrg with thisform.kodebrg.value

REPLACE qtyb with thisform.qty.value

REPLACE Hargabeli with thisform.Hargabeli.value

REPLACE jmlbeli with jml

REPLACE Stock with thisform.qty.value

SELECT pembelian

LOCATE FOR nofakbeli=TRIM(thisform.nofakbeli.Value)

IF ! FOUND()

APPEND BLANK

ENDIF

REPLACE Nofakbeli with thisform.Nofakbeli.value

REPLACE nopem with thisform.nopem.value

REPLACE totalbeli with thisform.totalbeli.value

REPLACE diskon with thisform.diskon.value

REPLACE totalbayar with thisform.totalbayar.value

REPLACE utang with thisform.utang.value

ENDIF

Page 90: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

90

thisform.Refresh

thisform.Totalbayar.value=thisform.totalbeli.value

thisform.namabrg.value=""

thisform.qty.value=0

thisform.kodebrg.value=""

thisform.hargabeli.value=0

thisform.aktif3(.t.)

thisform.proses.Enabled=.f.

thisform.simpan.Enabled=.t.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

thisform.kodebrg.setfocus

return

q. Object BATAL Procedure CLICK IF EMPTY(THISFORM.kodebrg.Value) .OR.

EMPTY(THISFORM.namabrg.Value) .OR. ;

EMPTY(THISFORM.QTY.Value)

MESSAGEBOX("Click dulu Record di Grid yang akan

dibatalkan",0,"Perhatian...")

thisform.grid1.SetFocus

RETURN

ENDIF

jawab=messagebox("Anda mau membatalkan transaksi

?",4+32+256,"Perhatian...")

if jawab=6

sele detailbeli

loca for detailbeli.kodebrg=TRIM(thisform.kodebrg.value) .and. ;

nofakbeli=TRIM(thisform.nofakbeli.Value)

SET DELETED ON

thisform.Refresh

IF FOUND()

ljml=thisform.hargabeli.value*thisform.qty.value

dele FOR

detailbeli.kodebrg=TRIM(thisform.kodebrg.value) .and. ;

nofakbeli=TRIM(thisform.nofakbeli.Value)

ELSE

ljml=0

Page 91: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

91

ENDIF

thisform.totalbeli.value=thisform.totalbeli.value-ljml

thisform.totalbayar.value=thisform.totalbeli.value

thisform.refresh

thisform.qty.value=0

ENDIF

IF thisform.totalbeli.Value=0

SELECT pembelian

LOCATE for nofakbeli=TRIM(thisform.nofakbeli.Value)

DELETE

thisform.aktif(.f.)

thisform.aktif2(.t.)

thisform.aktif3(.f.)

thisform.proses.Enabled=.f.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.t.

thisform.cetak.Enabled=.f.

thisform.kendali(.t.)

thisform.refresh

else

thisform.aktif(.f.)

thisform.aktif2(.t.)

thisform.aktif3(.t.)

thisform.proses.Enabled=.f.

thisform.simpan.Enabled=.t.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

thisform.refresh

endif

RETURN

r. Object BATAL Procedure RIGHTCLICK thisform.keluar.enabled=.t.

Page 92: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

92

s. Object SIMPAN Procedure CLICK if thisform.Totalbayar.value>thisform.totalbeli.value

messagebox("Maaf Anda Keliru Memasukan Jumlah

Bayar...",0,"Perhatian...")

thisform.Totalbayar.setfocus

retu

ENDIF

if EMPTY(thisform.nopem.value)

messagebox("Data pemasok/supplier harus diisi dulu

!",0,"Perhatian...")

thisform.nopem.setfocus

retu

ENDIF

if thisform.totalbeli.value>0

select pembelian

locate for nofakbeli=trim(thisform.nofakbeli.value)

if ! found()

append blank

endif

repl nofakbeli with thisform.nofakbeli.value

repl Totalbeli with thisform.totalbeli.value

repl nopem with thisform.nopem.value

repl diskon with thisform.diskon.value

repl Totalbayar with thisform.Totalbayar.value

repl utang with thisform.utang.value

ENDIF

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.t.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

return

Page 93: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

93

t. Object CETAK Procedure CLICK SELECT pemasok

SET ORDER TO TAG NOPEM

SELECT barang

SET ORDER TO kodebrg

SELECT detailbeli

SET RELATION TO KodeBrg INTO BARANG, Nofakbeli INTO

PEMBELIAN, Pembelian.nopem INTO PEMASOK

REPORT form d:\sipbfifo\prg\kuitansib PREVIEW

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

return

u. Object KELUAR Procedure CLICK sele pembelian

set dele off

PACK

SELECT detailbeli

PACK

thisform.release

RETURN

v. Object GRID1 Procedure AfterRowColChange LPARAMETERS nColIndex

thisform.nofakbeli.value=detailbeli.nofakbeli

thisform.tglbeli.value=detailbeli.tglbeli

thisform.kodebrg.value=detailbeli.kodebrg

thisform.hargabeli.value=detailbeli.hargabeli

thisform.qty.value=detailbeli.qtyb

thisform.hargabeli.value=detailbeli.hargabeli

SELECT barang

Page 94: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

94

LOCATE FOR kodebrg=TRIM(thisform.kodebrg.Value)

thisform.namabrg.value=barang.namabrg

SELECT pembelian

LOCATE FOR nofakbeli=TRIM(thisform.nofakbeli.Value)

thisform.nopem.value=pembelian.nopem

thisform.totalbeli.value=pembelian.totalbeli

thisform.totalbayar.value=pembelian.totalbayar

thisform.diskon.value=pembelian.diskon

thisform.utang.value=pembelian.utang

SELECT pemasok

LOCATE FOR nopem=TRIM(thisform.nopem.Value)

thisform.perusahaan.value=pemasok.perusahaan

IF thisform.simpan.Enabled=.t.

thisform.batal.Enabled=.t.

ELSE

thisform.batal.Enabled=.f.

ENDIF

return

w. Object PERTAMA Procedure CLICK select pembelian

set order to

go top

if bof()

messagebox("Tidak ada record",0,"Perhatian...!")

thisform.release()

return

endif

thisform.tampilkan

thisform.refresh

return

x. Object SEBELUMNYA Procedure CLICK select pembelian

set order to

skip -1

if bof()

go top

endif

thisform.tampilkan

Page 95: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

95

thisform.refresh

return

y. Object BERIKUTNYA Procedure CLICK select pembelian

set order to

skip

if eof()

go bottom

endif

thisform.tampilkan

thisform.refresh

return

z. Object TERAKHIR Procedure CLICK select pembelian

set order to

go bottom

if eof()

messagebox("Tidak ada record",0,"Perhatian...!")

thisform.release

return

endif

thisform.tampilkan

thisform.refresh

return

10.4 Tugas 10

Buatkan Form PELANGGAN dengan disain sbb:

Page 96: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

96

Page 97: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

97

XI. Praktek Visual FoxPro XI

Materi : 1. Membuat Form Penjualan Metode FIFO

2. Menguji Form

11.1 Disain Form Penjualan

1. Buatkan Form Penjualan dengan disain sbb:

2. Coding Transaksi Penjualan Metode FIFO :

a. Object FORM1 Procedure LOAD close index

close data

set date british

set cent on

set defa to D:\SIPBFIFO\DATA

Page 98: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

98

if used("barang")

use in barang

endif

if used("pelanggan")

use in pelanggan

endif

if used("faktur")

use in faktur

endif

if used("penjualan")

use in penjualan

endif

if used("nofakjual")

use in nofakjual

ENDIF

select 1

use barang

set order to tag namabrg

select 2

use pelanggan

set order to tag namapel

select 3

use faktur EXCLUSIVE

set order to tag nofakjual

select 4

use penjualan EXCL

set order to tag nofakjual

select 5

use DETAILJUAL EXCL

set order to tag nofakjual

SELECT 6

USE detailbeli

SELECT 7

USE tmpbeli EXCLUSIVE

SET ORDER TO KODEBRG && KODEBRG

RETURN

Page 99: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

99

b. Object FORM1 Procedure UNLOAD close index

close data

return

c. Object FORM1 Procedure AKTIF PARAMETERS x

thisform.nopel.Enabled=x

thisform.namapel.Enabled=x

RETURN

d. Object FORM1 Procedure AKTIF1 PARAMETERS y

thisform.nofakjual.Enabled=y

thisform.tgljual.Enabled=y

RETURN

e. Object FORM1 Procedure AKTIF2 PARAMETERS Z

thisform.namabrg.Enabled=z

thisform.kodebrg.Enabled=z

thisform.qty.Enabled=z

thisform.hargajual.Enabled=z

RETURN

f. Object FORM1 Procedure AKTIF3 PARAMETERS r

thisform.diskon.Enabled=r

thisform.totalbayar.Enabled=r

thisform.JmlUang.Enabled=r

RETURN

g. Object FORM1 Procedure KENDALI PARAMETERS s

thisform.pertama.Enabled=s

thisform.sebelumnya.Enabled=s

thisform.berikutnya.Enabled=s

thisform.terakhir.Enabled=s

RETURN

Page 100: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

100

h. Object FORM1 Procedure KOSONGKAN thisform.namabrg.value=""

thisform.qty.value=0

thisform.kodebrg.value=""

thisform.hargajual.value=0

thisform.totaljual.value=0

thisform.nopel.value=""

thisform.namapel.value=""

thisform.diskon.value=0

thisform.totalbayar.value=0

thisform.JmlUang.value=0

RETURN

i. Object FORM1 Procedure TAMPILKAN select faktur

thisform.nofakjual.value=faktur.nofakjual

thisform.nopel.value=faktur.nopel

thisform.totaljual.value=faktur.totaljual

thisform.diskon.value=faktur.diskon

thisform.totalbayar.value=faktur.totalbayar

thisform.JmlUang.value=faktur.JmlUang

thisform.totallaba.value=faktur.totallaba

select pelanggan

locate for nopel=TRIM(thisform.nopel.value)

thisform.namapel.value=pelanggan.namapel

SELECT penjualan

locate for nofakjual=TRIM(thisform.nofakjual.value)

thisform.TglJual.value=penjualan.tgljual

thisform.kodebrg.value=penjualan.kodebrg

thisform.qty.value=penjualan.qtyj

thisform.Labakotor.value=penjualan.labakotor

thisform.hargajual.value=penjualan.JmlJual/penjualan.qtyj

thisform.hargabeli.value=thisform.hargajual.value-

(penjualan.labakotor/penjualan.qtyj)

SET FILTER TO nofakjual=TRIM(thisform.nofakjual.value)

thisform.refresh

SELECT barang

locate for kodebrg=TRIM(thisform.kodebrg.value)

Page 101: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

101

thisform.namabrg.value=barang.namabrg

thisform.esc.enabled=.f.

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.t.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

RETURN

j. Object NOPEL Procedure LOSTFOCUS SELECT pelanggan

LOCATE FOR nopel=RTRIM(thisform.nopel.Value)

IF ! FOUND()

MESSAGEBOX("Data tidak ditemukan !",0,"Perhatian...")

thisform.nopel.setFocus

RETURN

endif

thisform.namapel.value=pelanggan.namapel

thisform.aktif2(.t.)

thisform.kodebrg.setfocus

return

k. Object NAMAPEL Procedure INTERACTIVECHANGE thisform.nopel.value=pelanggan.nopel

thisform.aktif2(.t.)

return

l. Object NAMAPEL Procedure LOSTFOCUS thisform.aktif2(.t.)

m. Object KODEBRG Procedure LOSTFOCUS IF EMPTY(thisform.kodebrg.value)

thisform.namabrg.value=""

Page 102: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

102

thisform.hargajual.value=0

thisform.kodebrg.setfocus

return

ENDIF

SELECT BARANG

LOCATE FOR KODEBRG=TRIM(thisform.kodebrg.value)

IF FOUND()

thisform.namabrg.value=barang.Namabrg

thisform.hargajual.value=barang.hargajual

thisform.qty.value=1

ELSE

thisform.namabrg.value=""

thisform.hargajual.value=0

thisform.kodebrg.setfocus

ENDIF

thisform.aktif(.f.)

thisform.proses.Enabled=.t.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

thisform.proses.setfocus

return

n. Object NAMABRG Procedure INTERACTIVECHANGE thisform.kodebrg.value=barang.kodebrg

thisform.hargajual.value=barang.hargajual

thisform.qty.value=1

thisform.aktif(.f.)

thisform.proses.Enabled=.t.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.f.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

return

Page 103: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

103

o. Object PROSES Procedure CLICK if EMPTY(thisform.nofakjual.Value)

messagebox("Anda Harus klik dulu tombol tambah [ + ],

sebelum memulai transaksi!",0,"Perhatian...")

thisform.proses.enabled=.f.

thisform.keluar.enabled=.t.

thisform.tambah.enabled=.t.

thisform.tambah.setfocus

RETURN

ENDIF

if thisform.qty.value>0 .and. thisform.hargajual.value>0

SELECT tmpbeli

DELETE ALL

SET DELETED OFF

PACK

APPEND FROM detailbeli FOR

kodebrg=TRIM(thisform.kodebrg.Value) .and. stock>0

SET ORDER TO TGLBELI

GO TOP

IF EOF()

MESSAGEBOX("Stock Barang Kosong",0,"Perhatian...")

RETURN

ENDIF

jml=thisform.hargajual.value*thisform.qty.value

thisform.totaljual.value=thisform.totaljual.value+jml

thisform.totalbayar.value=thisform.totaljual.value

vtqty=thisform.qty.value

thisform.labakotor.Value=0

DO WHILE ! EOF()

Locate for kodebrg=TRIM(thisform.kodebrg.value) .and.

tmpbeli.stock>0

vhargabeli=tmpbeli.hargabeli

vstock =tmpbeli.stock

vnofakb =tmpbeli.nofakbeli

if vstock<=vtqty

vqtyj=vstock

ELSE

vqtyj=vtqty

ENDIF

Page 104: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

104

vtqty=vtqty-vqtyj

jmlhrg=thisform.hargajual.value*vqtyj

vselhrg=thisform.hargajual.value-vhargabeli

vlabakotor=vselhrg*vqtyj

thisform.totallaba.value=thisform.totallaba.value+vlabakotor

thisform.LabaKotor.value=thisform.LabaKotor.value+vlabakotor

SELECT detailbeli

Locate for kodebrg=TRIM(thisform.kodebrg.value) .and.

nofakbeli=vnofakb

REPLACE detailbeli.stock WITH detailbeli.stock-vqtyj

sele detailjual

appe blank

REPLACE Nofakjual with thisform.Nofakjual.value

REPLACE tgljual with thisform.tgljual.value

REPLACE kodebrg with thisform.kodebrg.value

REPLACE Nofakbeli with vnofakb

REPLACE qtyj with vqtyj

REPLACE JmlJual with jmlhrg

REPLACE labakotor with vlabakotor

SELECT TMPBELI

REPLACE stock WITH stock-vqtyj

IF vtqty=0

EXIT

ENDIF

SKIP

ENDDO

sele penjualan

appe blank

REPLACE Nofakjual with thisform.Nofakjual.value

REPLACE tgljual with thisform.tgljual.value

REPLACE kodebrg with thisform.kodebrg.value

REPLACE qtyj with thisform.qty.value

REPLACE JmlJual with Jml

REPLACE LabaKotor with thisform.LabaKotor.value

SET FILTER TO NofakJual =TRIM(thisform.NofakJual.value)

thisform.refresh()

Page 105: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

105

SELECT FAKTUR

LOCATE FOR NOFAKJUAL=TRIM(THISFORM.NOFAKJUAL.Value)

IF ! FOUND()

APPEND BLANK

ENDIF

REPLACE NOFAKJUAL WITH THISFORM.NOFAKJUAL.VALUE

REPLACE NOPEL WITH THISFORM.NOPEL.VALUE

REPLACE TOTALJUAL WITH THISFORM.TOTALJUAL.VALUE

REPLACE TOTALBAYAR WITH THISFORM.TOTALBAYAR.VALUE

REPLACE DISKON WITH THISFORM.DISKON.VALUE

REPLACE TOTALLABA WITH THISFORM.TOTALLABA.VALUE

ENDIF

thisform.namabrg.value=""

thisform.kodebrg.value=""

thisform.qty.value=0

thisform.hargajual.value=0

thisform.aktif(.f.)

thisform.aktif3(.t.)

thisform.proses.Enabled=.f.

thisform.simpan.Enabled=.t.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.t.

thisform.keluar.Enabled=.f.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

thisform.kodebrg.setfocus

RETURN

p. Object SIMPAN Procedure CLICK if thisform.totalbayar.value>thisform.totaljual.value

messagebox("Maaf Anda Keliru Memasukan Jumlah

Bayar...",0,"Perhatian...")

thisform.totalbayar.setfocus

retu

ENDIF

if thisform.totaljual.value>0

select faktur

locate for nofakjual=trim(thisform.nofakjual.value)

if ! found()

append blank

endif

Page 106: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

106

repl nofakjual with thisform.nofakjual.value

repl totaljual with thisform.totaljual.value

repl nopel with thisform.nopel.value

repl diskon with thisform.diskon.value

repl totalbayar with thisform.totalbayar.value

repl totallaba with thisform.totallaba.value

repl JmlUang with thisform.JmlUang.value

repl kembalian with thisform.kembalian.value

ENDIF

thisform.refresh

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

thisform.cetak.enabled=.t.

thisform.tambah.setfocus

return

q. Object CETAK Procedure CLICK SET PROCEDURE TO d:\sipbfifo\prg\terbilang

SELECT pelanggan

SET ORDER TO NOPEL

SELECT barang

SET ORDER TO KODEBRG

select penjualan

SET RELATION TO nofakjual INTO faktur,kodebrg INTO

barang,;

faktur.Nopel INTO Pelanggan

REPORT form d:\prg\SIPB\prg\kw PREVIEW FOR

nofakjual=thisform.nofakjual.value

thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

Page 107: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

107

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

RETURN

r. Object TAMBAH Procedure CLICK thisform.kosongkan

select barang

set order to tag namabrg

j=LEFT(TIME(),2)

m=SUBSTR(TIME(),4,2)

d=SUBSTR(TIME(),7,2)

tgl=day(date())

bln=month(date())

th=year(date())

IF tgl<10

vtgl="0"+STR(tgl,1)

ELSE

vtgl=STR(tgl,2)

ENDIF

IF bln<10

vbln="0"+STR(bln,1)

ELSE

vbln=STR(bln,2)

ENDIF

thisform.nofakjual.value=vtgl+vbln+right(str(th,4),2)+j+m+

d

SELECT penjualan

SET FILTER TO NOFAKJUAL=TRIM(thisform.nofakjual.Value)

thisform.refresh

thisform.tgljual.value=date()

thisform.proses.enabled=.f.

thisform.batal.enabled=.t.

thisform.simpan.enabled=.f.

Page 108: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

108

thisform.tambah.enabled=.f.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.f.

thisform.kendali(.F.)

thisform.aktif(.t.)

thisform.aktif1(.t.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

SELECT pelanggan

LOCATE FOR UPPER(namapel)="KONSUMEN UMUM"

thisform.nopel.Value=pelanggan.nopel

thisform.namapel.Value=pelanggan.namapel

thisform.namapel.setfocus

RETURN

s. Object BATAL Procedure CLICK IF EMPTY(THISFORM.kodebrg.Value) .OR.

EMPTY(THISFORM.namabrg.Value) .OR. ;

EMPTY(THISFORM.QTY.Value)

MESSAGEBOX("Click dulu Record di Grid yang akan

dibatalkan",0,"Perhatian...")

thisform.grid1.SetFocus

RETURN

ENDIF

jawab=messagebox("Anda mau membatalkan transaksi

?",4+32+256,"Perhatian...")

if jawab=6

SELECT TMPBELI

DELETE ALL

PACK

APPEND FROM DETAILJUAL FOR

kodebrg=TRIM(thisform.kodebrg.Value) .and. ;

Nofakjual=TRIM(thisform.NofakJual.value)

GO top

DO WHILE ! EOF()

SELECT DETAILBELI

LOCATE FOR kodebrg=TMPBELI.KODEBRG .and.

Nofakbeli=tmpbeli.NOFAKBELI

REPLACE STOCK WITH STOCK+tmpbeli.QTYJ

Page 109: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

109

SELECT TMPBELI

SKIP

ENDDO

SELECT DETAILJUAL

DELE FOR kodebrg=TRIM(thisform.kodebrg.Value) .and.

Nofakjual=TRIM(thisform.NofakJual.value)

sele penjualan

LOCATE FOR

penjualan.kodebrg=TRIM(thisform.kodebrg.value) .and.

nofakjual=TRIM(thisform.nofakjual.Value)

IF FOUND()

VJML=PENJUALAN.JMLJUAL

VLABA=PENJUALAN.LABAKOTOR

DELETE FOR

penjualan.kodebrg=TRIM(thisform.kodebrg.value) .and.

nofakjual=TRIM(thisform.nofakjual.Value)

ELSE

VJML=0

VLABA=0

ENDIF

thisform.totaljual.value=thisform.totaljual.value-VJML

thisform.totallaba.value=thisform.totallaba.value-VLABA

thisform.totalbayar.value=thisform.totaljual.value-

thisform.diskon.value

thisform.jmluang.value=thisform.totbayar.value

thisform.kembalian.value=thisform.jmluang.value-

thisform.totalbayar.value

SET DELETED OFF

SELECT FAKTUR

LOCATE FOR nofakjual=TRIM(thisform.nofakjual.Value)

IF thisform.totaljual.Value=0

DELETE FOR nofakjual=TRIM(thisform.nofakjual.Value)

thisform.aktif(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

thisform.hitung.Enabled=.f.

thisform.simpan.Enabled=.f.

thisform.tambah.Enabled=.t.

thisform.batal.Enabled=.f.

Page 110: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

110

thisform.keluar.Enabled=.t.

thisform.cetak.Enabled=.f.

thisform.kendali(.t.)

thisform.refresh

ELSE

REPLACE nofakjual with thisform.nofakjual.value

REPLACE totaljual with thisform.totaljual.value

REPLACE nopel with thisform.nopel.value

REPLACE diskon with thisform.diskon.value

REPLACE TotalBayar with thisform.TotalBayar.value

REPLACE totallaba with thisform.totallaba.value

REPLACE jmluang with thisform.jmluang.value

REPLACE kembali with thisform.kembalian.value

thisform.aktif(.f.)

thisform.aktif2(.t.)

thisform.aktif3(.t.)

thisform.hitung.Enabled=.t.

thisform.simpan.Enabled=.t.

thisform.tambah.Enabled=.f.

thisform.batal.Enabled=.t.

thisform.keluar.Enabled=.t.

thisform.cetak.Enabled=.f.

thisform.kendali(.f.)

thisform.refresh

ENDIF

thisform.refresh

thisform.qty.value=0

ENDIF

RETURN

t. Object KELUAR Procedure CLICK sele penjualan

set dele off

PACK

SELECT detailjual

pack

SET RELATION TO

SET FILTER TO

thisform.release

RETURN

Page 111: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

111

u. Object ESC Procedure CLICK thisform.proses.enabled=.f.

thisform.batal.enabled=.f.

thisform.simpan.enabled=.f.

thisform.tambah.enabled=.t.

thisform.simpan.enabled=.f.

thisform.cetak.enabled=.f.

thisform.keluar.enabled=.t.

thisform.kendali(.t.)

thisform.aktif(.f.)

thisform.aktif1(.f.)

thisform.aktif2(.f.)

thisform.aktif3(.f.)

thisform.tambah.setfocus

RETURN

v. Object PERTAMA Procedure CLICK select faktur

go top

if eof()

messagebox("Tidak ada record",0,"Perhatian...!")

thisform.release()

return

endif

thisform.tampilkan

thisform.refresh

RETURN

w. Object SEBELUMNYA Procedure CLICK select faktur

skip -1

if bof()

go top

endif

thisform.tampilkan

thisform.refresh

RETURN

x. Object BERIKUTNYA Procedure CLICK select faktur

skip

Page 112: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

112

if eof()

go bottom

endif

thisform.tampilkan

thisform.refresh

RETURN

y. Object TERAKHIR Procedure CLICK select faktur

go bottom

if eof()

messagebox("Tidak ada record",0,"Perhatian...!")

thisform.release()

return

endif

thisform.tampilkan

thisform.refresh

RETURN

z. Object GRID1 Procedure AFTERROWCOLLCHANGE LPARAMETERS nColIndex

thisform.nofakjual.value=penjualan.nofakjual

thisform.tgljual.value=penjualan.tgljual

thisform.kodebrg.value=penjualan.kodebrg

thisform.qty.value=penjualan.qtyj

thisform.hargajual.value=penjualan.JmlJual/penjualan.qtyj

thisform.hargabeli.value=thisform.hargajual.value-

(penjualan.labakotor/penjualan.qtyj)

thisform.Labakotor.value=penjualan.labakotor

SELECT BARANG

LOCATE FOR kodebrg=trim(thisform.kodebrg.value)

thisform.namabrg.value=barang.namabrg

SELECT FAKTUR

LOCATE FOR nofakjual=trim(thisform.nofakjual.value)

thisform.nopel.value=faktur.nopel

thisform.totalbayar.value=faktur.TotalBayar

thisform.totaljual.value=faktur.Totaljual

thisform.diskon.value=faktur.diskon

thisform.totallaba.value=faktur.totallaba

thisform.JmlUang.value=faktur.JmlUang

thisform.kembalian.value=faktur.kembalian

Page 113: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

113

SELECT pelanggan

LOCATE FOR nopel=trim(thisform.nopel.value)

thisform.namapel.value=pelanggan.namapel

RETURN

11.2 Tugas 11

1. Membuat Report Faktur Penjualan

2. Desain Report sbb :

Page 114: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

114

XII. Praktek Visual FoxPro XII

Materi : Membuat Laporan Harian Penjualan

12.1 Disain Laporan Harian

1. Buatkan Report Laporan Harian dengan disain sbb:

2. Isi TextBox:

Per Tanggal : faktur.TglJual

No.Faktur : faktur.nofakjual

Nama Pelanggan : pelanggan.namapel

Jumlah Penjualan : faktur.totaljual

Format : Format Expression : 999,999,999

Aligment : Right

Diskon : faktur.diskon

Page 115: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

115

Format : Format Expression : 99,999,999

Aligment : Right

Jumlah Bayar : Faktur.TotalBayar

Format : Format Expression : 999,999,999

Aligment : Right

Jumlah Piutang : Faktur.TotalLaba

Format : Format Expression : 999,999,999

Aligment : Right

Baris Summery atau SubGroup TglTran :

Jumlah Penjualan : faktur.TotalJual

Format : Format Expression : 999,999,999

Aligment : Right

Calculate : Calculation Type : SUM

Reset Based On : Group:Lapjual.TglTran

Diskon : faktur.diskon

Format : Format Expression : 99,999,999

Aligment : Right

Calculate : Calculation Type : SUM

Reset Based On : Group:Lapjual.TglTran

Jumlah Bayar : Faktur.TotalBayar

Format : Format Expression : 999,999,999

Aligment : Right

Calculate : Calculation Type : SUM

Reset Based On : Group:Lapjual.TglTran

Jumlah Piutang : Faktur.TotalLaba

Format : Format Expression : 999,999,999

Aligment : Right

Calculate : Calculation Type : SUM

Reset Based On : Group:Lapjual.TglTran

12.2 Membuat form untuk memanggil laporan harian

1. Disain Form, sbb :

Page 116: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

116

2. Listing Program :

a. Object Form1 Procedure LOAD close data

close index

set date british

set cent on

if used("barang")

use in barang

endif

if used("faktur")

use in faktur

endif

if used("Penjualan")

use in penjualan

endif

if used("pelanggan")

use in pelanggan

endif

set defa to d:\sipbfifo\data

select a

use barang

SET ORDER TO KodeBrg

select b

USE pelanggan

SET ORDER TO TAG NOPEL

SELECT C

USE faktur

set order to tag nofakjual

SELECT d

USE penjualan

set order to tag nofakjual

return

Page 117: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

117

b. Object Form1 Procedure ACTIVATE thisform.tgl1.day=DAY(DATE())

thisform.tgl1.month=MONTH(DATE())

thisform.tgl1.year=YEAR(DATE())

RETURN

c. Object Form1 Procedure UNLOAD close data

close index

return

d. Object KELUAR Procedure CLICK thisform.release

return

d. Object CETAK Procedure CLICK DD=thisform.tgl1.day

MM=thisform.tgl1.month

YY=thisform.tgl1.year

tgl1=str(DD,2)+"/"+str(MM,2)+"/"+str(YY,4)

TGL=ctod(tgl1)

select penjualan

LOCATE FOR tgljual=tgl

IF ! FOUND()

MESSAGEBOX("Sory tidak ada record yang bisa

ditampilkan",;

0,"Perhatian...")

RETURN

ENDIF

SELECT penjualan

SET RELATION TO kodebrg INTO barang, nofakjual INTO

faktur,;

faktur.NOPEL INTO PELANGGAN

repo form d:\sipbfifo\prg\lapharian preview FOR

TglJual=TGL

return

3. Simpan Form dengan nama File LAPHARIAN, kemudian jalankan form.

Page 118: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

118

12.3 Tugas 12

Buatkan Report Laporan Harian pembelian (disain report mirip dengan Report Laporan

Harian Penjualan)

Page 119: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

119

XIII. Praktek Visual FoxPro XIII

Materi : 1. Membuat Menu Program

2. Membuat Table dan Form Login

3. Membuat Program Compiler

4. Compiler File

13.1 Membuat Organisasi Menu

1. Klik page Other (lihat gambar 4.2.1)

2. Klik option menu kemudian klik tombol New

3. Pilih dan klik tombol menu

Gambar 13.1.1 Kotak dialog project manager

4. Ketik menu berikut :

Gambar 13.1.2 Menu Utama

Page 120: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

120

5. Klik File pada baris pertama

6. Klik tombol create, kemudian buatkan sub menu berikut :

7. Pada kotak Menu level sebelah kanan, pilih Menu Bar

Kemudian Klik Master, lalu klik tombol Create dan buatkan SubMenu Master sbb:

8. Buatkan Submenu Transaksi berikut :

9. Buatkan Sub Menu Laporan sbb. :

10. Buatkan Sub Menu Laporan Penjualan sbb. :

13. Simpan Menu dengan nama MenuUtama

14. Menguji menu dengan mengklik tombol Run

Page 121: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

121

13.2 Membuat Form Login

1. Membuat Table USER

a. Pada database SIPB buatkan table USER seperti pada gambar 13.2.1.

Gambar 13.2.1 Struktur Table USER

b. Klik Table USER, 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.4.1 Form Entry Login dan Password

2. Object Form1 Procedure ACTIVATE set exact on

set defa to D:\SIPBFIFO\DATA

if used('user')

use in user

endif

Page 122: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

122

if used('tmpuser')

use in tmpuser

endif

SELECT a

USE tmpuser

SELECT b

use user

set order to tag nmid

set order to tag pswd

thisform.nmid.value=""

thisform.pswd.value=""

RETURN

3. Object Form1 Procedure UNLOAD close data

close index

RETURN

4. Object Batal Procedure Click thisform.release

retu

5. Object Login Procedure Click IF EMPTY(thisform.nmid.value)

messagebox("User Id tidak boleh

kosong...!",0,"Perhatian...")

thisform.nmid.setfocus

RETURN

ELSE

IF EMPTY(thisform.PSWD.value)

messagebox("Password tidak boleh

kosong...!",0,"Perhatian...")

thisform.pswd.setfocus

RETURN

else

seleCT user

LOCATE FOR nmid=TRIM(thisform.nmid.value)

if ! found()

messagebox("Maaf User Id Anda Belum

Terdaftar...!",0,"Perhatian...")

thisform.nmid.setfocus()

retu

Page 123: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

123

else

set order to tag pswd

LOCATE for nmid=TRIM(thisform.nmid.value) .and.;

pswd=TRIM(thisform.pswd.value)

if ! found()

messagebox("Maaf Password Tidak

Dikenal...!",0,"Perhatian...")

thisform.pswd.setfocus()

retu

ELSE

SELECT tmpuser

DELETE ALL

SET DELETED OFF

PACK

APPEND FROM USER FOR nmid=TRIM(thisform.nmid.value)

IF tmpuser.st=1

DO d:\sipbfifo\prg\MENUUSER.MPR

ELSE

IF tmpuser.st=2

DO d:\sipbfifo\prg\MENUADMIN.MPR

ENDIF

ENDIF

thisform.release()

endif

endif

ENDIF

ENDIF

7. Simpan Form dengan nama File LOGIN

8. Uji Form dengan mengklik icon Run / !.

13.3 Membuat File Program

1. Klik page Code

2. Pilih dan klik option Program, kemudian klik tombol New

3. Ketikan program berikut : CLOSE ALL

SET TALK OFF

SET STAT OFF

SET AUTOSAVE ON

Page 124: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

124

SET CENTURY ON

SET DATE BRITISH

SET DEFA TO D:\SIPBFIFO\DATA

PUSH MENU _MSYSMENU

MODI WINDOWS SCREEN TITLE 'DUTA FAMILIY MOTOR'

WITH _SCREEN

.VISIBLE=.T.

.WINDOWSTATE=2

.picture='D:\SIPBFIFO\Gb\LATAR1.JPG'

ENDWITH

RELEASE ALL

DO d:\SIPBFIFO\PRG\menuLogin.mpr

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.

Gambar 13.4.1 Build Option

Page 125: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

125

XIV. Praktek Visual FoxPro XIV

Materi : Membuat Report Persediaan Barang

14.1 Membuat Report Persediaan Barang Metode FIFO

14.2 Membuat Form Kelola Persediaan Barang Metode FIFO

1. Form Kelola Persediaan Barang

Page 126: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

126

2. Coding

a. Object FORM1 Procedure LOAD close data

close index

set date british

set cent on

if used("barang")

use in barang

endif

if used("detailbeli")

use in detailbeli

endif

set defa to d:\sipbfifo\data

select a

use barang

SET ORDER TO KodeBrg

select b

USE detailbeli

SET ORDER TO kodebrg

return

b. Object FORM1 Procedure UNLOAD CLOSE DATABASES

CLOSE INDEXES

RETURN

c. Object CETAK Procedure CLICK SELECT DETAILBELI

SET ORDER TO KODEBRG

IF thisform.JB.Value=1

SET FILTER TO LEFT(kodebrg,1)="B"

ELSE

IF thisform.JB.Value=2

SET FILTER TO LEFT(kodebrg,1)="S"

ELSE

MESSAGEBOX("Pilih salah satu Jenis Barang yang mau

ditampilkan !",;

0,"Perhatian...!")

RETURN

ENDIF

ENDIF

Page 127: 1. Pendahuluan 2. Tipe File dan Ekstensi · PDF filebedanya, field Varchar tidak ... Jendela Properties merupakan tempat untuk mengatur hal-hal yang berkaitan ... menunjuk ke record

127

IF EOF()

MESSAGEBOX("Tidak ada barang yang dapat ditampilkan

!",0,"Perhatian...!")

RETURN

ENDIF

SET RELATION TO KODEBRG INTO BARANG

REPORT FORM d:\SIPBFIFO\Prg\LAPPERSEDIAAN PREVIEW

FOR STOCK>0

RETURN

d. Object KELUAR Procedure CLICK thisform.release