Anda di halaman 1dari 119

1

I.
1. 2. 3. 4. 5.

Praktek Visual FoxPro I


Tahappembuatanform Perangkatuntukpembuatanform Membuatlabel,textbox, dan tombolcommandpadaform Mengaturproperti Menyimpan,MengujidanMenutupform

Materi:

1.1 MembuatFileProject
a. Buatlahsub directorydengannamadepanmasingmasing b. BukaprogramVisualFoxPro c. MembuatFileProject 1).Klikmenu File 2).Klik New 3).PilihoptionProject 4).Pilihdanklik NewFile (lihatgambar1.1.1) 5).Pilihsubdirectorynamamasingmasinguntuk menyimpanfileproject 6).Ketiknamafileproject(PRAKVFP) 7).Kliktombolsave(lihatgambar1.1.2) 8).SetelahituakantampilProjectManager(sepertipadagambar1.1.3.)

Gambar1.1.1.Kotakdialogpembuatanfileproject

Gambar1.1.2.KotakdialogpenyimpananfileProject

Gambar1.1.3.KotakdialogpenyimpananfileProject

1.2 MembuatFileForm
Kasus1.2: Buatkan form untuk mengetahui hasil seleksi penerimaan calon pegawai, dengan ketentuansebagaiberikut: Jikanilai akhirminimal70,maka diterima Tapijikasebaliknya,maka ditolak/gagal. 1. MembuatFormKosong a. Klikpage DocumentspadaProjectManager b. PilihdanKlikobjectForm c. KliktombolNew d. Pilihdanklik tombolNewForm pada kotak dialogNewForm(gb. 1.2.1)

Gambar1.2.1 KotakDialogNewForm e. SetelahitudilayarakantampilFormkosongsepertipadagambar1.2.2.

Gambar1.2.2 FormKosong

2. MemberikanJudulFormdanGambarLatarForm a. MunculkanJendelaProperties denganmengklikkananpadaformkosong b. Pilihdanklik Properties c. PilihobjectForm padajendelaproperties d. Padabariscaption,ketik PERHITUNGANHASILSELEKSI e. PadabarisPicture,pilihgambarlataryangdikehendaki. 3. MembuatControlQuestiondanFieldEntry a. MunculkantoolbarFormControlerToolbar darimenuView b. Buatkan Questin Nama, Nilai Akhir, dan Keterangan dengan menggunakan LabeldariFormControlerToolbar c. Buatkan Field Entry untuk menginput Nama, Nilai Akhir dan Keterangan denganmenggunakanTextBox. d. Hasilnyasepertipadagambar1.2.3.

Gambar1.2.3FormPerhitunganHasilSeleksiI 4. MengisiEntryFielddenganFormula a. Doubleklik ControlText2 b. CaridanpilihProcedure InteractiveChange c. KetikProcedureberikut: ifthisform.text2.value>=60 thisform.text3.value="Lulus" else thisform.text3.value="Gagal" endif return

5. Simpan Form dengan nama file HasilSeleksi1 (sebaiknya nama file tidak pakai sepasi) 6. UjiFormdenganmengklikiconRun padatoolbarStandard

1.3 LatihanMembuatForm
Kasus1.3. Buatkan form untuk mencari nilai akhir, angka mutu dan hurup mutu dengan ketentuansbb.: NA =(UTS+UAS*2+TGS)/4 NA 86 100 71 85 56 70 41 55 0 40 AM 4 3 2 1 0 HM A B C D E

1. BuatkanFormsepertipadagambar1.3.1.

Gambar1.3.1FormPerhitunganHasilSeleksiII 2. BuatkanTombolTekanCheckerdenganfasilitasCommandButtondariForm ControlerToolbar,kemudianberinamaProses. 3. IsikanProcedure Clickdari ControlProsesberikut: localvna vna=(thisform.text2.value+thisform.text3.value*2+thisform.text4.value)/4 ifvna>=86 vam=4 vhm="A" else ifvna>=71 vam=3 vhm="B" else ifvna>=56 vam=2 vhm="C" else ifvna>=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. SimpanFormdengannamaFile HasilSeleksi2 5. UjiForm.

1.4 TugasI
1. KasusTugas1: Buatkan form untuk menghitung gaji pokok, gaji lembur dan jumlah gaji dengan ketentuansbb: Jumlahjamkerjapokok=8jam Jikabekerjalebihdari8jam,makaselebihnyadihitunglembur Tariplembur=150%*GajiPerJam GajiTotal=GajiPokok+GajiLembur 2. BuatkanFormsepertipadagambar1.4.1.:

Gambar1.4.1FormPerhitunganUpahHarian

II.
1. 2. 3. 4. 5.

Praktek Visual FoxPro II


Tahappembuatanform PenggunaanfasilitasOptionGroup&CheckBox PenggunaanPerintahIF PenggunaanPerintahDoCase Menyimpan,MengujidanMenutupform

Materi:

2.1

MembukaFileProject

Untuk membuka File Project PRAKVFP yang sudah dibuat pada praktek sebelumnya,makalakukanlangkahsbb.: 1. Klikmenu File 2. Klik Open 3. Cari Folder namamasingmasingdi driveO:\AFOX 4.. PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar2.1.1

Gambar2.1.1KotakDialogOpenFile

10

2.2 MembuatFileFormBaru
1. MembuatFormKosong a. Klikpage DocumentspadaProjectManager b. PilihdanKlikobjectForm c. KliktombolNew d. PilihdankliktombolNewForm padakotakdialogNewForm(gb. 2.2.1)

Gambar2.2.1KotakDialogNewForm 2. MemberikanJudulFormdanGambarLatarForm a. MunculkanJendelaProperties denganmengklikkananpadaformkosong b. Pilihdanklik Properties c. PilihobjectForm padajendelaproperties d. Padabariscaption,ketik ENTRYGAJIKARYAWAN e. PadabarisPicture,pilihgambarlataryangdikehendaki. 3. MembuatControlQuestiondanFieldEntry a. MunculkantoolbarFormControlerToolbar darimenuView b. Buatkan Question Nama Karyawan, Golongan, Status, Jumlah Anak, Gaji Pokok, Tunjangan Istri, Tunjangan Anak dan Gaji Total dengan menggunakanLabeldariFormControlerToolbar c. Buatkan Field Entry untuk menginput Nama Karyawan, Golongan, Jumlah Anak,GajiPokok,TunjanganIstri,TunjanganAnakdanGajiTotaldengan menggunakanTextBox. 4. MembuatOptionGroup a. CaridanKlikcontrol OptionGrouppadaFormControl Toolbar b. KlikpadaformsebelahkananStatus,kemudianberinama STpadaproperties.

11

c. Ganti Option1 dengan Kawin, dengan cara klik kanan option group kemudian pilihedit. d. KlikOption1,kemudianpadabarisCaptiondijendelapropertiesketik Kawin. e. KlikOption2,kemudiangantidengan BelumKawin f. Hasilnyalihatgambar2.2.2.

Gambar2.2.2FormEntryGajiKaryawan 5. MengisiControlSpinnerGoldenganFormula a. DoubleklikControl Gol b. CaridanpilihProcedure InteractiveChange c. KetikProcedureberikut: gol=thisform.gol.value docase casegol=1 gapok=200000 casegol=2 gapok=400000 casegol=3

12

gapok=600000 casegol=4 gapok=800000 otherwise gapok=0 endcase st=thisform.st.value ifst=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 ifja>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. MengisiControlOptionGroupStatusKdenganFormula a. DoubleklikControlStatusK b. CaridanpilihProcedure InteractiveChange c. Isi Procedure InteractiveChange object ST dicopy dari Procedure InteractivechangeobjectGol 7. MengisiControlFieldEntryText2denganFormula a. DoubleklikControlText2

13

b. CaridanpilihProcedure InteractiveChange c. Isi Procedure InteractiveChange object Text2 dicopy dari Procedure InteractivechangeobjectGol 8. Simpan Form dengan nama file HitungGaji (sebaiknya nama file tidak pakai sepasi) 9. UjiFormdenganmengklikiconRun padatoolbarStandard

2.3 MembuatFormPilihGambar
1. BuatkanFormsepertipadagambar2.3.1.berikut:

Gambar2.3.1FormPilihGambar 2. BuatkanOptionGroup,kemudianberinamaPIL. ButtonCountnyaganti6 3. GantiOption1 s/dOption6denganGambar1s/dGambar6 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 kemudianberinamatengah,danCheckBoxKananAtaskemudianberinama kanan)

14

sebanyaktigabuahyangdiletakandisebelahKiriBawah,TengahBawahdanKanan BawahOptionGroup(sepertipadagambar2.3.1) 6. DoubleKlikcontrolOptionGroupPil,kemudianpilihprocedureInteractiveChange, laluketikprocedureberikut: docase casethisform.pil.value=1 thisform.image1.picture="gb1.jpg" casethisform.pil.value=2 thisform.image1.picture="gb2.jpg" casethisform.pil.value=3 thisform.image1.picture="gb3.jpg" casethisform.pil.value=4 thisform.image1.picture="gb4.jpg" casethisform.pil.value=5 thisform.image1.picture="gb5.jpg" casethisform.pil.value=6 otherwise thisform.image1.picture="gb6.jpg" endcase 7. Double Klik control CheckBox Kiri,kemudian pilih procedure InteractiveChange, laluketikprocedureberikut: ifthisform.kiri.value=1 thisform.gbkiri.picture=thisform.image1.picture else thisform.gbkiri.picture="" endif 8. Double Klik control CheckBox Tengah, InteractiveChange,laluketikprocedureberikut: kemudian pilih procedure

ifthisform.tengah.value=1 thisform.gbtengah.picture=thisform.image1.picture else thisform.gbtengah.picture="" endif 9. Double Klik control CheckBox Kanan, InteractiveChange,laluketikprocedureberikut: kemudian pilih procedure

15

ifthisform.kanan.value=1 thisform.gbkanan.picture=thisform.image1.picture else thisform.gbkanan.picture="" endif 10. SimpanFormdengannamaFile PilihGB 11. UjiForm.

16

2.4 TugasII
1. BuatkanFormsepertipadagambar2.4.1

Gambar2.4.1.FormMenghitungAngka 2. Formula/ketentuanperhitunganadalahsbb.: a=0 b=0 c=0 JikaCheckbox100dipilih a=100 JikaCheckbox10dipilih b=10 JikaCheckbox2dipilih c=2 Jikaoptiontambahdipilih,makaformulanya: Hasil=a+b+c JikaoptionKurangdipilih,makaformulanya: Hasil=a b c

17

JikaoptionKalidipilih,maka: Jikayangcheckboxhanya100dan10,makaformulanya Hasil=a*b Jikayangcheckboxhanya10dan2,makaformulanya Hasil=b*c Jikayangcheckboxhanya100dan2,makaformulanya Hasil=a*c Jikayangcheckbox100,10dan2,makaformulanya Hasil=a*b*c 3. Selamatmencoba!

18

III. Praktek Visual FoxPro III Materi:


1. 2. 3. 4. 5. Tahappembuatanform PenggunaanfasilitasOlecontrol PenggunaanPerintahDOWHILE PenggunaanPerintahFORNEXT Menyimpan,MengujidanMenutupform

3.1 MembukaFileProject
Untuk membuka File Project PRAKVFP yang sudah dibuat pada praktek sebelumnya,makalakukanlangkahsbb.: 1. Klikmenu File 2. Klik Open 3. Cari Folder namamasingmasingdodriveO:\ 4.. PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar3.1.1

Gambar3.1.1KotakDialogOpenFile

3.2 AplikasiDOWHILE
1. MembuatFormKosong a. Klikpage DocumentspadaProjectManager

19

b. PilihdanKlikobjectForm c. KliktombolNew d. PilihdankliktombolNewForm padakotakdialogNewForm(gambar3.2.1)

