I.
1. 2. 3. 4. 5.
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.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.
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
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
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.
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:
27
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:
29
8. BuatkanSubmenu Transaksiberikut:
30
4.3 MembuatFileDatabasedanTable
1. MembuatFileDatabase a. Klikpage Data padaProjectManager b. PilihdanKlikobjectDatabase c. Klik tombolNew d. PilihdankliktombolNewDatabase padakotakdialogNewDatabase(gb4.3.1)
Gambar4.3.1KotakDialogNewDatabase
31
Gambar4.3.3KotakDialogCreateTable
32
f. KliktombolSave,kemudianketikstrukturtablesepertipadagambar4.3.4.
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.2.FormGantiPassword
37
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
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
39
c. d. e. f. g. h.
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:
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
: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
:14 :0,0,0 :36 :408 :ud :11 :96 :84 :240 :24 :Grid1 :.t. :12 :180 :564
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
10. MembuatProcedure UnloadpadaobjectForm1 CariProcedure UnloadpadaobjectForm1 Ketikprocedureberikut: closeindex closedata return 11. MembuatProcedureKosongkandanTampilkan PilihdankilkmenuForm(sepertipadagambar5.1.5)
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)
47
Tutupjendelaprosedur,jikapengetikanprosedursudahselesai
48
) ,kemudianpilihcode)
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
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
setorderto gotop ifeof() messagebox("Tidakadarecord...!",0,"Perhatian...!") thisform.refresh() return endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return
51
setorderto gobottom ifeof() messagebox("Tidakadarecord...!",0,"Perhatian...!") thisform.refresh() return endif thisform.grid1.setfocus() thisform.refresh() setordertotagkodebrg return
ljawab=messagebox("AndaYakin?",4+32+256,"Recordinimaudihapus!")
52
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
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
jawab=messagebox("AndaYakin?",4+32,"MauKeluardariEntryData...")
54
Urutkanproseseksekusisepertipadagambar5.1.10.
Gambar5.1.10UrutanEksekusiFormOlahDataBarang 27.UjiForm,dataandakarangsendiri.
5.2TugasV.
1. BukafileprojectSIPNM 2. BuatlahfiledatabasedengannamaDATANILAI 3. BuatkanfileTabelMHS.DBFdenganstruktursbb.:
55
2. MebuatfilemenudengannamafileMenuNilai Contoh:
56
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
7.1 BahanPraktekVisualFoxProVII
Bukakembalifile OlahAnggotayangsudahdibuatpadapraktekVI.
59
4. 5. 6. 7.
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
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
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
67
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
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
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
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
30. SimpanFormdengannamaGAJIDSN,kemudianujidengandatakarangsendiri
8.2. TUGASVIII
1. Buatkanstrukturtablenilaisbb:
2. Buatkanlagistrukturtabledetnilaisbb:
77
3. Buatkantabletmpnilaidantmpnilai1denganstruktursbb:
78
4. ButlahFormOLAHNILAI,dengandesainformsbb.:
79
9.1 BahanPraktekVisualFoxProIX
1. MembuatMenuShortCut EditBarang PilihOptionOther Pilih Menu KliktombolNew PilihdankliktombolShotcut Buatkanmenushotcutberikutini:
Procedure EditDataBarang
DOFORMo:\AFox\Nama\entryBrg1.scx retu
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.
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:
84
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
86
87
88
11.2.TUGASXI
BuatkanreportKKSdariFileNilaidengandesainsbb.:
89
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
e.
ProcedureKeluar
thisform.release() return
93
13.1 BahanPraktekVisualFoxProXIII
1. DesainFormsbb.:
2. Buatkanprosedursbb: ProcedureLoad
setdefatoo:\AFox\Nama selectlapjual return
b. ProsedurActivate
thisform.text1.Value=YEAR(lapjual.tgltran) SELECTlapjual GOtop
94
c.
ProcedureKeluar
thisform.release() return
5. BuatkanProsedurberikut. a. ProcedureLoad
closedata closeindex setdatebritish setcenton setdefatoo:\AFox\Nama IFUSED("faktur") USEINfaktur ENDIF IFUSED("LAPJUAL")
95
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
96
14.1 BahanPraktekVisualFoxProXIV
1. DesainReportsbb.:
97
FormulaTotalBayarexpression=lapjual.bayar
Formatexpression=999,999,999 Aligment
98
FormulaTotalBayarexpression=lapjual.bayar
Formatexpression=999,999,999 Aligment
99
5. BuatkanProsedurCetakLaporansbb.:
c=thisform.tgl.year selectlapjual
100
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
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
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)
b. NilaiuntukmenentukanJenisKotakDialog Nilai dasar yang digunakan untuk menentukan jenis kotak dialog ada enam macam, sebagaimanatercantumpadatabel3.4.
114
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
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
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
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.