Gambar3.2.1KotakDialogNewForm 2. MemberikanJudulFormdanGambarLatarForm a. MunculkanJendelaProperties denganmengklikkananpadaformkosong b. Pilihdanklik Properties c. PilihobjectForm padajendelaproperties d. Padabariscaption,ketik MEMBUATANGKABERURUT e. PadabarisPicture,pilihgambarlataryangdikehendaki. 3. MembuatControlQuestiondanFieldEntry a. MunculkantoolbarFormControlerToolbar darimenuView b. BuatkanQuestionStart,Step,Stop,danHasildenganmenggunakanLabeldari FormControlerToolbar c. Buatkan Field Entry untuk menginput Start, Step, Stop, dan Hasil dengan menggunakanTextBox. 4. MembuatCommandButton a. CaridanKlikcontrolCommandButtonpadaFormControlToolbar b. Letakan di bawah control textbox Text1, kemudian pada properties ganti CaptiondanNamenyadenganProses. c. Hasilnyalihatgambar3.2.3. 5. MembuatOleControl a. KlikMenu Tools

20

b. c. d. e.

PilihdanKlik Option PilihdanKlikpage Controls PilihdanKlik ActiveXControl CariMicrosoftProgressBarControl6.0kemudianberikantandaCheckBoxpada kotaksebelahkirinya,sepertipadagambar3.2.2.

Gambar3.2.2Kotakdialogoption f. g. h. i. j. KliktombolOk Pilihdanklikcontrol ViewClassespadaFormControlsToolbar Pilihdanklik ActiveXControls PilihdanklikControl MicrosoftProgressBarControl,Version5.0 Buatkan ProgressBar di sebelah bawah Tombol Proses, seperti pada gambar 3.2.3.

21

Gambar3.2.3FormMembuatAngkaBerurut k. GantinamenyadenganCtrl 6. MengisiControlTombolProsesdenganFormula a. DoubleklikControlTombolProses b. CaridanpilihProcedure Clic padaobjectProses c. KetikProcedureberikut: locala,b,c ifthisform.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 dowhilea<=c thisform.text4.value=a a=a+b n=(100/c)*a ifa<=c

22

thisform.ctrl.value=n endif x=0 dowhilex<1000000 x=x+1 enddo enddo else messagebox("Start,StepdanStopharusdiisi!",0,"Perhatian!") thisform.text1.setfocus() retu endif this.enabled=.t. retu 7. SimpandanUjiForm a. Simpandengannamafile URUTANGKA1 b. UjiFormdenganmengklikRun/!.

3.3 AplikasiFORNEXT
1. BukaFileForm URUTANGKA1 2. SimpandenganperintahSaveAsdanberinamaURUTANGKA2 3. DoubleClicktombolProses,kemudianprosedurnyaeditmenjadisbb.: locala,b,c,n,i ifthisform.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 fori=atocstepb thisform.text4.value=a a=a+b n=(100/c)*a ifa<=c thisform.ctrl.value=n

23

endif forx=1to10000000step1 next next else messagebox("Start,StepdanStopharusdiisi..!",0,"Perhatian..!") thisform.text1.setfocus() retu endif this.enabled=.t. retu 4. SimpanFormdengannamaFile URUTANGKA2 5. UjiFormdenganmengklikiconRun/!.

3.4 TugasIII
1. Klikpage Code padaprojectmanager 2. PilihdanklikoptionProgram,kemudiankliktombolNew 3. Ketikprogramberikut: functionterbilang parameternumerik privatehasil,ulang,uang,kesatu,kedua,ketiga,cangka privatecangka0,cangka1,cangka2,cangka3,cangka4,cangka5 privatecangka6,cangka7,cangka8,cangka9 privatesatu,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"

24

cangka7="Tujuh" cangka8="Delapan" cangka9="Sembilan" gabung="" forulang=1 to4 satu=substr(uang,kesatu,1) dua=substr(uang,kedua,1) tiga=substr(uang,ketiga,1) gabung=satu+dua+tiga ifval(satu)=1 hasil=hasil+"Seratus" else ifval(satu)>1 hasil=hasil+cangka&satu+"Ratus" endif endif DOCASE CASEVAL(DUA)=1 DOCASE CASEVAL(TIGA)=0 HASIL=HASIL+"Sepuluh" CASEVAL(TIGA)=1 HASIL=HASIL+"Sebelas" OTHER HASIL=HASIL+ALLTRIM(CANGKA&TIGA)+ "Belas" ENDCASE CASEVAL(DUA)>1 HASIL=HASIL+CANGKA&DUA+"Puluh"+ CANGKA&TIGA CASEVAL(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

25

DOCASE CASEulang=1.AND.VAL(GABUNG)>0 HASIL=HASIL+"Milyar" CASEulang=2.AND.VAL(GABUNG)>0 HASIL=HASIL+"Juta" CASEulang=3.AND.VAL(GABUNG)>0 IFGABUNG="001".OR.GABUNG="1" HASIL=HASIL+"" ELSE HASIL=HASIL+"Ribu" ENDIF ENDCASE kesatu=kesatu+3 kedua=kedua+3 ketiga=ketiga+3 nextulang sen1=substr(uang,14,1) sen2=substr(uang,15,1) iflen(hasil)>1 hasil=hasil+"Rupiah" endif DOCASE CASEVAL(SEN1)=0.AND.VAL(SEN2)>0 HASIL=HASIL+CANGKA&SEN2+"Sen" CASEVAL(SEN1)=1 DOCASE CASEVAL(SEN2)=0 HASIL=HASIL+"SepuluhSen" CASEVAL(SEN2)=1 HASIL=HASIL+"SebelasSen" CASEVAL(SEN2)>1 HASIL=HASIL+ALLTRIM(CANGKA&SEN2)+ "BelasSen" ENDCASE CASEVAL(SEN1)>1 HASIL=HASIL+CANGKA&SEN1+"Puluh"+ CANGKA&SEN2+"Sen" ENDCASE RETURNHASIL

26

4. UjiProgramdiatasdenganformberikut:

5. ProcedureInteractiveChangepadaObjectText1,adalahsbb.: setdefatoo:\AFOX\susi setproceduretoterbilang a=terbilang(thisform.text1.value) thisform.text2.value=a retu

27

IV. Praktek Visual FoxPro IV Materi:


1. 2. 3. 4. 5. 6. 7. MembuatDatabse MembuatTable MengeditdanMengisiTable MembuatPassword MembuatMenu MembuatFileProgram(PRG) MengujiMenu

4.1 MembukaFileProject
Untuk membuka File Project PRAKVFP yang sudah dibuat pada praktek sebelumnya,makalakukanlangkahsbb.: 1. Klikmenu File 2. Klik Open 3. Cari Folder namamasingmasingdodriveO:\AFOX 4.. PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar4.1.1

Gambar4.1.1KotakDialogOpenFile

28

4.2 MembuatOrganisasiMenu
1. KlikpageOther(lihatgambar4.2.1) 2. KlikoptionmenukemudiankliktombolNew 3. Pilihdankliktombolmenu

Gambar4.2.1Kotakdialogprojectmanager 4. Ketikmenuberikut:

5. Klik FileMaster padabarispertama 6. Kliktombolcreate,kemudianbuatkansubmenuberikut:

29

7. Padakotak Menulevel sebelahkanan,pilihMenuBar

8. BuatkanSubmenu Transaksiberikut:

9. Padakotak Menulevel,pilihlagi MenuBar 10. BuatkanSubMenu Laporansbb.:

30

11. BuatkanSubMenu LaporanPenjualansbb.:

12. Padakotak Menulevel,pilihlagi MenuBar 13. BuatkanSubMenu Utilitysbb.:

14. SimpanMenudengannama MenuPenjualan 15. MengujimenudenganmengkliktombolRun

4.3 MembuatFileDatabasedanTable
1. MembuatFileDatabase a. Klikpage Data padaProjectManager b. PilihdanKlikobjectDatabase c. Klik tombolNew d. PilihdankliktombolNewDatabase padakotakdialogNewDatabase(gb4.3.1)

Gambar4.3.1KotakDialogNewDatabase

31

2. MembuatTablePSWD a. Klikkananpadajendeladatabase DATAKKBAM b. Pilihdanklik NewTable c. PilihdankliktombolNewTable,sepertipadagambar4.3.2.

Gambar4.3.2KotakDialogNewTable d. PastikanfolderyangaktifpadabarisSaveIn adalahFolderNamaAnda e. Ketiknamafiletable PSWDpadabaris Entertable,sepertiopada gambar4.3.3.

Gambar4.3.3KotakDialogCreateTable

32

f. KliktombolSave,kemudianketikstrukturtablesepertipadagambar4.3.4.

Gambar4.3.4StrukturTablePSWD g. KliktombolOk,untukmengakhiripembuatanstrukturtable h. Jawab/PilihdanKliktombolNopadapertanyaanInputDataRecordNow?, sepertipadagambar4.3.5.

Gambar4.3.5KotakDialogQuestion 3. MengisiTable a. KlikTanda+padasebelahkiriDatabasesdipageData,ProjectManager,untuk mengetahuidatabaseyangsudahdibuat. b. KliklagiTanda+padasebelahkiri DATAKKBAM, untukmembukatable c. KliklagiTanda+padasebelahkiriTable,untukmengetahuitable yangsudah dibuat. d. Klik Table PSWD, kemudian klik tombol Browse yang terletak sebelah kanannya. e. Setelahkebuka,klikmenuTable,kemudianpilihdanklikAppendNewRecord (Ctrl+Y) f. IsiIdNmdengannamadepananda g. IsiPswddengankodesandianda

33

4.4 MembuatFormuntukLogin
1. BuatkanFormsepertipada gambar4.4.1

Gambar4.4.1FormEntryLogindanPassword 2. Procedure LoaddariObjectForm1 setdefatoo:\AFOX\PolderAdnda ifused('pswd') useinpswd endif usepswd retu 3. Procedure UnLoaddariobjectForm1 closedata closeindex retu

34

4. Procedure ActivatedariobjectForm1 thisform.text1.value="" thisform.text2.value="" retu 5. Procedure ClickdariObjectLogin locatefornmid=trim(thisform.text1.value) if!found() messagebox("MaafUserIdAndaBelumTerdaftar...!",0,"Perhatian...") thisform.text1.setfocus() retu else locateforpswd=trim(thisform.text2.value) if!found() messagebox("MaafPasswordTidakDikenal...!",0,"Perhatian...") thisform.text2.setfocus() retu else messagebox(Selamat,Andaberhakmengaksessystemini..,0, AssalamualaikumWr.Wb.) doo:\AFOX\PolderAnda\MENUPENJUALAN.MPR thisform.release() endif endif 6. Procedure ClickdariobjectBatal thisform.release() quit retu 7. SimpanFormdengan namaFile PASWORD 8. UjiFormdenganmengklikiconRun/!.

4.5 MembuatFileProgram
1. Klikpage Code 2. PilihdanklikoptionProgram, kemudiankliktombolNew

35

3. Ketikanprogramberikut: CLOSEDATABASEall CLEARALL CLOSEALL SETTALKOFF SETSTATOFF SETAUTOSAVEON SETCENTURYON SETDATEITALIAN SETDEFATO O:\AFOX\\SUSI PUSHMENU_MSYSMENU MODIWINDOWSSCREENTITLE'SISTEMINFORMASIGAJIDOSEN' WITH_SCREEN .VISIBLE=.T. .WINDOWSTATE=2 .picture='LATAR.JPG' ENDWITH RELEASEALL DOFORMO:\AFOX\PolderAnda\PASWORD.SCX READEVENTS QUIT 4. SimpanprogramdengannamaSIPB 5. JalankanprogramdenganmengkliktombolRun

36

4.6 TugasIV
1. Buatkan database baru dengan nama SIPNM (Sistem Informasi Pengolahan Nilai Mahasiswa) 2. BuatkantablepassworddengannamaPSWDsepertipadapraktek4,dengantruktur tablesepertipadagambar4.6.1.

Gambar4.6.1StrukturFileTablePSWD 3. Entry(tambahdata)tablePSWD,nmiddiisinamaanda,danpswdandaisidengan koderahasiahanda. 4. BuatkanFormuntukmengeditPassword,dengancontohformsepertipadagambar 4.6.2.berikut:

Gambar4.6.2.FormGantiPassword

37

V.

Praktek Visual FoxPro V

Materi:
1. MembuatFileProject 2. MengambilFileDatabasedariprojectlain 3. MembuatFileTabel

5.1 MembuatProjectBaru
1. MembuatFileProject a. Klikmenu File b. Klik New c. PilihoptionProject d. Pilihdanklik NewFile (lihatgambar5.1.1) e. PilihFoldernamamasingmasinguntukmenyimpanfileproject f. Ketiknamafileproject(SIPB) g. Kliktombolsave(lihatgambar5.1.2)

Gambar5.1.1Kotakdialogpembuatanfileproject

Gambar5.1.2KotakdialogpenyimpananfileProject

38

2. MembukaMenu a. Klikpage Other (lihatgambar5.1.3) b. KlikoptionmenukemudiankliktombolAdd

Gambar5.1.3Kotakdialogprojectmanager c. BukaFolderAndadidrive o:\AFox\NamaAnda d. Pilihdanklikfile MENUPENJUALAN.MNX,kemudiankliktombolOk 3. MembukaFileProgramSIPB.PRGdanTERBILANG.PRG a. b. c. d. e. Klikpage Code KlikoptionProgramkemudiankliktombolAdd BukaFolderAndadidrive o:\AFox\NamaAnda Pilihdanklikfile SIPB.PRG,kemudiankliktombolOk Ulangiperintahdiatasuntukmembukafile TERBILANG.PRG

4. MembukaFileDatabase a. b. c. d. Klikpage Data KlikoptionDatabasekemudiankliktombolAdd BukaFolderAndadidrive o:\AFox\NamaAnda Pilihdanklikfile DATAKKBAM.DBC,kemudiankliktombolOk

5. MembuatFileTabel a. Kliktanda+yangterletakdidepanoptiondatabase b. Kliklagitanda+yangadadidepanfiledatabase DATAKKBAM

39

c. d. e. f. g. h.

Klik table, kemudiankliktombolNew PilihdanKliktombolNewTabel PilihFoldernamaandamasingmasing Ketiknamafiletable BARANG Kliktombolsave Isikannamanamafieldberikut:

i. BerikanFormat!padafieldKODEBRG,untukmemformatmenjadiCapital. j. Indextabletersebutberdasarkankodebrgdanberikantype PrimaryKeyseperti padagambarberikut:

k. KliktombolOK l. PilihtombolNo padakotakdialogInputDataRecordNow 6. MengisiTable BARANG denganfasilitas Browse a. KlikTable BARANG,kemudiankliktombol Browse b. Klik menu Table, kemudian pilih dan klik Append New Record (Ctrl + Y), sepertipadagambarberikut:

40

c. Entry databerikutini:

7. MembuatFormOlahDataBarang a. Klikpage Documents b. KlikoptionForm,kemudiankliktombolNew c. KliktombolNewForm d. BuatkanFormberikut:

41

e. MembuatTytleFormdanBackgroud 1) KlikbarisCaptiondijendelaproperties 2) Ketik:OLAHDATABARANG 3) Klik pada baris Picture, kemudian klik , lalu pilih latar yang anda kehendaki. (jika gambar background belum ada minta dicopykan dulu kepadadosenanda) 4) Aturlahlebarformmenjadi: Width :623 Hight :443 f. MembuatLabelKodeBarang Caption :KodeBarang FontBold :.t.(true) FontName :Arial FontSize :12 Hight :25 Left :24 Name :Label1 TabIndex :1 Top :24 Width :108 g. MembuatTextBoxKodeBarang(Text1) FontBold :.f.(false) FontName :Arial FontSize :12 Format :! Hight :27 Left :144 MaxLength :6 Name :Text1 TabIndex :4 Top :24 Width :97 h. MembuatCommandButtonPeriksa Caption : Hight :48 Left :408 Name :periksa Picture :o:\AFox\NamaAnda\find.bmp

42

TabIndex Top Width

:5 :18 :84

i. MembuatCommandButton < Caption : Hight :36 Left :264 Name :simpan Picture :o:\AFox\NamaAnda\wzsave.bmp TabIndex :8 Top :132 Width :48 j. MembuatCommandButton+ Caption : Hight :36 Left :324 Name :tambah Picture :o:\AFox\NamaAnda\add.bmp TabIndex :9 Top :132 Width :36 k. MembuatCommandButtonPerbaiki Caption :\<Perbaiki FontBold :.f.(false) FontName :Arial FontSize :14 Forecolor : Hight :36 Left :408 Name :perbaiki TabIndex :10 Top :96 Width :84 l. MembuatCommandButtonUpDate Caption :\<UpDate FontBold :.f.(false) FontName :Arial

43

FontSize Forecolor Hight Left Name TabIndex Top Width

:14 :0,0,0 :36 :408 :ud :11 :96 :84 :240 :24 :Grid1 :.t. :12 :180 :564

m. MembuatGrid Hight Left Name ReadOnly TabIndex Top Width

n. MemilihFieldyangakanditampilkandigrid Klikkananpada grid Pilihoptionbuilder PilihfileBARANGpadakotakdialoggambar5.1.4

Gambar5.1.4GridBuilder

44

Pilihnamafieldyangakanditampilkandigrid,masukankekolomselected fileddenganmenggunakantombol atau . KliktombolOkuntukmengahirinya. EditpadapropertiesHeaderHeightmenjadi30danRowHeightmenjadi20 o. Mengeditgrid Klikkananpada grid Pilihoptionedit PilihdanklikHeaderkolomKodeBrg,aturpropertiesnya,menjadisbb: * Aligment :2 MiddleCenter * BackColor : * Caption :KODE * FontBold :.t.(true) * FontName :Arial * FontSize :11 * ForeColor : * Name :Header1 KlikkolomKodeBrg,aturpropertiesnya,menjadisbb: * Aligment :2 MiddleCenter * BackColor : * ControlSource :Barang.Kodebrg * FontBold :.t.(true) * FontName :Arial * FontSize :11 * ForeColor : * Name :Column1 8. FormControlyanglainnyaandabuatseperticontohdiatas. 9. MembuatProcedure LoadpadaobjectForm1 Doubleklikpadaformyangkosong CariProcedure loadpadaobjectForm1 Ketikprocedureberikut:
closedata closeindex setdefatoo:\AFox\NamaAnda IFUSED("barang") USEINbarang endif

45

usebarang setordertotagkodebrg reindex return

10. MembuatProcedure UnloadpadaobjectForm1 CariProcedure UnloadpadaobjectForm1 Ketikprocedureberikut: closeindex closedata return 11. MembuatProcedureKosongkandanTampilkan PilihdankilkmenuForm(sepertipadagambar5.1.5)

Gambar5.1.5.MemilihMenuNewMethod KetikkosongkanpadakolomName,kemudiankeliktombolAdd(sepertipada gambar5.1.6)

Gambar5.1.6KotakdialogNewMethod KetikTampilkanpadakolomName,kemudiankeliktombolAdd(sepertipada gambar5.1.7)

Gambar5.1.7.KotakdialogNewMethod

46

KetikNonText1padakolomName,kemudiankeliktombolAdd(sepertipada gambar5.1.8)

Gambar5.1.8.KotakdialogNewMethod Ketik Kendali pada kolom Name, kemudian kelik tombol Add (seperti pada gambar5.1.9)

Gambar5.1.9.KotakdialogNewMethod KliktombolClose,untukmenutupkotakdialog CariProcedure KosongkanpadaobjectForm1 Ketikprocedureberikut:


thisform.text2.value="" thisform.text3.value=0 thisform.text4.value="" thisform.text5.value=0 return

Cariprocedure Tampilkan padaobjectForm1 Ketikprocedureberikut:


thisform.text1.value=barang.kodebrg thisform.text2.value=barang.namabrg thisform.text3.value=barang.qty thisform.text4.value=barang.satuan thisform.text5.value=barang.hrgdsr thisform.text6.value=recno() return

47

Cariprocedure NonText1padaobjectForm1 Ketikprocedureberikut:


parameterkeadaan thisform.text2.enabled=keadaan thisform.text3.enabled=keadaan thisform.text4.enabled=keadaan thisform.text5.enabled=keadaan return

Cariprocedure KendalipadaobjectForm1 Ketikprocedureberikut:


PARAMETERSx thisform.pertama.enabled=x thisform.sebelumnya.enabled=x thisform.berikutnya.enabled=x thisform.terakhir.enabled=x retu

12. MembuatProcedure ActivatepadaobjectForm1 Cariprocedure Activate padaobjectForm1 Ketikprocedureberikut:


thisform.kosongkan() thisform.text1.enabled=.t. thisform.nontext1(.f.) thisform.kendali(.t.) thisform.text1.setfocus() thisform.keluar.enabled=.t. thisform.periksa.enabled=.t. thisform.simpan.enabled=.f. thisform.batal.enabled=.f. thisform.hapus.enabled=.f. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.f. thisform.perbaiki.visible=.t. thisform.tambah.enabled=.t. thisform.ud.visible=.f. thisform.grid1.Enabled=.t. thisform.grid1.readonly=.t. return

Tutupjendelaprosedur,jikapengetikanprosedursudahselesai

48

13. MembuatProcedure ClickpadaobjectTambah( Doublekliktombol (klikkanantombol Cariprocedure Clickpadaobjecttambah Ketikprocedureberikut:


thisform.kosongkan() thisform.text1.enabled=.t. thisform.nontext1(.f.) thisform.kendali(.t.) thisform.periksa.enabled=.t. thisform.simpan.enabled=.f. thisform.perbaiki.visible=.t. thisform.ud.visible=.f. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.f. thisform.keluar.enabled=.f. thisform.tambah.enabled=.f. thisform.batal.enabled=.t. thisform.hapus.enabled=.f. thisform.grid1.Enabled=.t. thisform.text1.SetFocus() return

) ,kemudianpilihcode)

14. Procedure ClickpadaobjectPeriksa (

ifempty(thisform.text1.value) messagebox("KodeBarangHarusDiisi!",0,"Perhatian...!") thisform.text1.setfocus() return endif ifseek(thisform.text1.value) thisform.grid1.setfocus() thisform.refresh() messagebox("Kodebarangtsbsudahada...!",0, "Perhatian...") thisform.text1.enabled=.t. thisform.nontext1(.f.) thisform.kendali(.t.) thisform.periksa.enabled=.t. thisform.simpan.enabled=.f. thisform.batal.enabled=.f. thisform.hapus.enabled=.f. thisform.tambah.enabled=.t. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.f. thisform.perbaiki.visible=.t.

49

thisform.ud.visible=.f. thisform.grid1.Enabled=.t. thisform.text1.setfocus() return else thisform.text1.enabled=.f. thisform.nontext1(.t.) thisform.kendali(.f.) thisform.periksa.enabled=.f. thisform.simpan.enabled=.t. thisform.batal.enabled=.t. thisform.hapus.enabled=.f. thisform.tambah.enabled=.f. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.f. thisform.perbaiki.visible=.t. thisform.ud.visible=.f. thisform.grid1.Enabled=.f. thisform.text2.setfocus() endif return

15. Procedure ClickpadaobjectSimpan(

ifempty(thisform.text2.value).or. empty(thisform.text4.value).or. empty(thisform.text5.value) messagebox("Isidatadenganlengkap!",0,"Perhatian...!") thisform.text2.setfocus return endif locateforkodebrg=space(6) if!found() appendblank endif replkodebrgwiththisform.text1.value replnamabrgwiththisform.text2.value replqtywiththisform.text3.value replsatuanwiththisform.text4.value replhrgdsrwiththisform.text5.value thisform.grid1.setfocus() thisform.refresh() thisform.kendali(.t.) thisform.keluar.enabled=.t. thisform.periksa.enabled=.f. thisform.simpan.enabled=.f. thisform.batal.enabled=.f. thisform.hapus.enabled=.f. thisform.tambah.Enabled=.t. thisform.perbaiki.enabled=.t.

50

thisform.ud.enabled=.f. thisform.perbaiki.visible=.t. thisform.ud.visible=.f. return

16. Procedure ClickpadaobjectPertama(

setorderto gotop ifeof() messagebox("Tidakadarecord...!",0,"Perhatian...!") thisform.refresh() return endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return

17. Procedure ClickpadaobjectSebelumnya(


setorderto skip1 ifbof() gotop endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return

18. Procedure ClickpadaobjectBerikutnya(


setorderto skip ifbof() gobottom endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return

51

19. Procedure ClickpadaobjectTerakhir (

setorderto gobottom ifeof() messagebox("Tidakadarecord...!",0,"Perhatian...!") thisform.refresh() return endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return

20. Procedure ClickpadaobjectHapus(


localljawab,ln ln=recno()

ljawab=messagebox("AndaYakin?",4+32+256,"Recordinimaudihapus!")

ifljawab=6 setdeleon dele endif gotoln thisform.grid1.setfocus() thisform.refresh() return

21. Procedure ClickpadaobjectPerbaiki


thisform.text1.enabled=.t. thisform.nontext1(.t.) thisform.kendali(.f.) thisform.keluar.enabled=.f. thisform.periksa.enabled=.f. thisform.simpan.enabled=.f. thisform.batal.enabled=.t. thisform.hapus.enabled=.f. thisform.tambah.enabled=.f. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.t. thisform.perbaiki.visible=.f. thisform.ud.visible=.t. thisform.grid1.Enabled=.f. return

52

22. Procedure ClickpadaobjectUd(UpDate)


localjawab,ln ln=recno()
jawab=messagebox("MauMemperbaikiDataSebelumnya?",4+32,"Perhatian...!")

ifjawab=6 gotoln replkodebrgwiththisform.text1.value replnamabrgwiththisform.text2.value replqtywiththisform.text3.value replsatuanwiththisform.text4.value replhrgdsrwiththisform.text5.value endif thisform.grid1.setfocus() thisform.refresh() thisform.kendali(.f.) thisform.keluar.enabled=.f. thisform.periksa.enabled=.f. thisform.simpan.enabled=.f. thisform.batal.enabled=.t. thisform.hapus.enabled=.f. thisform.tambah.enabled=.t. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.t. thisform.perbaiki.visible=.f. thisform.ud.visible=.t. thisform.grid1.Enabled=.f. return

23. Procedure ClickpadaobjectBatal


n=RECNO() LOCATEFORkodebrg=SPACE(6) IFFOUND() DELETE SETDELETEDON ENDIF IFthisform.ud.Enabled=.t. thisform.grid1.Enabled=.t. GOTOn thisform.grid1.SetFocus() thisform.Refresh() else thisform.kosongkan() thisform.text1.enabled=.t. thisform.nontext1(.f.) thisform.kendali(.t.) thisform.periksa.enabled=.t. thisform.simpan.enabled=.f. thisform.perbaiki.visible=.t.

53

thisform.ud.visible=.f. thisform.perbaiki.enabled=.f. thisform.ud.enabled=.f. thisform.keluar.enabled=.t. thisform.tambah.enabled=.t. thisform.batal.enabled=.f. thisform.hapus.enabled=.f. thisform.grid1.Enabled=.t. thisform.text1.SetFocus() endif return

24. Procedure ClickpadaobjectKeluar(


ifjawab=6 thisform.release() setdeleoff pack endif return

jawab=messagebox("AndaYakin?",4+32,"MauKeluardariEntryData...")

25. Procedure AfterRowColChangepadaobjectGrid1


LPARAMETERSnColIndex thisform.text1.enabled=.f. thisform.nontext1(.f.) thisform.kendali(.t.) thisform.keluar.enabled=.t. thisform.periksa.enabled=.f. thisform.simpan.enabled=.f. thisform.batal.enabled=.f. thisform.hapus.enabled=.t. thisform.tambah.Enabled=.t. thisform.perbaiki.enabled=.t. thisform.ud.enabled=.f. thisform.perbaiki.visible=.t. thisform.ud.visible=.f. thisform.tampilkan() return

26. MengurutkanProses(TabOrder) Clikmenu View Pilihdanklik TabOrder Pilihdanklik AssignInteractively

54

Urutkanproseseksekusisepertipadagambar5.1.10.

Gambar5.1.10UrutanEksekusiFormOlahDataBarang 27.UjiForm,dataandakarangsendiri.

5.2TugasV.
1. BukafileprojectSIPNM 2. BuatlahfiledatabasedengannamaDATANILAI 3. BuatkanfileTabelMHS.DBFdenganstruktursbb.:

55

2. MebuatfilemenudengannamafileMenuNilai Contoh:

56

VI. Praktek Visual FoxPro VI Materi:


1. BekerjadenganIndeks 2. Melatihpemahamanpembuatanform 3. Mengenalbentuktanggaldanmerubahsetingtanggal

6.1 BahanPraktekVisualFoxProVI
a. BuatlahFileTable ANGGOTA denganstruktursbb:

b. Buatlahdesainformpadagambar6.1.1.(simpandengannama OlahAnggota)

Gambar6.1.1DesainFormOlahDataAnggota

57

6.2. TUGASVI
1. BuatkanFormsepertipadalatihandi atasuntukMengentryFileMHS.DBF ContohlayoutFormOlahDataMahasiswaadalahsbb.:

2. BuatkanProcedurenya,kemudianentrydatamahasiswa,minimal10record (datanyangarangsendiri)

58

VII. Praktek Visual FoxPro VII


Materi: 1. MembuatProcedure 2. MembuatForm/ProgramEntryData 3. BekerjadenganIndeks 4. Melakukanpencariandata 5. MengaplikasikanfungsiIF

7.1 BahanPraktekVisualFoxProVII
Bukakembalifile OlahAnggotayangsudahdibuatpadapraktekVI.

Gambar7.1.1DesainFormOlahData Anggota 1. BuatkanProcedure Load


closedata closeindex setdefatoo:\AFox\NamaAnda IFUSED("anggota")

59

USEINanggota ENDIF useanggota return

2. BuatkanProcedure Unload 3. BuatkanProcedure Kosongkan


thisform.text2.value="" thisform.text3.value="" thisform.text4.value="" thisform.text5.value="" thisform.text6.value="" thisform.text7.value=recno() return

4. 5. 6. 7.

BuatkanProcedure Tampilkan BuatkanProcedure NonText1 BuatkanProcedure Kendali BuatkanProcedure Activate

8. BuatkanProcedureTombolTambah 9. BuatkanProcedureTombolSimpan 10. BuatkanProcedureTombolKeluar 11. BuatkanProcedureTombolRecordPertama 12. BuatkanProcedureTombolRecordSebelumnya 13. BuatkanProcedureTombolRecord Berikutnya 14. BuatkanProcedureTombolRecordTerakhir 15. BuatkanProcedureTombolPeriksa 16. BuatkanProcedureTombolPerbaiki 17. BuatkanProcedureTombolHapus 18. BuatkanProcedure AfterRowColChangepada Grid1 19. Ujiprogramdanentrydataberikut:(datalainnyaandakarangsendiri)

60

7.2. TUGASVII
1. BuatkanFileTable MKdenganstruktursbb.:

2. BuatkanFormuntukmengentryfileTable MK diatas,dengandesainformsbb.:

61

3. BuatkanProsedurprosedurnya,laluentrydataberikut:

62

VIII. Praktek Visual FoxPro VIII Materi:


1. 2. 3. 4. RelasiFile BekerjadenganIndeks PencariandatadenganSEEKdanLocate MengaplikasikanfungsiIF

8.1 BahanPraktekVisualFoxProVIII
1. BuatkanstrukturfiletableberikutdengannamafileFAKTUR

2. BuatkanstrukturfiletableberikutdengannamafilePENJUALAN

63

3 BuatkanstrukturfiletableberikutdengannamafileNOFAKTUR

4. BuatkanstrukturfileFreeTableberikutdengannamafileTMPJUAL

64

5. BuatkandesainFormPENJUALAN sbb.:

6. Procedure Load
closedata closeindex setdatebritish setcenton setdefatoo:\AFox\Nama IFUSED("barang") USEINbarang ENDIF IFUSED("anggota") USEINanggota ENDIF IFUSED("faktur") USEINfaktur ENDIF IFUSED("Penjualan") USEINpenjualan endif IFUSED("NoFaktur")

65

USEINNoFaktur endif IFUSED("TmpJual") USEINTmpJual endif selecta usebarang setordertotagkodebrg setordertotagnamabrg selectb useanggota setordertotagnoang selectc usefaktur setordertotagnofaktur selectd usepenjualan setordertotagnofaktur selecte usetmpjual SELECTf USENoFaktur Return

7. Procedure UnloadObjectForm1 closedata closeindex retu 8. Procedure KosongkanObjectForm1


thisform.noang.value="" thisform.nama.value="" thisform.combo1.value="" thisform.combo2.value="" thisform.qty.value=0 thisform.text1.value=0 thisform.text2.value=0 thisform.text3.value=0 thisform.text4.value=0 thisform.text5.value=0 selectfaktur gobottom thisform.text6.value=recno()+1 return

66

9. Procedure TampilkanObjectForm1
selecttmpjual thisform.combo1.value=tmpjual.kodebrg thisform.combo2.value=tmpjual.namabrg thisform.text1.value=tmpjual.hrgjual thisform.qty.value=tmpjual.qty return

10. Procedure TampilsemuaObjectForm1


selectfaktur thisform.nofak.value=faktur.nofaktur thisform.tgljual.value=faktur.tgltran thisform.text3.value=faktur.diskon thisform.text2.value=faktur.totjual thisform.text4.value=faktur.bayar thisform.text5.value=faktur.sisa thisform.text6.value=recno() thisform.noang.value=faktur.noang selectanggota locatefornoang=thisform.noang.value thisform.nama.value=anggota.nama selecttmpjual deleall setdeleon appefrompenjualanfornofaktur=thisform.nofak.value gotop dowhile!eof() selectbarang locateforkodebrg=tmpjual.kodebrg vnamabrg=barang.namabrg vsatuan=barang.satuan selecttmpjual replnamabrgwithvnamabrg replsatuanwithvsatuan replhrgjualwithtmpjual.jumlah/tmpjual.qty skip enddo GObottom repltotjualwiththisform.text2.value repldiskonwiththisform.text3.value replbayarwiththisform.text4.value replsisawiththisform.text5.value gotop REPLACEtgltranWITHthisform.tgljual.Value REPLACEnoangWITHthisform.noang.Value thisform.combo1.value=tmpjual.kodebrg thisform.combo2.value=tmpjual.namabrg thisform.text1.value=tmpjual.hrgjual

67

thisform.qty.value=tmpjual.qty thisform.refresh() return

11. Procedure Kendali ObjectForm1


PARAMETERSx thisform.pertama.Enabled=x thisform.sebelumnya.Enabled=x thisform.berikutnya.Enabled=x thisform.terakhir.Enabled=x retu

12. Procedure ActivateObjectForm1


PUBLICLnofak selectbarang setordertotagnamabrg thisform.tgljual.Value=DATE() selenofaktur gobottom ifnofaktur.tanggal<>thisform.tgljual.value deleall pack appendblank lnofak=1 else lnofak=nofaktur.nofak+1 endif tgl=day(thisform.tgljual.value) bln=month(thisform.tgljual.value) th=year(thisform.tgljual.value) thisform.nofak.value=ltrim(str(tgl,2))+ltrim(str(bln,2))+ltrim(righ t(str(th),2))+ alltrim(str(lnofak,3)) seletmpjual DELETEALL SETDELETEDON thisform.noang.setfocus() thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.t. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.t. thisform.kendali(.t.) return

68

13. ProcedureInteractiveChangeObjectNOANG
thisform.nama.value=anggota.nama a=thisform.noang.Value b=".JPG" c=ALLTRIM(a)+b thisform.foto.Picture="o:\AFox\NamaAnda\"+c return

14. Procedure InteractiveChangeObjectNAMA


thisform.noang.value=anggota.noang a=thisform.noang.Value b=".JPG" c=ALLTRIM(a)+b thisform.foto.Picture="o:\AFox\NamaAnda\"+c return

15. ProcedureInteractiveChangeObjectCombo1
thisform.combo2.value=barang.namabrg thisform.text1.value=barang.hrgdsr*1.1 thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.f. thisform.hitung.enabled=.t. thisform.batal.enabled=.t. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.f. thisform.kendali(.f.) thisform.qty.setfocus() return

16. ProcedureInteractiveChangeObjectCombo2
thisform.combo1.value=barang.kodebrg thisform.text1.value=barang.hrgdsr*1.1 thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.f. thisform.hitung.enabled=.t. thisform.batal.enabled=.t. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.f. thisform.kendali(.f.) thisform.qty.setfocus() return

69

17. Procedure RightClickObject Qty


DOo:\AFox\NamaAnda\editBarang.MPR Return

18. Procedure ClickObjectTombolHitung


localselisih,llaba,jml,vsatuan selebarang locateforkodebrg=thisform.combo1.value ifbarang>qty<thisform.qty.value messagebox("StockBarangKurang",0+64,"PeriksaStockBarang") thisform.qty.value=barang>qty thisform.qty.setfocus() return endif vsatuan=barang.satuan jml=thisform.qty.value*thisform.text1.value thisform.text2.value=thisform.text2.value+jml selisih=thisform.text1.valuebarang.hrgdsr llaba=selisih*thisform.qty.value selecttmpjual ifthisform.text1.value>0.or.thisform.qty.value>0 appendblank replnofakturwiththisform.Nofak.value repltgltranwiththisform.tgljual.value replnoangwiththisform.noang.value replkodebrgwiththisform.combo1.value replnamabrgwiththisform.combo2.value replqtywiththisform.qty.value replsatuanwithvsatuan replhrgjualwiththisform.text1.value repljumlahwithjml endif thisform.refresh() selepenjualan ifthisform.qty.value>0.and.thisform.text1.value>0 appeblank replNofakturwiththisform.Nofak.value replkodebrgwiththisform.combo1.value replqtywiththisform.qty.value repljumlahwithjml repllabawithllaba endif selebarang locateforkodebrg=thisform.combo1.value ifthisform.qty.value>0.and.thisform.text1.value>0 replbarang.qtywithbarang.qtythisform.qty.value endif selecttmpjual

70

thisform.combo1.value="" thisform.text1.value=0 thisform.combo2.value="" thisform.qty.value=0 thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.f. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.f. thisform.kendali(.f.) return

19a. ProcedureClickObjectTombolBatal
localqty1,jawab,ljml jawab=messagebox("Andamaumenghapusrecordini ?",4+32+256,"Perhatian...") ifjawab=6 seletmpjual ljml=tmpjual.jumlah setdeleon dele selepenjualan locafornofaktur=thisform.nofak.value.and. kodebrg=thisform.combo1.value dele selebarang locateforkodebrg=thisform.combo1.value ifthisform.qty.value>0 qty1=barang.qty qty1=qty1+thisform.qty.value replbarang.qtywithqty1 endif thisform.text2.value=thisform.text2.valueljml thisform.text4.Value=thisform.text2.Valuethisform.text3.value thisform.text5.Value=thisform.text2.Valuethisform.text3.value thisform.text4.Value selectfaktur locatefornofaktur=thisform.nofak.value repltotjualwiththisform.text2.value repldiskonwiththisform.text3.value replbayarwiththisform.text4.value replsisawiththisform.text5.value selecttmpjual gotop replnoangwiththisform.noang.value repltgltranwiththisform.tgljual.value

71

GObottom repltotjualwiththisform.text2.value repldiskonwiththisform.text3.value replbayarwiththisform.text4.value replsisawiththisform.text5.value thisform.text2.value=tmpjual.totjual thisform.text3.value=tmpjual.diskon thisform.text4.value=tmpjual.bayar thisform.text5.value=tmpjual.sisa gotop thisform.refresh() thisform.qty.value=0 endif return

19b. ProcedureRightClickObjectTombolBatal
jawab=MESSAGEBOX("Maumembatalkantransaksi ?",4+32+512,"Perhatian...") IFjawab=6 SELECTfaktur DELETEFORNofaktur=ALLTRIM(thisform.Nofak.value) SELECTpenjualan DELETEFORNofaktur=ALLTRIM(thisform.Nofak.value) SELECTtmpjual DELETEALL SETDELETEDon thisform.Refresh() thisform.keluar.Enabled=.t. thisform.kendali(.t.) thisform.kosongkan() thisform.hitung.Enabled=.f. thisform.batal.Enabled=.f. endif retu

20. ProcedureClickObjectTombolKeluar
seletmpjual deleall setdeleoff pack selepenjualan PACK SELECTfaktur pack thisform.release() return

21a. ProcedureInteractiveChangeObjectText4

72

IFthisform.text4.Value>(thisform.text2.Valuethisform.text3.Value) MESSAGEBOX("Jumlahbayaryangandamasukansalah...",0,"Perhatian...")

thisform.text4.SetFocus() RETURN ENDIF thisform.cetak.enabled=.f. thisform.simpan.enabled=.t. thisform.tambah.enabled=.f. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.f. thisform.kendali(.f.) thisform.text5.Value=thisform.text2.valuethisform.text3.value thisform.text4.value return

21b. ProcedureDoubleClickObjectText4
thisform.cetak.enabled=.f. thisform.simpan.enabled=.t. thisform.tambah.enabled=.f. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.f. thisform.kendali(.f.) thisform.text4.value=thisform.text2.valuethisform.text3.value return

21c. ProcedureRightClickObjectText4
DOo:\AFox\Nama\bukakembalian.mpr Return

22. ProcedureClickObjectTombolSimpan
ifthisform.text2.value>0 selectfaktur locatefornofaktur=thisform.nofak.value if!found() appendblank endif replnofakturwiththisform.nofak.value repltotjualwiththisform.text2.value REPLdiskonWITHthisform.text3.Value replbayarwiththisform.text4.value replsisawiththisform.text5.value

73

repltgltranwiththisform.tgljual.value replnoangwiththisform.noang.value selecttmpjual gobottom replnofakturwiththisform.nofak.value repltotjualwiththisform.text2.value repltgltranwiththisform.tgljual.value replnoangwiththisform.noang.value REPLdiskonWITHthisform.text3.Value replbayarwiththisform.text4.value replsisawiththisform.text5.value ENDIF SELECTNofaktur GObottom REPLACEnofakWITHlnofak REPLACEtanggalWITHthisform.tgljual.value thisform.cetak.enabled=.t. thisform.simpan.enabled=.f. thisform.tambah.enabled=.t. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.t. thisform.keluar.enabled=.t. thisform.kendali(.t.) return

23. ProcedureClickObjectTombolCetak
SELECTanggota SETORDERTOtagNoang selecttmpjual SETRELATIONTOnoangINTOanggota locatefornofaktur=thisform.Nofak.value REPORTformo:\AFox\Nama\fakturjualPREVIEW thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.t. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.t. thisform.kendali(.t.) return

24. ProcedureClickObjectTombolTambah
selectbarang setordertotagnamabrg

74

thisform.tgljual.Value=DATE() selenofaktur gobottom ifnofaktur.tanggal<>thisform.tgljual.value deleall pack appendblank lnofak=1 else lnofak=nofaktur.nofak+1 endif tgl=day(thisform.tgljual.value) bln=month(thisform.tgljual.value) th=year(thisform.tgljual.value) thisform.nofak.value=ltrim(str(tgl,2))+ltrim(str(bln,2))+ltrim(righ t(str(th),2))+ alltrim(str(lnofak,3)) seletmpjual deleall setdeleon thisform.refresh() thisform.kosongkan() thisform.noang.setfocus() thisform.cetak.enabled=.f. thisform.simpan.enabled=.f. thisform.tambah.enabled=.f. thisform.hitung.enabled=.f. thisform.batal.enabled=.f. thisform.kembalian.enabled=.f. thisform.keluar.enabled=.t. thisform.kendali(.t.) thisform.noang.SetFocus() return

25 ProcedureClickObjectTombolHitungKembalian
doformo:\AFox\Nama\hitungkembalian.scx return

26. ProcedureClickObjectTombolPertama
selectfaktur SETORDERTO gotop ifeof() messagebox("Tidakadarecord",0,"Perhatian...!") thisform.release() return endif

75

thisform.tampilsemua() thisform.refresh() thisform.cetak.enabled=.t. thisform.tambah.enabled=.t. SETORDERTOtagnofaktur Return

27. ProcedureClickObjectTombolSebelumnya
selectfaktur SETORDERTO skip1 ifbof() gotop endif thisform.tampilsemua() thisform.refresh() thisform.cetak.enabled=.t. thisform.tambah.enabled=.t. SETORDERTOtagnofaktur Return

28. ProcedureClickObjectTombolBerikutnya
selectfaktur SETORDERTO skip1 ifeof() gobottom endif thisform.tampilsemua() thisform.refresh() thisform.cetak.enabled=.t. thisform.tambah.enabled=.t. SETORDERTOtagnofaktur Return

29. ProcedureClickObjectTombolTerakhir
selectfaktur SETORDERTO gobottom ifeof() messagebox("Tidakadarecord",0,"Perhatian...!") thisform.release() return endif

76

thisform.tampilsemua() thisform.refresh() thisform.cetak.enabled=.t. thisform.tambah.enabled=.t. SETORDERTOtagnofaktur return

30. SimpanFormdengannamaGAJIDSN,kemudianujidengandatakarangsendiri

8.2. TUGASVIII
1. Buatkanstrukturtablenilaisbb:

2. Buatkanlagistrukturtabledetnilaisbb:

77

3. Buatkantabletmpnilaidantmpnilai1denganstruktursbb:

78

4. ButlahFormOLAHNILAI,dengandesainformsbb.:

79

IX. Praktek Visual FoxPro IX Materi:


1. MembuatMenuShortCut 2. MembuatFormHitungKembalian

9.1 BahanPraktekVisualFoxProIX
1. MembuatMenuShortCut EditBarang PilihOptionOther Pilih Menu KliktombolNew PilihdankliktombolShotcut Buatkanmenushotcutberikutini:

Procedure EditDataBarang
DOFORMo:\AFox\Nama\entryBrg1.scx retu

SimpanMenudengannamafile EditBarang TutupMenudanjalankandenganmengclickRUN 2. MembuatFormHitungKembalian

80

ProcedureLOADpadaobjectFORM1
selecttmpjual gobottom return

ProcedureACTIVEpadaobjectFORM1
thisform.text1.value=tmpjual.bayar thisform.text2.value=0 thisform.text3.value=0 thisform.text2.setfocus() return

ProcedureCLICKpadaobjectKELUAR
thisform.release() return

3. JalankanmenudanFormHitungKembaliandiatasdariFormPenjualan

81

X.

Praktek Visual FoxPro X

Materi:
1. MembuatFileReport 2. MengujiReport

10.1 BahanPraktekVisualFoxProX
1. MendesainReport FaturJual PilihOptionDocument PilihReport KliktombolNew PilihdankliktombolNewReport Desainreportsepertiberikutini:

82

2. Langkahlangkahpembuatantanyakanpadainstruktur(dosen) 3. Formulayangdigunakan FormulaNo.Anggotaexpression=":"+tmpjual.noang FormulaNamaAnggotaExpression=":"+ANGGOTA.NAMA FormulaNomorFakturexpression=tmpjual.nofaktur FormulaTanggalexpression=tmpjual.tgltran FormulaKodeBarangexpression=tmpjual.kodebrg FormulaNamaBarangexpression=tmpjual.namabrg FormulaQtyexpression=tmpjual.QTY Formatexpression=999 Aligment FormulaSatuanexpression=tmpjual.satuan FormulaHargaJualexpression=tmpjual.hrgjual Formatexpression=9,999,999 Aligment FormulaJumlahexpression=tmpjual.jumlah Formatexpression=99,999,999 Aligment FormulaTotalTransaksiexpression:tmpjual.totjual Formatexpression=99,999,999 Aligment FormulaDiskonexpression:tmpjual.diskon Formatexpression=99,999,999 Aligment FormulaTotalBersihexpression:tmpjual.totjualtmpjual.diskon Formatexpression=99,999,999 Aligment FormulaJumlahBayarexpression:tmpjual.bayar Formatexpression=99,999,999 Aligment FormulaSisaexpression:tmpjual.sisa Formatexpression=99,999,999 Aligment 4. SimpanReportdengannamafile FakturJual 5. TutupdesainreportdanjalankanForm PENJUALAN 6. KliktombolCetak

83

10.2.TUGASX
1. BuatkanreportuntukfileMahasiswa,dengancontohdesainsbb:

2. Formula formula: FormulaNIM=mhs.nim FormulaNamaMahasiswa=mhs.nama FormulaTempat/tgl.Lahir=trim(mhs.tlahir)+,+dtoc(mhs.tgllahir) FormulaAlamat=trim(mhs.alamat)++mhs.kota

84

XI. Praktek Visual FoxPro XI Materi:


1. MembuatFileReport 2. MengujiReport

11.1 BahanPraktekVisualFoxProXI
1. MendesainReportDaftarStockBarang PilihOptionDocument PilihReport KliktombolNew PilihdankliktombolNewReport Desainreportsepertiberikutini:

85

2. Langkahlangkahpembuatantanyakanpadainstruktur(dosen) 3. Formulayangdigunakan FormulaPerTanggalexpression=lapjual.tgltran FormulaNomorFakturexpression=lapjual.nofaktur FormulaNomorAnggotaexpression=lapjual.noang FormulaNamaAnggotaexpression=anggota.nama FormulaKodeBarangexpression=lapjual.kodebrg FormulaNamaBarangexpression=barang.namabrg FormulaQtyexpression=lapjual.qty Formatexpression=999 Aligment FormulaSatuanexpression=barang.satuan FormulaHargaJualexpression=lapjual.jumlah/lapjual.qty Formatexpression=999,999 Aligment FormulaJumlahexpression=lapjual.jumlah Formatexpression=99,999,999 Aligment FormulaSubTotal Jumlahexpression=lapjual.jumlah Formatexpression=99,999,999 Aligment

FormulaSubTotal Diskonexpression=lapjual.diskon Formatexpression=999,999 Aligment

86

FormulaSubTotal Bayar expression=lapjual.bayar Formatexpression=99,999,999 Aligment

FormulaSubTotal Sisa expression=lapjual.sisa Formatexpression=99,999,999 Aligment

FormulaGrandTotal Jumlahexpression=lapjual.jumlah Formatexpression=99,999,999 Aligment

FormulaGrandTotal Diskonexpression=lapjual.diskon Formatexpression=999,999 Aligment

87

FormulaGrandTotal Bayar expression=lapjual.bayar Formatexpression=99,999,999 Aligment

FormulaGrandTotal Sisa expression=lapjual.sisa Formatexpression=99,999,999 Aligment

4. SimpanReportdengannamafile LAPHARIAN 5. UjiReport

88

11.2.TUGASXI
BuatkanreportKKSdariFileNilaidengandesainsbb.:

89

XII. Praktek Visual FoxPro XII Materi:


1. MembuatformuntukmemfilterReport 2. MengujiForm

12.1 BahanPraktekVisualFoxProXII
1. DesainFormsbb.:

2. Buatkanprosedursbb: ProcedureLoad
closedata closeindex setdatebritish setcenton setdefatoo:\AFox\Nama IFUSED("barang") USEINbarang ENDIF IFUSED("Anggota") USEINAnggota ENDIF IFUSED("faktur") USEINfaktur ENDIF

90

IFUSED("Penjualan") USEINpenjualan ENDIF IFUSED("TMPJUAL") USEINTMPJUAL ENDIF IFUSED("LAPJUAL") USEINLAPJUAL ENDIF selecta usebarang setordertotagkodebrg SELECTb USEanggota SETORDERTOtagnoang selectc usefaktur setordertotagtgltran selectd usepenjualan setordertotagnofaktur selecte uselapjual selectf usetmpjual return

b. ProsedurActivate
thisform.tgl.day=DAY(date()) thisform.tgl.month=month(date()) thisform.tgl.year=year(date()) return

c. ProcedureUnLoad
closedata closeindex return

d. ProcedureCetak
a=thisform.tgl.day b=thisform.tgl.month c=thisform.tgl.year vtgl=ALLTRIM(STR(a,2))+"/"+ALLTRIM(STR(b,2))+"/"+STR(c,4) selectlapjual deleall

91

setdeleoff PACK selecttmpjual DELETEALL PACK appefromfakturfortgltran=CTOD(vtgl) gotop dowhile!eof() selectlapjual APPENDFROMpenjualanFORnofaktur=tmpjual.nofaktur SELECTtmpjual SKIP enddo SELECTlapjual GOtop DOWHILE!EOF() SELECTtmpjual LOCATEFORnofaktur=lapjual.nofaktur IFFOUND() vtgltran=tmpjual.tgltran vnoang=tmpjual.noang ELSE vtgltran=CTOD("//") vnoang="" ENDIF SELECTlapjual REPLACEtgltranWITHvtgltran REPLACEnoangWITHvnoang SKIP ENDDO SELECTtmpjual GOtop DOWHILE!EOF() SELECTlapjual LOCATEFORnofaktur=tmpjual.nofaktur IFFOUND() vtotjual=tmpjual.totjual vbayar=tmpjual.bayar vdiskon=tmpjual.diskon vsisa=tmpjual.sisa ELSE vtotjual=0 vdiskon=0 vbayar=0 vsisa=0 ENDIF REPLACEtotjualWITHvtotjual REPLACEdiskonWITHvdiskon REPLACEbayarWITHvbayar REPLACEsisaWITHvsisa selecttmpjual

92

SKIP ENDDO SELECTlapjual SETRELATIONTOkodebrgINTObarang,noangINTOanggota repoformo:\Fox\Nama\lapharianpreview return

e.

ProcedureKeluar
thisform.release() return

3. SimpanFormdengannamafile LAPHARIAN 5. UjiForm

93

XIII. Praktek Visual FoxPro XIII Materi:


1. MembuatformGrafik 2. MengujiGrafik

13.1 BahanPraktekVisualFoxProXIII
1. DesainFormsbb.:

2. Buatkanprosedursbb: ProcedureLoad
setdefatoo:\AFox\Nama selectlapjual return

b. ProsedurActivate
thisform.text1.Value=YEAR(lapjual.tgltran) SELECTlapjual GOtop

94

doWHILE!eof() thisform.Grafik.row=MONTH(lapjual.tgltran) thisform.grafik.rowlabel=MONTH(lapjual.tgltran) thisform.Grafik.column=1 thisform.Grafik.data=lapjual.totjual skip ENDDO thisform.keluar.SetFocus() retu

c.

ProcedureKeluar
thisform.release() return

3. SimpanFormdengannamafile GRAFIK 4. BuatkanFormuntukmenajalankanGrafiktsbdiatas.

5. BuatkanProsedurberikut. a. ProcedureLoad
closedata closeindex setdatebritish setcenton setdefatoo:\AFox\Nama IFUSED("faktur") USEINfaktur ENDIF IFUSED("LAPJUAL")

95

USEINLAPJUAL ENDIF selecta usefaktur setordertotagtgltran selectb uselapjual return

b.

ProcedureActivate
thisform.tgl.day=DAY(date()) thisform.tgl.month=month(date()) thisform.tgl.year=year(date()) return

c.

ProcedureActivate
closedata closeindex return

d.

ProcedureTombolGrafik
c=thisform.tgl.year selectlapjual deleall setdeleoff PACK appefromfakturforYEAR(tgltran)=c SETORDERTOtagtgltran doformo:\AFox\Nama\grafik.scx return

e.

ProcedureKeluar
thisform.release() return

6. SimpanFormdengannamafile LAPTAHUNAN 7. UjiForm

96

XIV.Praktek Visual FoxPro XIV Materi:


1. ReportTahunan 2. FormFilterpertahun

14.1 BahanPraktekVisualFoxProXIV
1. DesainReportsbb.:

2. Buatkanformulaexpressionsbb: FormulaTahunexpression=year(lapjual.tgltran) FormulaBulanexpression=month(lapjual.tgltran)

97

FormulaTotalPenjualanexpression=lapjual.totjual Formatexpression=999,999,999 Aligment

FormulaTotalDiskonexpression=lapjual.diskon Formatexpression=999,999,999 Aligment

FormulaTotalBayarexpression=lapjual.bayar
Formatexpression=999,999,999 Aligment

FormulaTotalPiutangexpression=lapjual.sisa Formatexpression=999,999,999 Aligment

98

FormulaTotalPenjualanexpression=lapjual.totjual Formatexpression=999,999,999 Aligment

FormulaTotalDiskonexpression=lapjual.diskon Formatexpression=999,999,999 Aligment

FormulaTotalBayarexpression=lapjual.bayar
Formatexpression=999,999,999 Aligment

99

FormulaTotalPiutangexpression=lapjual.sisa Formatexpression=999,999,999 Aligment

3. SimpanFormdengannamafile LAPTAHUNAN 4. BukaFormLAPTAHUNAN,yangdibuatpadapraktek13sbb:

5. BuatkanProsedurCetakLaporansbb.:
c=thisform.tgl.year selectlapjual

100

deleall setdeleoff PACK appefromfakturforYEAR(tgltran)=c SETORDERTOtagtgltran repoformo:\AFox\Nama\laptahunanpreview return

6. SimpandanUjiForm

101

LANDASANTEORI
1. PengertianDatabase Database adalah suatu pengorganisasian data dengan tujuan agar data dapat diakses dengan mudah. Sebagai contoh, database dapat diterapkan untuk mengelola kepegawaianatauakunting.Padakenyataannya,umumnyasebuahdatabaseterdiriatas sejumlahtabel. Sebagaigambaran,databasetentangpenggajianbisamengandungtabelkaryawan,tabel golongan,tabelabsensi,tabeljabatandantabeltransasksipenggajian.Tabelkaryawan dapat dilukiskan sebagai kumpulan kartu, dengan masingmasing kartu mewakili data seorangkaryawan.

2. TypeDataVisualFoxPro DalamVisualFoxPro6.0initerdapattigabelasjenisdata,diantaranya: a. Character Type ini merupakan type bawaan. Digunakan untuk menyatakan informasi yang tidakuntukdihitungdanjugabukanberupatanggal.Misalnyauntuknamapegawai ataunamabarang.Bisamengandungsimbol*atau+.Typeinidapatmenampung1 sampai254character. b. Curency Untukmenyatakankarakterkarakteryangdipakaiuntuksymbolmatauang.Angka yangdapatditanganidatainiadalah$922triliun.Defaultnyamempunyai4tempat desimaldanmemerlukantempatsebesar8bytedidalamtable. c. Numeric Untukmenyatakanbilangan(yangnantinyadapatdiprosesuntukperhitungan).Type inibisamengandungbagianpecahan.Panjangmaksimal20digitdenganmaksimum 19 tempat desimal, termasuk tanda plus atau minus dan juga tempat untuk bagian pecahan. d. Float Merupakan type untuk data yang dinyatakan dengan notasi ilmiah (misalnya 1.6E+02).SifatsifatyanglainsamadengantypeNumerik.

102

e. Date Menyatakan tanggal. Panjangnya selalu 8 karakter. Format tanggal dapat diatur sesuaidenganformatdiIndonesia(tanggalbulantahun)melaluiSETDATE. Bentuktanggalyangbisadiset,diantaranya: American Format:mm/dd/yy British/French Format:dd/mm/yy Italian Format:ddmmyy German Format:dd.mm.yy Ansi Format:yymmdd f. DateTime Menyatakan tanggal dan waktu. Panjangnya selalu 8 karakter. Type DateTime memakai format HHMMSS untuk menyimpan data jam. Jangkauan tanggal 01/01/100 sampai 31/12/9999 dan jangkauan jam adalah 12:00:00 AM sampai 11:59:59PM. g. Double Typeinimenyimpandatanumeric18digitdalamformatyangtelahdikompresdan memerlukan 8 byte. Type ini mempunyai kelebihan dalam hal banyaknya angka desimal yang ditangani dengan range 4.94065648541247E324 sampai 1.79769313486232E. h. Intiger Untukmenyatakanbilangan(yangnantinyadapatdiprosesuntukperhitungan).Type initidamengandungpecahan.Panjangmaksimal4. i. Logical Menyatakan logika benar atau salah. Isinya Y jika benar (True) atau N jika salah (False). Misalnya dapat dipakai untuk menyatakan jenis kelamin (Y = pria, N = wanita).Pasasaatmemasukandatahurufhurufberikut(kecilataupunkapital)bisa digunakanY,T,FatauN.TdianggapYdanFdianggapN. j. Memo Berguna untuk menyatakan suatu keterangan yang panjangnya lebih dari 254 character. Misalnya, isi surat. Ukuran memo dapat bervariasi, disesuaikan dengan ukuran sebuah blok. Defaulnya setiap blok foxpro berukuran 64 byte. Misalnya untukmenampungdata72bytediperlukan2blok. k. General

103

Dipakaiuntukmenyimpangrafik.FoxpromenyimpanfieldGeneraldalamfile.FPT. yangdipakaijugaolehfieldMemo. l. Character(Binary) m. Memo(binary)

3. TahapPembuatanProgram PembuatanprogramdenganVisualFoxProselalumelaluiduatahap,yakni: a. Tahappemrogramanvisual,dan b. Tahappenulisankode Pada tahap pemrograman visual, mulamula merancang form yang dipakai program. Pada tahap ini dibuatkan form beserta kontrolkontrol yang diperlukan. Perancangan formbesertakontrolkontrolyangdilibatkanditanganidenganmenggunakanperangkat perangkatyangtersediadalampaketViasualFoxPro. Padatahappenulisankode,dituliskankodekode yangdilekatkanpadakontrolkontrol yang dipakai. Sebagai gambaran, Jika operator menekan suatu tombol yang kita buatkan, maka kode yang kita buatkan harus menampilkan suatu tindakan. Penulisan kode ini dilakukan dengan menggunakan editor teks yang tersedia pada paket visual FoxPro.

4. PerangkatuntukPembuatanProgram BilabermaksudmembuatsuatuprogramdenganVisualFoxPro,akanselalumelibatkan tigajendelaberikut: a. JendelaForm b. JendelaFormControl c. JendelaProperties Formmerupakanjendelayangakanmunculsebagailatarbelakangdaritampilansuatu aplikasi. Sebuahaplikasi dapatmemiliki banyak form,namun paling tidakmelibatkan sebuah form. Itulah sebabnya, tidak berlebihan jika form dianggap sebagai tulang punggung aplikasi Visual FoxPro. Formlah yang menjadi antarmuka dengan pemakai aplikasi.

104

Pada saat perancangan, form tampak tersusun atas sejumlah titik. Hal ini bermanfaat sebagaipatokandalammengaturtataletakkontrol(misalnyatomboltekanataubahkan teks). Sudah tentu, pada saat aplikasi dijalankan, titiktitik tersebut tidak kelihatan. Dengankatalain,tandatitiktitikhanyamunculsaatperancangan. Jendela Form Control (lihat gambar 1a) merupakan jendela yang membuat berbagai kontrol yang tersedia pada Visual FoxPro. Kita perlu memilih kontrol yang terdapat padajendelainisebelummenempatkannyapadaform.

Gambar1a.FormControl Jendela Properties merupakan tempat untuk mengatur halhal yang berkaitan dengan suatukontrolyang terdapatpadaform.Jendelainimengandunglimabuahtab,yaitu: a.All b.Data c.Methods d.LayOut e.Other Kelimatabiniterlihatpadabagianatasjendelaproperties. Tab properties berisi properti dari kontrol, misalnya ukuran font, jenis font, nama kontrol,dansebagainya.Sepertipadagambar2a

Gambar2a.JendelaProperties

105

5. GambaranprogramdengankontrolTombolTekandanFieldEntri Jika kita perhatikan programprogram pada windows, pengerjaan suatu tindakan bisa dilakukan dengan menggunakan suatu tombol perintah, seperti Ok atau Cansel. Bagaimana cara membuat tomboltombol tersebut kita akan coba praktekan pembuatannyapadasubbabini. 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 kotakkosongyangtidakberisiapaapa)

6. MengenalPointerRecord Setiap tabel memiliki sebuahpointerrecord sewaktu tabel dibuka. Fungsi daripointer iniyaitumenunjukrecordsekarang.Padalingkuppemrograman,pointerinimempunyai peranan yang sangat penting. Beberapa perintah Visual FoxPro (misalnya DISPLAY, jika lingkup ALL tidak diberikan) bekerja berdasarkan record yang sedang ditunjuk olehpointerrecord. Perhatikan hasil perintah seperti BROWSE, setiap record mempunyai nomor record. Nomor record ini dimulai dari 1. Nomoor inilah yang dipegang pada pointer record. Misalnya,jikapointerrecordberisi2,artinyarecord sekarangadalahrecordbernomor2. Perlu diketahui, pada saat suatu tabel dibuka, pointer record dengan sendirinya menunjukkerecordbernomor1(jikatabelpalingtidakmempunyaisebuahrecord).

7. Memperolehnomorrecordsekarang Untuk mengetahui nomor record sekarang (atau dengan kata lain melihat isi pointer record),bisadigunakanperintahRECNO(). Perintahinidiketikanpadajendelacommanddandiakhiridenganenter.Misalnyabuka dulu file table (USE MK.DBF dikuti denganENTER), lalu ketik perintah ?RECNO() dikutidenganENTER.Perintahiniakan menampilkanposisirecordsekarang.

106

8. Memindahkanpointerrecord Pointerrecorddapatdiaturagarmenunjukkesuaturecordtertentudantentusajarecord tersebutakanmenjadirecordsekarang.PerintahyangdigunakandapatberupaGOatau GOTO.Keduaperintahinimempunyaimaknayangsama. BentukGOTOadalah: GOTO[RECORD]<nomorrecord> Kata RECORD yang ditulis dalam tanda [] bisa diberikan ataupun tidak, tanpa mengubahmakna.Perludiketahui,jikakataRECORDdisertakan,tanda[]tidakperlu ditulis.

9. Meletakankerecordpertamadanrecordterakhir Untukmenggerakanpointerkerecordpertama,bisadigunakanperintahGOTO1atau GOTOTOP.PerintahiniidentikdenganGO1atauGOTOP. Sedangkan untuk memindahkan pointer ke record terakhir, bisa digunakan perintah GOTOBOTTOMatauGOBOTTOM.

10. Memindahkanposisirecordkerecordberikutnya Salah satu tindakan yang nantinya banyak dijumpai dalam pemrograman adalah memindahkan pointer ke record berikutnya. Langkah ini dapat ditempuh dengan menggunakanperintahSKIP.Formatperintahiniadalah: SKIP[<jumlahrecoryangdilompati>] Apabilajumlahrecordyangdilompatitidakdisertakan,pergeseranadalahsebesarsatu record.JadiSKIPidentikdenganSKIP1.

107

11. Meletakanpointerrecordkerecordyangdicari Visual FoxPro juga menyediakan perintah yang berguna untuk mencari suatu record tertentu. Misalnya, perintah untuk menempatkan pointer record yang bagian Mata KuliahnyaberisiCOBOL. LOCATEFORNAMA_MK=COBOL Dalam hal ini LOCATE adalah perintah un tuk mencari suatu record dan FOR NAMA_MK=COBOLadalahkriteriapencarian. Untuk mencari record berikutnya yang cocok, kita cukup memberikan perintah CONTINUE.ApabilahasildariperintahLOCATEatauCONTINUEberupa: EndofLocatescope. Halinimenandakanbahwatidakadalagidatayangcocok. Untuk mengtahui yang dicari dengan LOCATE ketemu atau tidak, kita bisa menggunakanfungsiFOUND().Fungsiinimemberikannilaibalikberupa: .T.jikadatayangdicariketemu .F.jika datayangdicaritidakketemu

12. AwalFiledanAkhirFile Secaralogika,tabelyangberisisejumlahrecordakandiawalidenganrecordmayayang disebutBOF(BeginingOfFileAwalFile) dandiakhiridenganrecordmayabernama EOF(EndOfFile AkhirFile).


BOF Record1 Record2 Record3 Record4 RecordN EOF

F
Recordmaya diawaltabel

Recordmaya diakhirtabel

108

13. MengenalPernyataanIF PernyataanIFmerupakanperintahyangseringkalidilibatkandalampenulisankode.IF merupakanperintahyangbergunadalammengambilasuatukeputusan. Dalam bentuk pseudocode, barang kali kita akan melakukan suatu tindakan dengan kriteriasebagaiberikut: Jika pointer tidak menunjuk ke awal file, pindahkanlah pointerrecord ke record sebelumnya. Pada contoh ini, tindakan memindahkan pointer record ke record sebelumnya hanya dilakukanjikapointerrecordtidakberadapadaawalfile(BOF). Pseudokode di atas dapat dituangkan ke dalam pernyataan Visual FoxPro sebagai berikut: IF.NOT.BOF() SKIP1 ENDIF Pada pernyataan di atas, .NOT. merupakan salah satu operator logika pada Visual FoxPro. Operator .NOT. berarti tidak. Ekspresi .NOT. BOF() berarti jika BOF() tidakbernilai.T.ataudengankatalainjikapointerrecordtidaksedangmenunjukBOF (awalfile). Secaraumum,bentukpernyataanIFadalahsebagaiberikut: IF<kondisi> <pernyataanpernyataan> ENDIF Dalam hal ini, <kondisi> berupa ekspresi logika, yang bernilai .T. (benar) atau .F. (salah). Apabila <kondisi> bernilai .T., maka <pernyataanpernyataan> akan dijalankan. Sebaiknya, jika <kondisi> bernilai .F., <pernyataanpernyataan> tidak akandijalankan. Selainbentukdiatas,jugaterdapatbentuksepertiberikut: IF<kondisi> <pernyataanpernyataan_1>

109

ELSE <pernyataanpernyataan_2> ENDIF Padabentukini, <pernyataanpernyataan_1>dijalankanjika <kondisi> bernilai.T. <pernyataanpernyataan_2>dijalankanjika <kondisi> bernilai.F.

14. OperatorRelasidanOpertaorLogika Operatorrelasidanopertaorlogikamerupakankomponenpentingyangdipakaisebagai kondisi pada pernyataanpernyataan pengambilan keputusan (IF) dan pada beberapa pernyataan yang lain. Operatoroperator ini, sebagaimana operator yang lain, berupa simbolataukatakunciyangmelaksanakansuatuoperasiterhadapdataatauekspresi. Ekspresiyangdilibatkanolehoperatoroperatorinidapatberupa: NamaField VariabelMemori Fungsi,ataupun Konstantan

a. OperasiRelasi Operasirelasiadalahoperatoryangdigunakanuntukmembandingkanduabuahekspresi bertipe data sama dan menghasilkan nilai .T. (benar) atau .F. (salah). Tipe data yang dapatdikenakanpadaoperatorinimeliputi: Karakter Numerik Ekspresitanggal

VisualFoxPromenyediakansejumlahoperatorrelasisepertipadatebel3.1.

110

Tabel3.1Operatorrelasi Operator < > = == <>atau# <=atau=< >=atau=> $ Keterangan Kurangdari Lebihbesardari Samadengan Tepatsamadengan(bermanfaatuntukpembandinganstringkarakter) Tidaksamadengan Kurangdariatausamadengan Lebihbesardariatausamadengan Pembandinganstring

Beberapacontohungkapanyangmelibatkanoperatorrelasidapatdilihatpadatabel3.2.

Tebl3.2.Contohpembandingandenganmemakaioperatorrelasi Hasil Keterangan MenuruttabelASCII,AterletaksebelumB,jadi A>B .F. nilaiAlebihkecildaripadaB A<a .T. MenuruttabelASCII,Aterletaksebeluma 2>1 .T. Nilai2memanglebihbesardaripada1 Yogya=YOGYA .F. Hurupkecilberbedadenganhurupkapital ABCD=ABC .T. JikaSETEXACTdalamkeadaanOFF ABCD=ABC .F. JikaSETEXACTdalamkeadaanON ABCD==ABC .F. Selalu menghasilkan .F., tidak tergantung pada keadaanSETEXACT AB$ABCD .T. StringABadapadaABCD BC$ABCD .T. StringBCadapadaABCD ABCD$AB .F. StringABCDtidakadapadastringAB {21/12/2000} > .T. Tanggal 21 Desember 2000 memang lebih {12/11/2000} belakangandaripada12Nopember2000 Ekspresi

b. OperatorLogika Operator logika digunakan untuk membandingkan dua buah ekspresi logika dan menghasilkan nilai .T. (benar) atau .F. (salah). Operator logika yang disediakan oleh VisualFoxProdapatdilihatpadatabel3.3.

111

Tabel3.3.OperatorLogika Operator .NOT. Keterangan Operator Tidak Operator Dan Operator Atau Format .NOT.<ekspresi> Hasil.T.jika <ekspresi> bernilai.F. Hasil.F.jika<ekspresi>bernilai.T. <ekspresi_1> .AND. <ekspresi_2> Hasil berupa .T. hanya jika kedua <ekspresi> bernilai.T. <ekspresi_1> .OR.<ekspresi_2> Hasilberupa.T.jikaada <ekspresi> yang bernilai.T.

.AND. .OR.

15. FungsiIIF FungsibernamaIIF()jugadapatbertindaksepertiperintahIF.Formatfungsiiniadalah: IIF(<kondisi>,<ekspresi_1>,<ekspresi_2>) Fungsi IIF memberikan nilai <ekspresi_1> jika <kondisi> bernilai .T., atau nilai <ekspresi_2>jika <kondisi> bernilai.F. Sebagaicontoh: IFTotalPembelian>=100000 Diskon=1/10*TotalPembelian ELSE Diskon=0 ENDIF Dapatdisederhanakanmenjadi: Diskon=IIF(TotalPembelian>=100000,1/10*TotalPembelian,0)

16. PernyataanDOCASE Pernyataan DO CASE merupakan alternatif dari IF.. ELSEIF. Format pernyataan ini adalah:

112

DOCASE 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. Bilai <kondisi_2> bernilai.T.,maka <pernyataan_pernyataan_2> saja yang akan dijalankan. <pernyataan_pernyataan_n>hanyaakandijalankansekiranyatidakada<kondisi> yangbernilai.T. BagianOTHERWISEbisatidakdisertakan.Jikabagianinitidakdisertakan,dantak satupun<kondisi>yangbernilai.T.,makatakadapernyataanyangdieksekusi.

17. MengenalKotakDialog Kotak dialog digunakan untuk memberitahukan sesuatu informasi kepada pemakai, misalnyauntukmenyampaikansuatupesankesalahan.Selainuntukkleperluanseperti ini,kotakdialogjugabisadipakaiuntukmelakukansuatukonfirmasiterhadappemakai misalnya pemakai perlu menjawab Yes atau No. Sebuah kotak dialog paling tidak mempunyaisebuahtomboltekan. a. KaidahMESSAGEBOX KaidahperintahMessageBoxadalahsebagaiberikut: MessageBox(<pesan>,[<tipekotakdialog>,[<judul>]] Argumenkeduadanketigabisatidakdisertakan. Contoh: MessageBox("TerimaKasih",1+32, "Selesai")

113

Hasilnyaadalahsebagaiberikut(Gambar3.1)

Gambar3.1KotakDialog Padacontohini,stringTerimaKasihmerupakanpesanyangditampilkanpadakotak dialog,stringkarakterSelesaisebagaijudulpadakotakdialog,dan1+32menyatakan jeniskotakdialog(termasukikonyangditampilkan).Dalamhaliniangka1menyatakan bahwakotakdialogmenampilkanduabuahtomboltekan,yaitutombol dantombol ,sedangkan32menyatakanjenisikonyangditampilkan

b. NilaiuntukmenentukanJenisKotakDialog Nilai dasar yang digunakan untuk menentukan jenis kotak dialog ada enam macam, sebagaimanatercantumpadatabel3.4.

114

Tabel3.4.Nilaiyangmenentukantomboltekanyangditampilkanpadakotakdialog. TipeKotak Tomboltombol yangtersedia Bentuk

OK

OK,Cancel

Abort,Retry,Ignore

Yes,No,Cancel

Yes,No

Retry,Cancel

115

c. MESSAGEBOXTanpaArgumenKetiga Bila memanggil MessageBox tanpa menyertakan argumen ketiga, maka yang ditampilkanadalahkotakdialogyanghanyaberisitomboltekanOK.Contohnya: MessageBox(Pesan,Judul) Akanmemberikanhasilsbb.(Gambar3.2) Tabel3.2.KotakDialogtanpaargumen ketiga

d. MESSAGEBOXTanpaArgumenKeduadanKetiga Apabila rgument kedua danketiga MessageBox tidakdisertakan, judulkotak dialog diperlakukan seperti jika judul tidak diberikan. Berikut adalah hasil dari perintah MessageBox(Pesan)(lihatgambar3.3) Tabel3.3.KotakDialogtanpaargumen keduadanketiga

e. MenentukanIkonpadaKotakDialog MessageBox telah menyediakan empat macam ikon yang bisa kita tampilkan pada kotak dialog. Kita dapat menyertakan ikon dengan menambahkan nilainilai yang tercantumpadaTabel3.5.

116

Tabel3.5.Nilaiuntukmenentukanikonkotakdialog NilaiIkon 16 32 48 64 Gambar WarnaIkon Merah Hijau Kuning Biru

f. MenentukanTombolDefault Bila kotak dialog terdiri lebih dari sebuah tomboltekan, maka tombol terkiri akan dijadikansebagaidefault.Seandainyakitamenghendakilain(bukantombolterkiriyang dijadikan sebagai default), kita bisa menambahkan angkaangka berikut ke argumen ketigapadaMessageBox. 256untukmenjadikantombolkeduasebagaidefault 512untukmenjadikantombolpertamasebagaidefault

Berikutadalahcontohhasildariperintah(lihatgambar3.4) MessageBox(Pesan,Judul,1+32+256) Gbr3.4.KotakDialogdengan tombolkeduasebagai default

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

117

Jawaban=MessageBox(Pesan,Judul,1+32+256) Setelah pemakai mengklik salah satu tombol, kode dari tombol bersangkutan akan diletakankevariabeljawaban.Selanjutnyakitatinggalmemeriksaisivariabeltersebut. Tabel3.6.mencantumkannilaiyangmewakilitombolyang dipiliholehpemakai. Tabel3.6.Kodetombolpadakotakdialog Nilai 1 2 3 4 5 6 7 Tombolyangdipilih OK Cancel Abort Retry Ignore Yes No

Untukmenyeleksi tombol yang dipilih, kita bisa menggunakan pernyataan IFataupun DOCASE. ContohdenganIF: Jawaban=MessageBox(Pesan,Judul,1+32+256) IFJawaban=1&&BerartitomboltombolOkyangdipilih *Memprosespesan ELSE *Membatalkanperintah ENDIF h. Informasilebihdarisatubaris 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 secaraberurutanbiasadipakaiuntukmembuatbarisbaru.

118

Amaticontohperintahberikut: MessageBox(Pesanbarispertama+CHR(13)+CHR(10)+Pesanbariskedua, Judul,1+32+256) Hasilnyasebagaiberikut(lihatgambar3.5) Gbr.3.5.KotakDialogdengan duabarispesan.

i. KelemahanMESSAGEBOX MessageBox tidak memungkinkan kita mengganti keterangan yang terdapat pada tombolkotakdialog.Misalnya,kitatidakdapatmengubahkataYesmenjadiYa.

18. MembuatIndeks Indeks pada tabel berguna untuk mempercepat pencarian suatu data. Kecepatan pencariandataberdasarkanindeksakanterasasekalijikajumlahdatasangatbanyak. Selainuntukkeperluanmencarisuatudata,indeksmembuatdapatdisajikansecara logika(tidaksecarafisik),baiksecaraurutnaik(ascending,dariAkeZ)ataupunurut turun(descending,dariZkeA). Indeks bisa dibuat dengan menggunakan perintah MODY atau MODIFY STRUCTUREpadajendelacommand.

19. PernyataanSETORDER Apabila kita membuka suatu tabel, indeks tidak dengan sendirinya digunakan (walaupunindekssecaraotomatisikutdibuka) BentukpenulisanSETORDERadalahsbb.: SETORDERTOTAG<nama_indeks> Dalamhalini,<nama_indeks>adalahfieldyangdijadikansebagaiindeks.

119

20. PencarianRecorddenganSEEK/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.BentukpencariandenganSEEKadalahsbb.: USEMK.DBF SETORDERTOTAGKODEMK SEEKMK102202 ?FOUND() ?FOUND() adalah perintah untuk mendeteksi/memeriksa apakah data yang dicari ditemukanatautidak.Bilahasilnya.T.berartidataditemukan,sedangkanjikahasilnya .F.berartidatatersebuttidakditemukan.

21. PencariansecaraEksak Bilakitabermaksudmencarisuatudatabertipekarakterpadafieldyangtelahdiindeks, kita perlu memperhatikan efek dari keadaan SET EXACT. Bila SET EXACT dalam keadaanONberartimecaridatayangsamapersisdenganyangdituliskandalamSEEK, sedangkanbilaSETEXACTdalamkeadaanOFF,inibisaberartimencariyanghurup awalnyasepertiyangdituliskandalamSEEK.