-
1
I. Praktek Visual FoxPro I
Materi:1. Tahappembuatanform2. Perangkatuntukpembuatanform3.
Membuatlabel,textbox, dan tombolcommandpadaform4.
Mengaturproperti5. Menyimpan,MengujidanMenutupform
1.1 MembuatFileProject
a. Buatlahsub directorydengannamadepanmasingmasingb.
BukaprogramVisualFoxProc. MembuatFileProject
1).Klikmenu File2).Klik New3).PilihoptionProject4).Pilihdanklik
NewFile (lihatgambar1.1.1)5).Pilihsubdirectorynamamasingmasinguntuk
menyimpanfileproject6).Ketiknamafileproject(PRAKVFP)7).Kliktombolsave(lihatgambar1.1.2)8).SetelahituakantampilProjectManager(sepertipadagambar1.1.3.)
Gambar1.1.1.Kotakdialogpembuatanfileproject
-
2
Gambar1.1.2.KotakdialogpenyimpananfileProject
Gambar1.1.3.KotakdialogpenyimpananfileProject
-
3
1.2 MembuatFileForm
Kasus1.2:Buatkan form untukmengetahui hasil seleksi penerimaan
calon pegawai, dengan
ketentuansebagaiberikut: Jikanilai akhirminimal70,maka diterima
Tapijikasebaliknya,maka ditolak/gagal.1. MembuatFormKosong
a. Klikpage DocumentspadaProjectManagerb.
PilihdanKlikobjectFormc. KliktombolNewd. Pilihdanklik tombolNewForm
pada kotak dialogNewForm(gb. 1.2.1)
Gambar1.2.1 KotakDialogNewForm
e.
SetelahitudilayarakantampilFormkosongsepertipadagambar1.2.2.
Gambar1.2.2 FormKosong
-
4
2. MemberikanJudulFormdanGambarLatarForma.
MunculkanJendelaProperties denganmengklikkananpadaformkosongb.
Pilihdanklik Propertiesc. PilihobjectForm padajendelapropertiesd.
Padabariscaption,ketik PERHITUNGANHASILSELEKSIe.
PadabarisPicture,pilihgambarlataryangdikehendaki.
3. MembuatControlQuestiondanFieldEntrya.
MunculkantoolbarFormControlerToolbar darimenuViewb. Buatkan Questin
Nama, Nilai Akhir, dan Keterangan denganmenggunakan
LabeldariFormControlerToolbarc. Buatkan Field Entry untuk
menginput Nama, Nilai Akhir dan Keterangan
denganmenggunakanTextBox.d. Hasilnyasepertipadagambar1.2.3.
Gambar1.2.3FormPerhitunganHasilSeleksiI
4. MengisiEntryFielddenganFormulaa. Doubleklik ControlText2b.
CaridanpilihProcedure InteractiveChangec.
KetikProcedureberikut:
ifthisform.text2.value>=60thisform.text3.value="Lulus"elsethisform.text3.value="Gagal"
endifreturn
-
5
5. SimpanFormdengannama fileHasilSeleksi1 (sebaiknyanama file
tidak pakaisepasi)
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 AM HM
86 100 4 A71 85 3 B56 70 2 C41 55 1 D0 40 0 E
1. BuatkanFormsepertipadagambar1.3.1.
-
6
Gambar1.3.1FormPerhitunganHasilSeleksiII2.
BuatkanTombolTekanCheckerdenganfasilitasCommandButtondariForm
ControlerToolbar,kemudianberinamaProses.3. IsikanProcedure
Clickdari ControlProsesberikut:
localvnavna=(thisform.text2.value+thisform.text3.value*2+thisform.text4.value)/4ifvna>=86vam=4vhm="A"elseifvna>=71vam=3vhm="B"elseifvna>=56vam=2vhm="C"elseifvna>=41vam=1
-
7
vhm="D"elsevam=0vhm="D"endifendifendif
endifthisform.text5.value=vnathisform.text6.value=vamthisform.text7.value=vhmretu
4. SimpanFormdengannamaFileHasilSeleksi25. UjiForm.
-
8
1.4 TugasI
1. KasusTugas1:Buatkan form untukmenghitung gaji pokok, gaji
lembur dan jumlah gaji denganketentuansbb: Jumlahjamkerjapokok=8jam
Jikabekerjalebihdari8jam,makaselebihnyadihitunglembur
Tariplembur=150%*GajiPerJam GajiTotal=GajiPokok+GajiLembur
2. BuatkanFormsepertipadagambar1.4.1.:
Gambar1.4.1FormPerhitunganUpahHarian
-
9
II. Praktek Visual FoxPro II
Materi:1. Tahappembuatanform2.
PenggunaanfasilitasOptionGroup&CheckBox3.
PenggunaanPerintahIF4. PenggunaanPerintahDoCase5.
Menyimpan,MengujidanMenutupform
2.1 MembukaFileProject
Untuk membuka File Project PRAKVFP yang sudah dibuat pada
prakteksebelumnya,makalakukanlangkahsbb.:1. Klikmenu File2. Klik
Open3. Cari Folder namamasingmasingdi driveO:\AFOX4..
PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar2.1.1
Gambar2.1.1KotakDialogOpenFile
-
10
2.2 MembuatFileFormBaru
1. MembuatFormKosonga. Klikpage DocumentspadaProjectManagerb.
PilihdanKlikobjectFormc. KliktombolNewd. PilihdankliktombolNewForm
padakotakdialogNewForm(gb. 2.2.1)
Gambar2.2.1KotakDialogNewForm
2. MemberikanJudulFormdanGambarLatarForma.
MunculkanJendelaProperties denganmengklikkananpadaformkosongb.
Pilihdanklik Propertiesc. PilihobjectForm padajendelapropertiesd.
Padabariscaption,ketik ENTRYGAJIKARYAWANe.
PadabarisPicture,pilihgambarlataryangdikehendaki.
3. MembuatControlQuestiondanFieldEntrya.
MunculkantoolbarFormControlerToolbar darimenuViewb. BuatkanQuestion
NamaKaryawan,Golongan, Status, JumlahAnak,Gaji
Pokok, Tunjangan Istri, Tunjangan Anak dan Gaji Total
denganmenggunakanLabeldariFormControlerToolbar
c. BuatkanFieldEntry untukmenginputNamaKaryawan,Golongan,
JumlahAnak,GajiPokok,TunjanganIstri,TunjanganAnakdanGajiTotaldenganmenggunakanTextBox.
4. MembuatOptionGroupa. CaridanKlikcontrol
OptionGrouppadaFormControl Toolbarb.
KlikpadaformsebelahkananStatus,kemudianberinama
STpadaproperties.
-
11
c. GantiOption1 denganKawin, dengan cara klik kanan option group
kemudianpilihedit.
d.
KlikOption1,kemudianpadabarisCaptiondijendelapropertiesketikKawin.e.
KlikOption2,kemudiangantidengan BelumKawinf.
Hasilnyalihatgambar2.2.2.
Gambar2.2.2FormEntryGajiKaryawan
5. MengisiControlSpinnerGoldenganFormulaa. DoubleklikControl
Golb. CaridanpilihProcedure InteractiveChangec.
KetikProcedureberikut:
gol=thisform.gol.valuedocasecasegol=1gapok=200000
casegol=2gapok=400000
casegol=3
-
12
gapok=600000casegol=4gapok=800000
otherwisegapok=0
endcasest=thisform.st.valueifst=1thisform.ja.visible=.t.thisform.text2.visible=.t.thisform.o.visible=.t.ti=0.5*gapokelsethisform.ja.visible=.f.thisform.text2.visible=.f.thisform.o.visible=.f.ti=0thisform.text2.value=0
endifja=thisform.text2.valueifja>3ta=0.2*gapok*3elseta=0.2*gapok*ja
endifgatot=gapok+ti+tathisform.text3.value=gapokthisform.text4.value=tithisform.text5.value=tathisform.text6.value=gatotretu
6. MengisiControlOptionGroupStatusKdenganFormulaa.
DoubleklikControlStatusKb. CaridanpilihProcedure
InteractiveChangec. Isi Procedure InteractiveChange object ST
dicopy dari Procedure
InteractivechangeobjectGol
7. MengisiControlFieldEntryText2denganFormulaa.
DoubleklikControlText2
-
13
b. CaridanpilihProcedure InteractiveChangec. Isi Procedure
InteractiveChange object Text2 dicopy dari Procedure
InteractivechangeobjectGol
8. Simpan Form dengan nama file HitungGaji (sebaiknya nama file
tidak pakaisepasi)
9. UjiFormdenganmengklikiconRun padatoolbarStandard
2.3 MembuatFormPilihGambar
1. BuatkanFormsepertipadagambar2.3.1.berikut:
Gambar2.3.1FormPilihGambar2.
BuatkanOptionGroup,kemudianberinamaPIL. ButtonCountnyaganti63.
GantiOption1 s/dOption6denganGambar1s/dGambar64. Buatkan Image
untuk menampilkan gambar, sebanya 4 buah, yang diletakan
disebelah kanan, kanan atas, atas dankiriatas option group
(seperti pada gambar2.3.1)
5. Buatkan CheckBox Kiri Atas kemudian berinama kiri, CheckBox
Tengah
Ataskemudianberinamatengah,danCheckBoxKananAtaskemudianberinama
kanan)
-
14
sebanyaktigabuahyangdiletakandisebelahKiriBawah,TengahBawahdanKananBawahOptionGroup(sepertipadagambar2.3.1)
6.
DoubleKlikcontrolOptionGroupPil,kemudianpilihprocedureInteractiveChange,laluketikprocedureberikut:
docasecasethisform.pil.value=1thisform.image1.picture="gb1.jpg"
casethisform.pil.value=2thisform.image1.picture="gb2.jpg"
casethisform.pil.value=3thisform.image1.picture="gb3.jpg"
casethisform.pil.value=4thisform.image1.picture="gb4.jpg"
casethisform.pil.value=5thisform.image1.picture="gb5.jpg"
casethisform.pil.value=6otherwisethisform.image1.picture="gb6.jpg"
endcase
7. DoubleKlikcontrolCheckBoxKiri,kemudianpilihprocedure
InteractiveChange,laluketikprocedureberikut:ifthisform.kiri.value=1thisform.gbkiri.picture=thisform.image1.pictureelsethisform.gbkiri.picture=""
endif
8. Double Klik control CheckBox Tengah, kemudian pilih
procedureInteractiveChange,laluketikprocedureberikut:
ifthisform.tengah.value=1thisform.gbtengah.picture=thisform.image1.pictureelsethisform.gbtengah.picture=""
endif
9. Double Klik control CheckBox Kanan, kemudian pilih
procedureInteractiveChange,laluketikprocedureberikut:
-
15
ifthisform.kanan.value=1thisform.gbkanan.picture=thisform.image1.pictureelsethisform.gbkanan.picture=""
endif
10. SimpanFormdengannamaFile PilihGB11.UjiForm.
-
16
2.4 TugasII
1. BuatkanFormsepertipadagambar2.4.1
Gambar2.4.1.FormMenghitungAngka
2.
Formula/ketentuanperhitunganadalahsbb.:a=0b=0c=0JikaCheckbox100dipilih
a=100JikaCheckbox10dipilih
b=10JikaCheckbox2dipilih
c=2
Jikaoptiontambahdipilih,makaformulanya:Hasil=a+b+c
JikaoptionKurangdipilih,makaformulanya:Hasil=a b c
-
17
JikaoptionKalidipilih,maka:Jikayangcheckboxhanya100dan10,makaformulanyaHasil=a*b
Jikayangcheckboxhanya10dan2,makaformulanyaHasil=b*c
Jikayangcheckboxhanya100dan2,makaformulanyaHasil=a*c
Jikayangcheckbox100,10dan2,makaformulanyaHasil=a*b*c
3. Selamatmencoba!
-
18
III. Praktek Visual FoxPro III
Materi:1. Tahappembuatanform2. PenggunaanfasilitasOlecontrol3.
PenggunaanPerintahDOWHILE4. PenggunaanPerintahFORNEXT5.
Menyimpan,MengujidanMenutupform
3.1 MembukaFileProjectUntuk membuka File Project PRAKVFP yang
sudah dibuat pada praktek
sebelumnya,makalakukanlangkahsbb.:1. Klikmenu File2. Klik Open3.
Cari Folder namamasingmasingdodriveO:\4..
PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar3.1.1
Gambar3.1.1KotakDialogOpenFile
3.2 AplikasiDOWHILE
1. MembuatFormKosonga. Klikpage DocumentspadaProjectManager
-
19
b. PilihdanKlikobjectFormc. KliktombolNewd.
PilihdankliktombolNewForm padakotakdialogNewForm(gambar3.2.1)
Gambar3.2.1KotakDialogNewForm
2. MemberikanJudulFormdanGambarLatarForma.
MunculkanJendelaProperties denganmengklikkananpadaformkosongb.
Pilihdanklik Propertiesc. PilihobjectForm padajendelapropertiesd.
Padabariscaption,ketikMEMBUATANGKABERURUTe.
PadabarisPicture,pilihgambarlataryangdikehendaki.
3. MembuatControlQuestiondanFieldEntrya.
MunculkantoolbarFormControlerToolbar darimenuViewb.
BuatkanQuestionStart,Step,Stop,danHasildenganmenggunakanLabeldari
FormControlerToolbarc. Buatkan Field Entry untuk menginput
Start, Step, Stop, dan Hasil dengan
menggunakanTextBox.
4. MembuatCommandButtona.
CaridanKlikcontrolCommandButtonpadaFormControlToolbarb. Letakan di
bawah control textbox Text1, kemudian pada properties ganti
CaptiondanNamenyadenganProses.c. Hasilnyalihatgambar3.2.3.
5. MembuatOleControla. KlikMenu Tools
-
20
b. PilihdanKlik Optionc. PilihdanKlikpage Controlsd.
PilihdanKlik ActiveXControle.
CariMicrosoftProgressBarControl6.0kemudianberikantandaCheckBoxpada
kotaksebelahkirinya,sepertipadagambar3.2.2.
Gambar3.2.2Kotakdialogoption
f. KliktombolOkg. Pilihdanklikcontrol
ViewClassespadaFormControlsToolbarh. Pilihdanklik ActiveXControlsi.
PilihdanklikControlMicrosoftProgressBarControl,Version5.0j. Buatkan
ProgressBar di sebelah bawah Tombol Proses, seperti pada gambar
3.2.3.
-
21
Gambar3.2.3FormMembuatAngkaBerurut
k. GantinamenyadenganCtrl
6. MengisiControlTombolProsesdenganFormulaa.
DoubleklikControlTombolProsesb. CaridanpilihProcedure Clic
padaobjectProsesc. KetikProcedureberikut:
locala,b,cifthisform.text1.value>0.or.thisform.text2.value>0.or.thisform.text3.value>0this.enabled=.f.a=thisform.text1.valueb=thisform.text2.valuec=thisform.text3.valuedowhilea
-
22
thisform.ctrl.value=nendifx=0dowhilex0.or.thisform.text2.value>0.or.thisform.text3.value>0this.enabled=.f.a=thisform.text1.valueb=thisform.text2.valuec=thisform.text3.valuefori=atocstepbthisform.text4.value=aa=a+bn=(100/c)*aifa
-
23
endifforx=1to10000000step1next
nextelsemessagebox("Start,StepdanStopharusdiisi..!",0,"Perhatian..!")thisform.text1.setfocus()retuendifthis.enabled=.t.retu
4. SimpanFormdengannamaFile URUTANGKA25.
UjiFormdenganmengklikiconRun/!.
3.4 TugasIII
1. Klikpage Code padaprojectmanager2.
PilihdanklikoptionProgram,kemudiankliktombolNew3.
Ketikprogramberikut:
functionterbilangparameternumerikprivatehasil,ulang,uang,kesatu,kedua,ketiga,cangkaprivatecangka0,cangka1,cangka2,cangka3,cangka4,cangka5privatecangka6,cangka7,cangka8,cangka9privatesatu,dua,tiga,gabung,sen1,sen2
hasil=""uang=str(numerik,15,2)kesatu=1kedua=2ketiga=3cangka0=""cangka1="Satu"cangka2="Dua"cangka3="Tiga"cangka4="Empat"cangka5="Lima"cangka6="Enam"
-
24
cangka7="Tujuh"cangka8="Delapan"cangka9="Sembilan"gabung=""
forulang=1
to4satu=substr(uang,kesatu,1)dua=substr(uang,kedua,1)tiga=substr(uang,ketiga,1)gabung=satu+dua+tigaifval(satu)=1hasil=hasil+"Seratus"
elseifval(satu)>1
hasil=hasil+cangka&satu+"Ratus"endif
endifDOCASE
CASEVAL(DUA)=1DOCASECASEVAL(TIGA)=0
HASIL=HASIL+"Sepuluh"CASEVAL(TIGA)=1
HASIL=HASIL+"Sebelas"OTHER
HASIL=HASIL+ALLTRIM(CANGKA&TIGA)+"Belas"
ENDCASECASEVAL(DUA)>1
HASIL=HASIL+CANGKA&DUA+"Puluh"+CANGKA&TIGA
CASEVAL(DUA)=0.AND.VAL(TIGA)>0IF(ulang=3.AND.GABUNG="001").OR.(ulang=3.AND.GABUNG="1")HASIL=HASIL+"Seribu"
ELSEHASIL=HASIL+CANGKA&TIGA
ENDIFENDCASE
-
25
DOCASECASEulang=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+""
ELSEHASIL=HASIL+"Ribu"
ENDIFENDCASEkesatu=kesatu+3kedua=kedua+3ketiga=ketiga+3
nextulangsen1=substr(uang,14,1)sen2=substr(uang,15,1)iflen(hasil)>1hasil=hasil+"Rupiah"
endif
DOCASECASEVAL(SEN1)=0.AND.VAL(SEN2)>0
HASIL=HASIL+CANGKA&SEN2+"Sen"CASEVAL(SEN1)=1
DOCASECASEVAL(SEN2)=0
HASIL=HASIL+"SepuluhSen"CASEVAL(SEN2)=1
HASIL=HASIL+"SebelasSen"CASEVAL(SEN2)>1
HASIL=HASIL+ALLTRIM(CANGKA&SEN2)+"BelasSen"
ENDCASECASEVAL(SEN1)>1
HASIL=HASIL+CANGKA&SEN1+"Puluh"+CANGKA&SEN2+"Sen"
ENDCASERETURNHASIL
-
26
4. UjiProgramdiatasdenganformberikut:
5. ProcedureInteractiveChangepadaObjectText1,adalahsbb.:
setdefatoo:\AFOX\susisetproceduretoterbilanga=terbilang(thisform.text1.value)thisform.text2.value=aretu
-
27
IV. Praktek Visual FoxPro IV
Materi:1. MembuatDatabse2. MembuatTable3.
MengeditdanMengisiTable4. MembuatPassword5. MembuatMenu6.
MembuatFileProgram(PRG)7. MengujiMenu
4.1 MembukaFileProject
Untuk membuka File Project PRAKVFP yang sudah dibuat pada
prakteksebelumnya,makalakukanlangkahsbb.:1. Klikmenu File2. Klik
Open3. Cari Folder namamasingmasingdodriveO:\AFOX4..
PilihdanDoubleKlikfileprojectPRAKVFP,sepertipadagambar4.1.1
Gambar4.1.1KotakDialogOpenFile
-
28
4.2 MembuatOrganisasiMenu
1. KlikpageOther(lihatgambar4.2.1)2.
KlikoptionmenukemudiankliktombolNew3. Pilihdankliktombolmenu
Gambar4.2.1Kotakdialogprojectmanager
4. Ketikmenuberikut:
5. Klik FileMaster padabarispertama6.
Kliktombolcreate,kemudianbuatkansubmenuberikut:
-
29
7. PadakotakMenulevel sebelahkanan,pilihMenuBar
8. BuatkanSubmenu Transaksiberikut:
9. PadakotakMenulevel,pilihlagiMenuBar10. BuatkanSubMenu
Laporansbb.:
-
30
11.BuatkanSubMenu LaporanPenjualansbb.:
12. PadakotakMenulevel,pilihlagiMenuBar13. BuatkanSubMenu
Utilitysbb.:
14.
SimpanMenudengannamaMenuPenjualan15.MengujimenudenganmengkliktombolRun
4.3 MembuatFileDatabasedanTable
1. MembuatFileDatabasea. Klikpage Data padaProjectManagerb.
PilihdanKlikobjectDatabasec. Klik tombolNewd.
PilihdankliktombolNewDatabase
padakotakdialogNewDatabase(gb4.3.1)
Gambar4.3.1KotakDialogNewDatabase
-
31
2. MembuatTablePSWDa. Klikkananpadajendeladatabase DATAKKBAMb.
Pilihdanklik NewTablec.
PilihdankliktombolNewTable,sepertipadagambar4.3.2.
Gambar4.3.2KotakDialogNewTable
d. PastikanfolderyangaktifpadabarisSaveIn adalahFolderNamaAndae.
Ketiknamafiletable PSWDpadabaris Entertable,sepertiopada
gambar4.3.3.
Gambar4.3.3KotakDialogCreateTable
-
32
f.
KliktombolSave,kemudianketikstrukturtablesepertipadagambar4.3.4.
Gambar4.3.4StrukturTablePSWD
g. KliktombolOk,untukmengakhiripembuatanstrukturtableh.
Jawab/PilihdanKliktombolNopadapertanyaanInputDataRecordNow?,
sepertipadagambar4.3.5.
Gambar4.3.5KotakDialogQuestion
3. MengisiTablea.
KlikTanda+padasebelahkiriDatabasesdipageData,ProjectManager,untuk
mengetahuidatabaseyangsudahdibuat.b.
KliklagiTanda+padasebelahkiri DATAKKBAM, untukmembukatablec.
KliklagiTanda+padasebelahkiriTable,untukmengetahuitableyangsudah
dibuat.d. Klik Table PSWD, kemudian klik tombol Browse yang
terletak sebelah
kanannya.e.
Setelahkebuka,klikmenuTable,kemudianpilihdanklikAppendNewRecord
(Ctrl+Y)f. IsiIdNmdengannamadepanandag.
IsiPswddengankodesandianda
-
33
4.4 MembuatFormuntukLogin
1. BuatkanFormsepertipada gambar4.4.1
Gambar4.4.1FormEntryLogindanPassword
2. Procedure LoaddariObjectForm1
setdefatoo:\AFOX\PolderAdndaifused('pswd')useinpswd
endifusepswdretu
3. Procedure UnLoaddariobjectForm1
closedatacloseindexretu
-
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
elselocateforpswd=trim(thisform.text2.value)if!found()messagebox("MaafPasswordTidakDikenal...!",0,"Perhatian...")thisform.text2.setfocus()retu
elsemessagebox(Selamat,Andaberhakmengaksessystemini..,0,AssalamualaikumWr.Wb.)doo:\AFOX\PolderAnda\MENUPENJUALAN.MPRthisform.release()
endifendif
6. Procedure ClickdariobjectBatalthisform.release()quitretu
7. SimpanFormdengan namaFile PASWORD8.
UjiFormdenganmengklikiconRun/!.
4.5 MembuatFileProgram
1. Klikpage Code2. PilihdanklikoptionProgram,
kemudiankliktombolNew
-
35
3. Ketikanprogramberikut:
CLOSEDATABASEallCLEARALLCLOSEALLSETTALKOFFSETSTATOFFSETAUTOSAVEONSETCENTURYONSETDATEITALIANSETDEFATO
O:\AFOX\\SUSIPUSHMENU_MSYSMENUMODIWINDOWSSCREENTITLE'SISTEMINFORMASIGAJIDOSEN'WITH_SCREEN
.VISIBLE=.T.
.WINDOWSTATE=2
.picture='LATAR.JPG'ENDWITHRELEASEALLDOFORMO:\AFOX\PolderAnda\PASWORD.SCXREADEVENTSQUIT
4. SimpanprogramdengannamaSIPB5.
JalankanprogramdenganmengkliktombolRun
-
36
4.6 TugasIV
1. Buatkan database baru dengan nama SIPNM (Sistem Informasi
PengolahanNilaiMahasiswa)
2.
BuatkantablepassworddengannamaPSWDsepertipadapraktek4,dengantrukturtablesepertipadagambar4.6.1.
Gambar4.6.1StrukturFileTablePSWD
3.
Entry(tambahdata)tablePSWD,nmiddiisinamaanda,danpswdandaisidengankoderahasiahanda.
4.
BuatkanFormuntukmengeditPassword,dengancontohformsepertipadagambar4.6.2.berikut:
Gambar4.6.2.FormGantiPassword
-
37
V. Praktek Visual FoxPro V
Materi:1. MembuatFileProject2.
MengambilFileDatabasedariprojectlain3. MembuatFileTabel
5.1 MembuatProjectBaru
1. MembuatFileProjecta. Klikmenu Fileb. Klik Newc.
PilihoptionProjectd. Pilihdanklik NewFile (lihatgambar5.1.1)e.
PilihFoldernamamasingmasinguntukmenyimpanfileprojectf.
Ketiknamafileproject(SIPB)g. Kliktombolsave(lihatgambar5.1.2)
Gambar5.1.1Kotakdialogpembuatanfileproject
Gambar5.1.2KotakdialogpenyimpananfileProject
-
38
2. MembukaMenua. KlikpageOther (lihatgambar5.1.3)b.
KlikoptionmenukemudiankliktombolAdd
Gambar5.1.3Kotakdialogprojectmanager
c. BukaFolderAndadidrive o:\AFox\NamaAndad. Pilihdanklikfile
MENUPENJUALAN.MNX,kemudiankliktombolOk
3. MembukaFileProgramSIPB.PRGdanTERBILANG.PRG
a. Klikpage Codeb. KlikoptionProgramkemudiankliktombolAddc.
BukaFolderAndadidrive o:\AFox\NamaAndad. Pilihdanklikfile
SIPB.PRG,kemudiankliktombolOke.
Ulangiperintahdiatasuntukmembukafile TERBILANG.PRG
4. MembukaFileDatabase
a. Klikpage Datab. KlikoptionDatabasekemudiankliktombolAddc.
BukaFolderAndadidrive o:\AFox\NamaAndad. Pilihdanklikfile
DATAKKBAM.DBC,kemudiankliktombolOk
5. MembuatFileTabela.
Kliktanda+yangterletakdidepanoptiondatabaseb.
Kliklagitanda+yangadadidepanfiledatabase DATAKKBAM
-
39
c. Klik table, kemudiankliktombolNewd.
PilihdanKliktombolNewTabele. PilihFoldernamaandamasingmasingf.
Ketiknamafiletable BARANGg. Kliktombolsaveh.
Isikannamanamafieldberikut:
i.
BerikanFormat!padafieldKODEBRG,untukmemformatmenjadiCapital.j.
IndextabletersebutberdasarkankodebrgdanberikantypePrimaryKeyseperti
padagambarberikut:
k. KliktombolOKl. PilihtombolNo
padakotakdialogInputDataRecordNow
6. MengisiTable BARANG denganfasilitas Browsea. KlikTable
BARANG,kemudiankliktombol Browseb. Klik menu Table, kemudian pilih
dan klik Append New Record (Ctrl + Y),
sepertipadagambarberikut:
-
40
c. Entry databerikutini:
7. MembuatFormOlahDataBaranga. Klikpage Documentsb.
KlikoptionForm,kemudiankliktombolNewc. KliktombolNewFormd.
BuatkanFormberikut:
-
41
e. MembuatTytleFormdanBackgroud1)
KlikbarisCaptiondijendelaproperties2) Ketik:OLAHDATABARANG3) Klik
pada baris Picture, kemudian klik , lalu pilih latar yang anda
kehendaki. (jika gambar background belum ada minta dicopykan
dulukepadadosenanda)
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 :5 Top :18 Width :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 :\
-
43
FontSize :14 Forecolor :0,0,0 Hight :36 Left :408 Name :ud
TabIndex :11 Top :96 Width :84
m.MembuatGrid Hight :240 Left :24 Name :Grid1 ReadOnly :.t.
TabIndex :12 Top :180 Width :564
n. MemilihFieldyangakanditampilkandigrid Klikkananpada grid
Pilihoptionbuilder PilihfileBARANGpadakotakdialoggambar5.1.4
Gambar5.1.4GridBuilder
-
44
Pilihnamafieldyangakanditampilkandigrid,masukankekolomselected
fileddenganmenggunakantombol atau
.KliktombolOkuntukmengahirinya.EditpadapropertiesHeaderHeightmenjadi30danRowHeightmenjadi20
o. MengeditgridKlikkananpada
gridPilihoptioneditPilihdanklikHeaderkolomKodeBrg,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:
closedatacloseindexsetdefatoo:\AFox\NamaAndaIFUSED("barang")
USEINbarangendif
-
45
usebarangsetordertotagkodebrgreindexreturn
10.MembuatProcedure UnloadpadaobjectForm1 CariProcedure
UnloadpadaobjectForm1 Ketikprocedureberikut:
closeindexclosedatareturn
11.MembuatProcedureKosongkandanTampilkan
PilihdankilkmenuForm(sepertipadagambar5.1.5)
Gambar5.1.5.MemilihMenuNewMethod
KetikkosongkanpadakolomName,kemudiankeliktombolAdd(sepertipadagambar5.1.6)
Gambar5.1.6KotakdialogNewMethod
KetikTampilkanpadakolomName,kemudiankeliktombolAdd(sepertipadagambar5.1.7)
Gambar5.1.7.KotakdialogNewMethod
-
46
KetikNonText1padakolomName,kemudiankeliktombolAdd(sepertipadagambar5.1.8)
Gambar5.1.8.KotakdialogNewMethod
Ketik Kendali pada kolom Name, kemudian kelik tombol Add
(seperti padagambar5.1.9)
Gambar5.1.9.KotakdialogNewMethod
KliktombolClose,untukmenutupkotakdialog CariProcedure
KosongkanpadaobjectForm1 Ketikprocedureberikut:
thisform.text2.value=""thisform.text3.value=0thisform.text4.value=""thisform.text5.value=0return
Cariprocedure Tampilkan padaobjectForm1
Ketikprocedureberikut:
thisform.text1.value=barang.kodebrgthisform.text2.value=barang.namabrgthisform.text3.value=barang.qtythisform.text4.value=barang.satuanthisform.text5.value=barang.hrgdsrthisform.text6.value=recno()return
-
47
Cariprocedure NonText1padaobjectForm1 Ketikprocedureberikut:
parameterkeadaanthisform.text2.enabled=keadaanthisform.text3.enabled=keadaanthisform.text4.enabled=keadaanthisform.text5.enabled=keadaanreturn
CariprocedureKendalipadaobjectForm1 Ketikprocedureberikut:
PARAMETERSxthisform.pertama.enabled=xthisform.sebelumnya.enabled=xthisform.berikutnya.enabled=xthisform.terakhir.enabled=xretu
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 ,kemudianpilihcode)
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
14. Procedure ClickpadaobjectPeriksa ( )
ifempty(thisform.text1.value)messagebox("KodeBarangHarusDiisi!",0,"Perhatian...!")thisform.text1.setfocus()return
endififseek(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
elsethisform.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()
endifreturn
15. Procedure ClickpadaobjectSimpan( )
ifempty(thisform.text2.value).or.empty(thisform.text4.value).or.empty(thisform.text5.value)messagebox("Isidatadenganlengkap!",0,"Perhatian...!")thisform.text2.setfocusreturn
endiflocateforkodebrg=space(6)
if!found()appendblank
endifreplkodebrgwiththisform.text1.valuereplnamabrgwiththisform.text2.valuereplqtywiththisform.text3.valuereplsatuanwiththisform.text4.valuereplhrgdsrwiththisform.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( )
setordertogotopifeof()
messagebox("Tidakadarecord...!",0,"Perhatian...!")thisform.refresh()return
endifthisform.grid1.setfocus()thisform.refresh()setordertotagkodebrgreturn
17. Procedure ClickpadaobjectSebelumnya( )
setordertoskip1ifbof()
gotopendifthisform.grid1.setfocus()thisform.refresh()setordertotagkodebrgreturn
18. Procedure ClickpadaobjectBerikutnya( )
setordertoskipifbof()
gobottomendifthisform.grid1.setfocus()thisform.refresh()setordertotagkodebrgreturn
-
51
19. Procedure ClickpadaobjectTerakhir ( )
setordertogobottomifeof()
messagebox("Tidakadarecord...!",0,"Perhatian...!")thisform.refresh()return
endifthisform.grid1.setfocus()thisform.refresh()setordertotagkodebrgreturn
20. Procedure ClickpadaobjectHapus( )
localljawab,lnln=recno()ljawab=messagebox("AndaYakin?",4+32+256,"Recordinimaudihapus!")ifljawab=6
setdeleondele
endifgotolnthisform.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,lnln=recno()jawab=messagebox("MauMemperbaikiDataSebelumnya?",4+32,"Perhatian...!")
ifjawab=6gotolnreplkodebrgwiththisform.text1.valuereplnamabrgwiththisform.text2.valuereplqtywiththisform.text3.valuereplsatuanwiththisform.text4.valuereplhrgdsrwiththisform.text5.value
endifthisform.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()
DELETESETDELETEDON
ENDIFIFthisform.ud.Enabled=.t.
thisform.grid1.Enabled=.t.GOTOnthisform.grid1.SetFocus()thisform.Refresh()
elsethisform.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()
endifreturn
24. Procedure ClickpadaobjectKeluar( )
jawab=messagebox("AndaYakin?",4+32,"MauKeluardariEntryData...")ifjawab=6
thisform.release()setdeleoffpack
endifreturn
25. Procedure AfterRowColChangepadaobjectGrid1
LPARAMETERSnColIndexthisform.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 ViewPilihdanklik
TabOrderPilihdanklik AssignInteractively
-
54
Urutkanproseseksekusisepertipadagambar5.1.10.
Gambar5.1.10UrutanEksekusiFormOlahDataBarang
27.UjiForm,dataandakarangsendiri.
5.2TugasV.
1. BukafileprojectSIPNM2.
BuatlahfiledatabasedengannamaDATANILAI3.
BuatkanfileTabelMHS.DBFdenganstruktursbb.:
-
55
2. MebuatfilemenudengannamafileMenuNilaiContoh:
-
56
VI. Praktek Visual FoxPro VI
Materi:1. BekerjadenganIndeks2. Melatihpemahamanpembuatanform3.
Mengenalbentuktanggaldanmerubahsetingtanggal
6.1 BahanPraktekVisualFoxProVI
a. BuatlahFileTable ANGGOTA denganstruktursbb:
b. Buatlahdesainformpadagambar6.1.1.(simpandengannama
OlahAnggota)
Gambar6.1.1DesainFormOlahDataAnggota
-
57
6.2. TUGASVI
1. BuatkanFormsepertipadalatihandi
atasuntukMengentryFileMHS.DBFContohlayoutFormOlahDataMahasiswaadalahsbb.:
2.
BuatkanProcedurenya,kemudianentrydatamahasiswa,minimal10record(datanyangarangsendiri)
-
58
VII. Praktek Visual FoxPro VII
Materi:1. MembuatProcedure2. MembuatForm/ProgramEntryData3.
BekerjadenganIndeks4. Melakukanpencariandata5.
MengaplikasikanfungsiIF
7.1 BahanPraktekVisualFoxProVII
BukakembalifileOlahAnggotayangsudahdibuatpadapraktekVI.
Gambar7.1.1DesainFormOlahData Anggota
1. BuatkanProcedure
Loadclosedatacloseindexsetdefatoo:\AFox\NamaAndaIFUSED("anggota")
-
59
USEINanggotaENDIFuseanggotareturn
2. BuatkanProcedure Unload3. BuatkanProcedure Kosongkan
thisform.text2.value=""thisform.text3.value=""thisform.text4.value=""thisform.text5.value=""thisform.text6.value=""thisform.text7.value=recno()return
4. BuatkanProcedure Tampilkan5. BuatkanProcedure NonText16.
BuatkanProcedure Kendali7. BuatkanProcedure Activate
8. BuatkanProcedureTombolTambah
9. BuatkanProcedureTombolSimpan
10. BuatkanProcedureTombolKeluar
11. BuatkanProcedureTombolRecordPertama
12. BuatkanProcedureTombolRecordSebelumnya
13. BuatkanProcedureTombolRecord Berikutnya
14. BuatkanProcedureTombolRecordTerakhir
15. BuatkanProcedureTombolPeriksa16.
BuatkanProcedureTombolPerbaiki
17. BuatkanProcedureTombolHapus18. BuatkanProcedure
AfterRowColChangepada
Grid119.Ujiprogramdanentrydataberikut:(datalainnyaandakarangsendiri)
-
60
7.2. TUGASVII
1. BuatkanFileTableMKdenganstruktursbb.:
2. BuatkanFormuntukmengentryfileTableMK
diatas,dengandesainformsbb.:
-
61
3. BuatkanProsedurprosedurnya,laluentrydataberikut:
-
62
VIII. Praktek Visual FoxPro VIII
Materi:1. RelasiFile2. BekerjadenganIndeks3.
PencariandatadenganSEEKdanLocate4. MengaplikasikanfungsiIF
8.1 BahanPraktekVisualFoxProVIII
1. BuatkanstrukturfiletableberikutdengannamafileFAKTUR
2. BuatkanstrukturfiletableberikutdengannamafilePENJUALAN
-
63
3 BuatkanstrukturfiletableberikutdengannamafileNOFAKTUR
4. BuatkanstrukturfileFreeTableberikutdengannamafileTMPJUAL
-
64
5. BuatkandesainFormPENJUALAN sbb.:
6. Procedure Load
closedatacloseindexsetdatebritishsetcentonsetdefatoo:\AFox\NamaIFUSED("barang")
USEINbarangENDIFIFUSED("anggota")
USEINanggotaENDIFIFUSED("faktur")
USEINfakturENDIFIFUSED("Penjualan")
USEINpenjualanendifIFUSED("NoFaktur")
-
65
USEINNoFakturendifIFUSED("TmpJual")
USEINTmpJualendifselectausebarangsetordertotagkodebrgsetordertotagnamabrgselectbuseanggotasetordertotagnoangselectcusefaktursetordertotagnofakturselectdusepenjualansetordertotagnofakturselecteusetmpjualSELECTfUSENoFakturReturn
7. Procedure UnloadObjectForm1
closedatacloseindexretu
8. Procedure KosongkanObjectForm1
thisform.noang.value=""thisform.nama.value=""thisform.combo1.value=""thisform.combo2.value=""thisform.qty.value=0thisform.text1.value=0thisform.text2.value=0thisform.text3.value=0thisform.text4.value=0thisform.text5.value=0selectfakturgobottomthisform.text6.value=recno()+1return
-
66
9. Procedure TampilkanObjectForm1
selecttmpjualthisform.combo1.value=tmpjual.kodebrgthisform.combo2.value=tmpjual.namabrgthisform.text1.value=tmpjual.hrgjualthisform.qty.value=tmpjual.qtyreturn
10. Procedure TampilsemuaObjectForm1
selectfakturthisform.nofak.value=faktur.nofakturthisform.tgljual.value=faktur.tgltranthisform.text3.value=faktur.diskonthisform.text2.value=faktur.totjualthisform.text4.value=faktur.bayarthisform.text5.value=faktur.sisathisform.text6.value=recno()thisform.noang.value=faktur.noangselectanggotalocatefornoang=thisform.noang.valuethisform.nama.value=anggota.namaselecttmpjualdeleallsetdeleonappefrompenjualanfornofaktur=thisform.nofak.valuegotopdowhile!eof()
selectbaranglocateforkodebrg=tmpjual.kodebrgvnamabrg=barang.namabrgvsatuan=barang.satuanselecttmpjualreplnamabrgwithvnamabrgreplsatuanwithvsatuanreplhrgjualwithtmpjual.jumlah/tmpjual.qtyskip
enddoGObottomrepltotjualwiththisform.text2.valuerepldiskonwiththisform.text3.valuereplbayarwiththisform.text4.valuereplsisawiththisform.text5.valuegotopREPLACEtgltranWITHthisform.tgljual.ValueREPLACEnoangWITHthisform.noang.Valuethisform.combo1.value=tmpjual.kodebrgthisform.combo2.value=tmpjual.namabrgthisform.text1.value=tmpjual.hrgjual
-
67
thisform.qty.value=tmpjual.qtythisform.refresh()return
11. Procedure Kendali ObjectForm1
PARAMETERSxthisform.pertama.Enabled=xthisform.sebelumnya.Enabled=xthisform.berikutnya.Enabled=xthisform.terakhir.Enabled=xretu
12. Procedure ActivateObjectForm1
PUBLICLnofakselectbarangsetordertotagnamabrgthisform.tgljual.Value=DATE()selenofakturgobottomifnofaktur.tanggalthisform.tgljual.value
deleallpackappendblanklnofak=1
elselnofak=nofaktur.nofak+1
endiftgl=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(right(str(th),2))+alltrim(str(lnofak,3))seletmpjualDELETEALLSETDELETEDONthisform.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.namaa=thisform.noang.Valueb=".JPG"c=ALLTRIM(a)+bthisform.foto.Picture="o:\AFox\NamaAnda\"+creturn
14. Procedure InteractiveChangeObjectNAMA
thisform.noang.value=anggota.noanga=thisform.noang.Valueb=".JPG"c=ALLTRIM(a)+bthisform.foto.Picture="o:\AFox\NamaAnda\"+creturn
15. ProcedureInteractiveChangeObjectCombo1
thisform.combo2.value=barang.namabrgthisform.text1.value=barang.hrgdsr*1.1thisform.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.kodebrgthisform.text1.value=barang.hrgdsr*1.1thisform.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.MPRReturn
18. Procedure ClickObjectTombolHitung
localselisih,llaba,jml,vsatuanselebaranglocateforkodebrg=thisform.combo1.valueifbarang>qtyqtythisform.qty.setfocus()return
endifvsatuan=barang.satuanjml=thisform.qty.value*thisform.text1.valuethisform.text2.value=thisform.text2.value+jmlselisih=thisform.text1.valuebarang.hrgdsrllaba=selisih*thisform.qty.valueselecttmpjualifthisform.text1.value>0.or.thisform.qty.value>0appendblankreplnofakturwiththisform.Nofak.valuerepltgltranwiththisform.tgljual.valuereplnoangwiththisform.noang.valuereplkodebrgwiththisform.combo1.valuereplnamabrgwiththisform.combo2.valuereplqtywiththisform.qty.valuereplsatuanwithvsatuanreplhrgjualwiththisform.text1.valuerepljumlahwithjmlendifthisform.refresh()selepenjualanifthisform.qty.value>0.and.thisform.text1.value>0appeblankreplNofakturwiththisform.Nofak.valuereplkodebrgwiththisform.combo1.valuereplqtywiththisform.qty.valuerepljumlahwithjmlrepllabawithllabaendifselebaranglocateforkodebrg=thisform.combo1.valueifthisform.qty.value>0.and.thisform.text1.value>0replbarang.qtywithbarang.qtythisform.qty.valueendifselecttmpjual
-
70
thisform.combo1.value=""thisform.text1.value=0thisform.combo2.value=""thisform.qty.value=0thisform.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,ljmljawab=messagebox("Andamaumenghapusrecordini?",4+32+256,"Perhatian...")ifjawab=6seletmpjualljml=tmpjual.jumlahsetdeleondeleselepenjualanlocafornofaktur=thisform.nofak.value.and.kodebrg=thisform.combo1.valuedeleselebaranglocateforkodebrg=thisform.combo1.valueifthisform.qty.value>0
qty1=barang.qtyqty1=qty1+thisform.qty.valuereplbarang.qtywithqty1
endifthisform.text2.value=thisform.text2.valueljmlthisform.text4.Value=thisform.text2.Valuethisform.text3.valuethisform.text5.Value=thisform.text2.Valuethisform.text3.valuethisform.text4.Valueselectfakturlocatefornofaktur=thisform.nofak.valuerepltotjualwiththisform.text2.valuerepldiskonwiththisform.text3.valuereplbayarwiththisform.text4.valuereplsisawiththisform.text5.valueselecttmpjualgotopreplnoangwiththisform.noang.valuerepltgltranwiththisform.tgljual.value
-
71
GObottomrepltotjualwiththisform.text2.valuerepldiskonwiththisform.text3.valuereplbayarwiththisform.text4.valuereplsisawiththisform.text5.valuethisform.text2.value=tmpjual.totjualthisform.text3.value=tmpjual.diskonthisform.text4.value=tmpjual.bayarthisform.text5.value=tmpjual.sisagotopthisform.refresh()thisform.qty.value=0endifreturn
19b. ProcedureRightClickObjectTombolBatal
jawab=MESSAGEBOX("Maumembatalkantransaksi?",4+32+512,"Perhatian...")IFjawab=6
SELECTfakturDELETEFORNofaktur=ALLTRIM(thisform.Nofak.value)SELECTpenjualanDELETEFORNofaktur=ALLTRIM(thisform.Nofak.value)SELECTtmpjualDELETEALLSETDELETEDonthisform.Refresh()thisform.keluar.Enabled=.t.thisform.kendali(.t.)thisform.kosongkan()thisform.hitung.Enabled=.f.thisform.batal.Enabled=.f.
endifretu
20.
ProcedureClickObjectTombolKeluarseletmpjualdeleallsetdeleoffpackselepenjualanPACKSELECTfakturpackthisform.release()return
21a. ProcedureInteractiveChangeObjectText4
-
72
IFthisform.text4.Value>(thisform.text2.Valuethisform.text3.Value)MESSAGEBOX("Jumlahbayaryangandamasukansalah...",0,"Perhatian...")thisform.text4.SetFocus()RETURN
ENDIFthisform.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.valuethisform.text4.valuereturn
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.valuereturn
21c. ProcedureRightClickObjectText4
DOo:\AFox\Nama\bukakembalian.mprReturn
22. ProcedureClickObjectTombolSimpan
ifthisform.text2.value>0selectfakturlocatefornofaktur=thisform.nofak.valueif!found()
appendblankendifreplnofakturwiththisform.nofak.valuerepltotjualwiththisform.text2.valueREPLdiskonWITHthisform.text3.Valuereplbayarwiththisform.text4.valuereplsisawiththisform.text5.value
-
73
repltgltranwiththisform.tgljual.valuereplnoangwiththisform.noang.valueselecttmpjualgobottomreplnofakturwiththisform.nofak.valuerepltotjualwiththisform.text2.valuerepltgltranwiththisform.tgljual.valuereplnoangwiththisform.noang.valueREPLdiskonWITHthisform.text3.Valuereplbayarwiththisform.text4.valuereplsisawiththisform.text5.value
ENDIFSELECTNofakturGObottomREPLACEnofakWITHlnofakREPLACEtanggalWITHthisform.tgljual.valuethisform.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
SELECTanggotaSETORDERTOtagNoangselecttmpjualSETRELATIONTOnoangINTOanggotalocatefornofaktur=thisform.Nofak.valueREPORTformo:\AFox\Nama\fakturjualPREVIEWthisform.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
selectbarangsetordertotagnamabrg
-
74
thisform.tgljual.Value=DATE()selenofakturgobottomifnofaktur.tanggalthisform.tgljual.value
deleallpackappendblanklnofak=1
elselnofak=nofaktur.nofak+1
endiftgl=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(right(str(th),2))+alltrim(str(lnofak,3))seletmpjualdeleallsetdeleonthisform.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.scxreturn
26. ProcedureClickObjectTombolPertama
selectfakturSETORDERTOgotopifeof()
messagebox("Tidakadarecord",0,"Perhatian...!")thisform.release()return
endif
-
75
thisform.tampilsemua()thisform.refresh()thisform.cetak.enabled=.t.thisform.tambah.enabled=.t.SETORDERTOtagnofakturReturn
27. ProcedureClickObjectTombolSebelumnya
selectfakturSETORDERTOskip1ifbof()
gotopendifthisform.tampilsemua()thisform.refresh()thisform.cetak.enabled=.t.thisform.tambah.enabled=.t.SETORDERTOtagnofakturReturn
28. ProcedureClickObjectTombolBerikutnya
selectfakturSETORDERTOskip1ifeof()
gobottomendifthisform.tampilsemua()thisform.refresh()thisform.cetak.enabled=.t.thisform.tambah.enabled=.t.SETORDERTOtagnofakturReturn
29. ProcedureClickObjectTombolTerakhir
selectfakturSETORDERTOgobottomifeof()
messagebox("Tidakadarecord",0,"Perhatian...!")thisform.release()return
endif
-
76
thisform.tampilsemua()thisform.refresh()thisform.cetak.enabled=.t.thisform.tambah.enabled=.t.SETORDERTOtagnofakturreturn
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. MembuatMenuShortCut2. MembuatFormHitungKembalian
9.1 BahanPraktekVisualFoxProIX1. MembuatMenuShortCut
EditBarang
PilihOptionOther PilihMenu KliktombolNew
PilihdankliktombolShotcut Buatkanmenushotcutberikutini:
Procedure EditDataBarang
DOFORMo:\AFox\Nama\entryBrg1.scxretu
SimpanMenudengannamafile EditBarang
TutupMenudanjalankandenganmengclickRUN
2. MembuatFormHitungKembalian
-
80
ProcedureLOADpadaobjectFORM1
selecttmpjualgobottomreturn
ProcedureACTIVEpadaobjectFORM1
thisform.text1.value=tmpjual.bayarthisform.text2.value=0thisform.text3.value=0thisform.text2.setfocus()return
ProcedureCLICKpadaobjectKELUAR
thisform.release()return
3. JalankanmenudanFormHitungKembaliandiatasdariFormPenjualan
-
81
X. Praktek Visual FoxPro X
Materi:1. MembuatFileReport2. 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 FakturJual5.
TutupdesainreportdanjalankanForm PENJUALAN6. 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. MembuatFileReport2. 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.diskonFormatexpression=999,999
Aligment
-
86
FormulaSubTotal Bayar
expression=lapjual.bayarFormatexpression=99,999,999
Aligment
FormulaSubTotal Sisa
expression=lapjual.sisaFormatexpression=99,999,999
Aligment
FormulaGrandTotal
Jumlahexpression=lapjual.jumlahFormatexpression=99,999,999
Aligment
FormulaGrandTotal
Diskonexpression=lapjual.diskonFormatexpression=999,999
Aligment
-
87
FormulaGrandTotal Bayar
expression=lapjual.bayarFormatexpression=99,999,999
Aligment
FormulaGrandTotal Sisa
expression=lapjual.sisaFormatexpression=99,999,999
Aligment
4. SimpanReportdengannamafile LAPHARIAN5. UjiReport
-
88
11.2.TUGASXI
BuatkanreportKKSdariFileNilaidengandesainsbb.:
-
89
XII. Praktek Visual FoxPro XII
Materi:1. MembuatformuntukmemfilterReport2. MengujiForm
12.1 BahanPraktekVisualFoxProXII
1. DesainFormsbb.:
2. Buatkanprosedursbb:
ProcedureLoad
closedatacloseindexsetdatebritishsetcentonsetdefatoo:\AFox\NamaIFUSED("barang")
USEINbarangENDIFIFUSED("Anggota")
USEINAnggotaENDIFIFUSED("faktur")
USEINfakturENDIF
-
90
IFUSED("Penjualan")USEINpenjualan
ENDIFIFUSED("TMPJUAL")
USEINTMPJUALENDIFIFUSED("LAPJUAL")
USEINLAPJUALENDIFselectausebarangsetordertotagkodebrgSELECTbUSEanggotaSETORDERTOtagnoangselectcusefaktursetordertotagtgltranselectdusepenjualansetordertotagnofakturselecteuselapjualselectfusetmpjualreturn
b. ProsedurActivate
thisform.tgl.day=DAY(date())thisform.tgl.month=month(date())thisform.tgl.year=year(date())return
c. ProcedureUnLoad
closedatacloseindexreturn
d. ProcedureCetak
a=thisform.tgl.dayb=thisform.tgl.monthc=thisform.tgl.yearvtgl=ALLTRIM(STR(a,2))+"/"+ALLTRIM(STR(b,2))+"/"+STR(c,4)selectlapjualdeleall
-
91
setdeleoffPACKselecttmpjualDELETEALLPACKappefromfakturfortgltran=CTOD(vtgl)gotopdowhile!eof()
selectlapjualAPPENDFROMpenjualanFORnofaktur=tmpjual.nofakturSELECTtmpjualSKIP
enddoSELECTlapjualGOtopDOWHILE!EOF()
SELECTtmpjualLOCATEFORnofaktur=lapjual.nofakturIFFOUND()
vtgltran=tmpjual.tgltranvnoang=tmpjual.noang
ELSEvtgltran=CTOD("//")vnoang=""
ENDIFSELECTlapjualREPLACEtgltranWITHvtgltranREPLACEnoangWITHvnoangSKIP
ENDDOSELECTtmpjualGOtopDOWHILE!EOF()
SELECTlapjualLOCATEFORnofaktur=tmpjual.nofakturIFFOUND()
vtotjual=tmpjual.totjualvbayar=tmpjual.bayarvdiskon=tmpjual.diskonvsisa=tmpjual.sisa
ELSEvtotjual=0vdiskon=0vbayar=0vsisa=0
ENDIFREPLACEtotjualWITHvtotjualREPLACEdiskonWITHvdiskonREPLACEbayarWITHvbayarREPLACEsisaWITHvsisaselecttmpjual
-
92
SKIPENDDOSELECTlapjualSETRELATIONTOkodebrgINTObarang,noangINTOanggotarepoformo:\Fox\Nama\lapharianpreviewreturn
e. ProcedureKeluar
thisform.release()return
3. SimpanFormdengannamafile LAPHARIAN5. UjiForm
-
93
XIII. Praktek Visual FoxPro XIII
Materi:1. MembuatformGrafik2. MengujiGrafik
13.1 BahanPraktekVisualFoxProXIII
1. DesainFormsbb.:
2. Buatkanprosedursbb:
ProcedureLoad
setdefatoo:\AFox\Namaselectlapjualreturn
b. ProsedurActivate
thisform.text1.Value=YEAR(lapjual.tgltran)SELECTlapjualGOtop
-
94
doWHILE!eof()thisform.Grafik.row=MONTH(lapjual.tgltran)thisform.grafik.rowlabel=MONTH(lapjual.tgltran)thisform.Grafik.column=1thisform.Grafik.data=lapjual.totjualskip
ENDDOthisform.keluar.SetFocus()retu
c. ProcedureKeluar
thisform.release()return
3. SimpanFormdengannamafileGRAFIK
4. BuatkanFormuntukmenajalankanGrafiktsbdiatas.
5. BuatkanProsedurberikut.
a. ProcedureLoad
closedatacloseindexsetdatebritishsetcentonsetdefatoo:\AFox\NamaIFUSED("faktur")
USEINfakturENDIFIFUSED("LAPJUAL")
-
95
USEINLAPJUALENDIFselectausefaktursetordertotagtgltranselectbuselapjualreturn
b. ProcedureActivate
thisform.tgl.day=DAY(date())thisform.tgl.month=month(date())thisform.tgl.year=year(date())return
c. ProcedureActivate
closedatacloseindexreturn
d. ProcedureTombolGrafik
c=thisform.tgl.yearselectlapjualdeleallsetdeleoffPACKappefromfakturforYEAR(tgltran)=cSETORDERTOtagtgltrandoformo:\AFox\Nama\grafik.scxreturn
e. ProcedureKeluar
thisform.release()return
6. SimpanFormdengannamafile LAPTAHUNAN7. UjiForm
-
96
XIV.Praktek Visual FoxPro XIV
Materi:1. ReportTahunan2. FormFilterpertahun
14.1 BahanPraktekVisualFoxProXIV
1. DesainReportsbb.:
2. Buatkanformulaexpressionsbb:
FormulaTahunexpression=year(lapjual.tgltran)
FormulaBulanexpression=month(lapjual.tgltran)
-
97
FormulaTotalPenjualanexpression=lapjual.totjualFormatexpression=999,999,999
Aligment
FormulaTotalDiskonexpression=lapjual.diskonFormatexpression=999,999,999
Aligment
FormulaTotalBayarexpression=lapjual.bayarFormatexpression=999,999,999
Aligment
FormulaTotalPiutangexpression=lapjual.sisaFormatexpression=999,999,999
Aligment
-
98
FormulaTotalPenjualanexpression=lapjual.totjualFormatexpression=999,999,999
Aligment
FormulaTotalDiskonexpression=lapjual.diskonFormatexpression=999,999,999
Aligment
FormulaTotalBayarexpression=lapjual.bayarFormatexpression=999,999,999
Aligment
-
99
FormulaTotalPiutangexpression=lapjual.sisaFormatexpression=999,999,999
Aligment
3. SimpanFormdengannamafile LAPTAHUNAN
4. BukaFormLAPTAHUNAN,yangdibuatpadapraktek13sbb:
5. BuatkanProsedurCetakLaporansbb.:
c=thisform.tgl.yearselectlapjual
-
100
deleallsetdeleoffPACKappefromfakturforYEAR(tgltran)=cSETORDERTOtagtgltranrepoformo:\AFox\Nama\laptahunanpreviewreturn
6. SimpandanUjiForm
-
101
LANDASANTEORI
1. PengertianDatabase
Database adalah suatu pengorganisasian data dengan tujuan agar
data dapat diaksesdengan mudah. Sebagai contoh, database dapat
diterapkan untuk
mengelolakepegawaianatauakunting.Padakenyataannya,umumnyasebuahdatabaseterdiriatassejumlahtabel.
Sebagaigambaran,databasetentangpenggajianbisamengandungtabelkaryawan,tabelgolongan,tabelabsensi,tabeljabatandantabeltransasksipenggajian.Tabelkaryawandapat
dilukiskan sebagai kumpulankartu, denganmasingmasing kartumewakili
dataseorangkaryawan.
2. TypeDataVisualFoxPro
DalamVisualFoxPro6.0initerdapattigabelasjenisdata,diantaranya:
a. CharacterType ini merupakan type bawaan. Digunakan untuk
menyatakan informasi
yangtidakuntukdihitungdanjugabukanberupatanggal.Misalnyauntuknamapegawaiataunamabarang.Bisamengandungsimbol*atau+.Typeinidapatmenampung1sampai254character.
b.
CurencyUntukmenyatakankarakterkarakteryangdipakaiuntuksymbolmatauang.Angkayangdapatditanganidatainiadalah$922triliun.Defaultnyamempunyai4tempatdesimaldanmemerlukantempatsebesar8bytedidalamtable.
c.
NumericUntukmenyatakanbilangan(yangnantinyadapatdiprosesuntukperhitungan).Typeinibisamengandungbagianpecahan.Panjangmaksimal20digitdenganmaksimum19
tempat desimal, termasuk tanda plus atauminusdan juga tempat untuk
bagianpecahan.
d. FloatMerupakan type untuk data yang dinyatakan dengan notasi
ilmiah
(misalnya1.6E+02).SifatsifatyanglainsamadengantypeNumerik.
-
102
e. DateMenyatakan tanggal. Panjangnya selalu 8 karakter. Format
tanggal dapat
diatursesuaidenganformatdiIndonesia(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. DateTimeMenyatakan tanggal dan waktu. Panjangnya selalu 8
karakter. Type DateTimememakai format HHMMSS untuk menyimpan data
jam. Jangkauan tanggal01/01/100 sampai 31/12/9999 dan jangkauan jam
adalah 12:00:00 AM sampai11:59:59PM.
g.
DoubleTypeinimenyimpandatanumeric18digitdalamformatyangtelahdikompresdanmemerlukan
8 byte. Type ini mempunyai kelebihan dalam hal banyaknya
angkadesimal yang ditangani dengan range 4.94065648541247E324
sampai1.79769313486232E.
h.
IntigerUntukmenyatakanbilangan(yangnantinyadapatdiprosesuntukperhitungan).Typeinitidamengandungpecahan.Panjangmaksimal4.
i. LogicalMenyatakan logika benaratau salah. IsinyaY jika benar
(True) atauN jika salah(False). Misalnya dapat dipakai
untukmenyatakan jenis kelamin (Y = pria, N
=wanita).Pasasaatmemasukandatahurufhurufberikut(kecilataupunkapital)bisadigunakanY,T,FatauN.TdianggapYdanFdianggapN.
j. MemoBerguna untuk menyatakan suatu keterangan yang panjangnya
lebih dari 254character.Misalnya, isi surat. Ukuranmemo dapat
bervariasi, disesuaikan denganukuran sebuah blok. Defaulnya setiap
blok foxpro berukuran 64 byte.
Misalnyauntukmenampungdata72bytediperlukan2blok.
k. General
-
103
Dipakaiuntukmenyimpangrafik.FoxpromenyimpanfieldGeneraldalamfile.FPT.yangdipakaijugaolehfieldMemo.
l. Character(Binary)m.Memo(binary)
3. TahapPembuatanProgram
PembuatanprogramdenganVisualFoxProselalumelaluiduatahap,yakni:a.
Tahappemrogramanvisual,danb. Tahappenulisankode
Pada tahap pemrograman visual, mulamula merancang form yang
dipakai program.Pada tahap ini dibuatkan form beserta
kontrolkontrol yang diperlukan.
PerancanganformbesertakontrolkontrolyangdilibatkanditanganidenganmenggunakanperangkatperangkatyangtersediadalampaketViasualFoxPro.
Padatahappenulisankode,dituliskankodekodeyangdilekatkanpadakontrolkontrolyang
dipakai. Sebagai gambaran, Jika operator menekan suatu tombol yang
kitabuatkan,maka kode yang kita buatkan harusmenampilkan suatu
tindakan. Penulisankode ini dilakukan denganmenggunakan editor teks
yang tersedia pada paket visualFoxPro.
4. PerangkatuntukPembuatanProgram
BilabermaksudmembuatsuatuprogramdenganVisualFoxPro,akanselalumelibatkantigajendelaberikut:a.
JendelaFormb. JendelaFormControlc. JendelaProperties
Formmerupakanjendelayangakanmunculsebagailatarbelakangdaritampilansuatuaplikasi.Sebuahaplikasidapatmemilikibanyak
form,namunpaling tidakmelibatkansebuah form. Itulah sebabnya, tidak
berlebihan jika form dianggap sebagai tulangpunggungaplikasiVisual
FoxPro. Formlah yangmenjadiantarmuka dengan pemakaiaplikasi.
-
104
Pada saat perancangan, form tampak tersusun atas sejumlah titik.
Hal ini
bermanfaatsebagaipatokandalammengaturtataletakkontrol(misalnyatomboltekanataubahkanteks).
Sudah tentu, pada saat aplikasi dijalankan, titiktitik tersebut
tidak
kelihatan.Dengankatalain,tandatitiktitikhanyamunculsaatperancangan.
Jendela Form Control (lihat gambar 1a) merupakan jendela yang
membuat berbagaikontrol yang tersedia pada Visual FoxPro. Kita
perlu memilih kontrol yang
terdapatpadajendelainisebelummenempatkannyapadaform.
Gambar1a.FormControl
Jendela Properties merupakan tempat untukmengatur halhal yang
berkaitan dengansuatukontrolyang
terdapatpadaform.Jendelainimengandunglimabuahtab,yaitu:a.Allb.Datac.Methodsd.LayOute.Other
Kelimatabiniterlihatpadabagianatasjendelaproperties.Tab
properties berisi properti dari kontrol, misalnya ukuran font,
jenis font, namakontrol,dansebagainya.Sepertipadagambar2a
Gambar2a.JendelaProperties
-
105
5. GambaranprogramdengankontrolTombolTekandanFieldEntri
Jika kita perhatikan programprogram padawindows, pengerjaan
suatu tindakan bisadilakukan dengan menggunakan suatu tombol
perintah, seperti Ok atau Cansel.Bagaimana cara membuat
tomboltombol tersebut kita akan coba
praktekanpembuatannyapadasubbabini.
Pada Modul praktek ke II kita sudah mempelajari membuat kontrol
teks, yang
bertuliskanKodeMataKuliah,NamaMataKuliahdanKredit,danFieldEntri
(berupakotakkosongyangtidakberisiapaapa)
6. MengenalPointerRecord
Setiap tabelmemiliki sebuahpointerrecordsewaktu
tabeldibuka.Fungsidaripointeriniyaitumenunjukrecordsekarang.Padalingkuppemrograman,pointerinimempunyaiperanan
yang sangat penting.Beberapa perintahVisual FoxPro
(misalnyaDISPLAY,jika lingkup ALL tidak diberikan) bekerja
berdasarkan record yang sedang ditunjukolehpointerrecord.
Perhatikan hasil perintah seperti BROWSE, setiap recordmempunyai
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
sendirinyamenunjukkerecordbernomor1(jikatabelpalingtidakmempunyaisebuahrecord).
7. Memperolehnomorrecordsekarang
Untukmengetahui nomor record sekarang (atau dengan kata
lainmelihat isi pointerrecord),bisadigunakanperintahRECNO().
Perintahinidiketikanpadajendelacommanddandiakhiridenganenter.Misalnyabukadulu
file table (USEMK.DBFdikutidenganENTER),
laluketikperintah?RECNO()dikutidenganENTER.Perintahiniakan
menampilkanposisirecordsekarang.
-
106
8. Memindahkanpointerrecord
Pointerrecorddapatdiaturagarmenunjukkesuaturecordtertentudantentusajarecordtersebutakanmenjadirecordsekarang.PerintahyangdigunakandapatberupaGOatauGOTO.Keduaperintahinimempunyaimaknayangsama.
BentukGOTOadalah:
GOTO[RECORD]
Kata RECORD yang ditulis dalam tanda [] bisa diberikan ataupun
tidak,
tanpamengubahmakna.Perludiketahui,jikakataRECORDdisertakan,tanda[]tidakperluditulis.
9. Meletakankerecordpertamadanrecordterakhir
Untukmenggerakanpointerkerecordpertama,bisadigunakanperintahGOTO1atauGOTOTOP.PerintahiniidentikdenganGO1atauGOTOP.
Sedangkan untuk memindahkan pointer ke record terakhir, bisa
digunakan perintahGOTOBOTTOMatauGOBOTTOM.
10.Memindahkanposisirecordkerecordberikutnya
Salah satu tindakan yang nantinya banyak dijumpai dalam
pemrograman adalahmemindahkan pointer ke record berikutnya. Langkah
ini dapat ditempuh
denganmenggunakanperintahSKIP.Formatperintahiniadalah:
SKIP[]
Apabilajumlahrecordyangdilompatitidakdisertakan,pergeseranadalahsebesarsaturecord.JadiSKIPidentikdenganSKIP1.
-
107
11.Meletakanpointerrecordkerecordyangdicari
Visual FoxPro jugamenyediakan perintah yang berguna untukmencari
suatu recordtertentu. Misalnya, perintah untuk menempatkan pointer
record yang bagian MataKuliahnyaberisiCOBOL.
LOCATEFORNAMA_MK=COBOL
Dalam hal ini LOCATE adalah perintah un tuk mencari suatu record
dan FORNAMA_MK=COBOLadalahkriteriapencarian.
Untuk mencari record berikutnya yang cocok, kita cukup
memberikan
perintahCONTINUE.ApabilahasildariperintahLOCATEatauCONTINUEberupa:
EndofLocatescope.
Halinimenandakanbahwatidakadalagidatayangcocok.
Untuk mengtahui yang dicari dengan LOCATE ketemu atau tidak,
kita
bisamenggunakanfungsiFOUND().Fungsiinimemberikannilaibalikberupa:
.T.jikadatayangdicariketemu .F.jika
datayangdicaritidakketemu
12. AwalFiledanAkhirFile
Secaralogika,tabelyangberisisejumlahrecordakandiawalidenganrecordmayayangdisebutBOF(BeginingOfFileAwalFile)
dandiakhiridenganrecordmayabernamaEOF(EndOfFile AkhirFile).
BOF Record1 Record2 Record3 Record4 RecordN EOF
F FRecordmayadiawaltabel
Recordmayadiakhirtabel
-
108
13.MengenalPernyataanIF
PernyataanIFmerupakanperintahyangseringkalidilibatkandalampenulisankode.IFmerupakanperintahyangbergunadalammengambilasuatukeputusan.Dalam
bentuk pseudocode, barang kali kita akan melakukan suatu tindakan
dengankriteriasebagaiberikut:
Jikapointer tidakmenunjukkeawal file,pindahkanlahpointerrecordke
recordsebelumnya.
Pada contoh ini, tindakanmemindahkan pointer record ke record
sebelumnya
hanyadilakukanjikapointerrecordtidakberadapadaawalfile(BOF).
Pseudokode di atas dapat dituangkan ke dalam pernyataan Visual
FoxPro sebagaiberikut:
IF.NOT.BOF()SKIP1
ENDIF
Pada pernyataan di atas, .NOT. merupakan salah satu operator
logika pada VisualFoxPro. Operator .NOT. berarti tidak. Ekspresi
.NOT. BOF() berarti jika
BOF()tidakbernilai.T.ataudengankatalainjikapointerrecordtidaksedangmenunjukBOF(awalfile).
Secaraumum,bentukpernyataanIFadalahsebagaiberikut:
IF
ENDIF
Dalam hal ini, berupa ekspresi logika, yang bernilai .T. (benar)
atau .F.(salah). Apabila bernilai .T., maka akandijalankan.
Sebaiknya, jika bernilai .F., tidakakandijalankan.
Selainbentukdiatas,jugaterdapatbentuksepertiberikut:
IF
-
109
ELSE
ENDIF
Padabentukini, dijalankanjika bernilai.T. dijalankanjika
bernilai.F.
14.OperatorRelasidanOpertaorLogika
Operatorrelasidanopertaorlogikamerupakankomponenpentingyangdipakaisebagaikondisi
pada pernyataanpernyataan pengambilan keputusan (IF) dan pada
beberapapernyataan yang lain. Operatoroperator ini,
sebagaimanaoperator yang lain,
berupasimbolataukatakunciyangmelaksanakansuatuoperasiterhadapdataatauekspresi.
Ekspresiyangdilibatkanolehoperatoroperatorinidapatberupa:
NamaField VariabelMemori Fungsi,ataupun Konstantan
a. OperasiRelasi
Operasirelasiadalahoperatoryangdigunakanuntukmembandingkanduabuahekspresibertipe
data samadanmenghasilkannilai .T. (benar)atau .F. (salah).Tipe data
yangdapatdikenakanpadaoperatorinimeliputi:
Karakter Numerik Ekspresitanggal
VisualFoxPromenyediakansejumlahoperatorrelasisepertipadatebel3.1.
-
110
Tabel3.1Operatorrelasi
Operator Keterangan Lebihbesardari= Samadengan==
Tepatsamadengan(bermanfaatuntukpembandinganstringkarakter)atau#
Tidaksamadengan Lebihbesardariatausamadengan$
Pembandinganstring
Beberapacontohungkapanyangmelibatkanoperatorrelasidapatdilihatpadatabel3.2.
Tebl3.2.Contohpembandingandenganmemakaioperatorrelasi
Ekspresi Hasil Keterangan
A>B .F.
MenuruttabelASCII,AterletaksebelumB,jadinilaiAlebihkecildaripadaBA1
.T. Nilai2memanglebihbesardaripada1Yogya=YOGYA .F.
HurupkecilberbedadenganhurupkapitalABCD=ABC .T.
JikaSETEXACTdalamkeadaanOFFABCD=ABC .F.
JikaSETEXACTdalamkeadaanONABCD==ABC .F. Selalu menghasilkan .F.,
tidak tergantung pada
keadaanSETEXACTAB$ABCD .T. StringABadapadaABCDBC$ABCD .T.
StringBCadapadaABCDABCD$AB .F.
StringABCDtidakadapadastringAB{21/12/2000} >{12/11/2000}
.T. Tanggal 21 Desember 2000 memang
lebihbelakangandaripada12Nopember2000
b. OperatorLogika
Operator logika digunakan untuk membandingkan dua buah ekspresi
logika danmenghasilkan nilai .T. (benar) atau .F. (salah). Operator
logika yang disediakan
olehVisualFoxProdapatdilihatpadatabel3.3.
-
111
Tabel3.3.OperatorLogika
Operator Keterangan Format
.NOT. OperatorTidak
.NOT.Hasil.T.jika bernilai.F.Hasil.F.jikabernilai.T.
.AND. OperatorDan
.AND. Hasil berupa .T. hanya jika kedua bernilai.T.
.OR. OperatorAtau .OR.Hasilberupa.T.jikaada yang bernilai.T.
15. FungsiIIF
FungsibernamaIIF()jugadapatbertindaksepertiperintahIF.Formatfungsiiniadalah:
IIF(,,)
Fungsi IIF memberikan nilai jika bernilai .T., atau nilaijika
bernilai.F.
Sebagaicontoh:
IFTotalPembelian>=100000Diskon=1/10*TotalPembelian
ELSEDiskon=0
ENDIF
Dapatdisederhanakanmenjadi:
Diskon=IIF(TotalPembelian>=100000,1/10*TotalPembelian,0)
16. PernyataanDOCASE
PernyataanDOCASEmerupakan alternatif dari IF.. ELSEIF. Format
pernyataan iniadalah:
-
112
DOCASECASE
CASE
OTHERWISE
ENDCASE
Dimana: Bila bernilai .T.,maka saja yang akan
dijalankan. Bilaibernilai .T.,maka sajayangakan
dijalankan. hanyaakandijalankansekiranyatidakada
yangbernilai.T.
BagianOTHERWISEbisatidakdisertakan.Jikabagianinitidakdisertakan,dantak
satupunyangbernilai.T.,makatakadapernyataanyangdieksekusi.
17.MengenalKotakDialog
Kotak dialog digunakan untuk memberitahukan sesuatu informasi
kepada
pemakai,misalnyauntukmenyampaikansuatupesankesalahan.Selainuntukkleperluansepertiini,kotakdialogjugabisadipakaiuntukmelakukansuatukonfirmasiterhadappemakaimisalnya
pemakai perlu menjawab Yes atau No. Sebuah kotak dialog paling
tidakmempunyaisebuahtomboltekan.
a. KaidahMESSAGEBOX
KaidahperintahMessageBoxadalahsebagaiberikut:
MessageBox(,[,[]]
Argumenkeduadanketigabisatidakdisertakan.
Contoh:
MessageBox("TerimaKasih",1+32, "Selesai")
-
113
Hasilnyaadalahsebagaiberikut(Gambar3.1)
Gambar3.1KotakDialog
Padacontohini,stringTerimaKasihmerupakanpesanyangditampilkanpadakotakdialog,stringkarakterSelesaisebagaijudulpadakotakdialog,dan1+32menyatakanjeniskotakdialog(termasukikonyangditampilkan).Dalamhaliniangka1menyatakan
bahwakotakdialogmenampilkanduabuahtomboltekan,yaitutombol
dantombol ,sedangkan32menyatakanjenisikonyangditampilkan
b. NilaiuntukmenentukanJenisKotakDialog
Nilai dasar yang digunakan untukmenentukan jenis kotak dialog
ada enammacam,sebagaimanatercantumpadatabel3.4.
-
114
Tabel3.4.Nilaiyangmenentukantomboltekanyangditampilkanpadakotakdialog.
TipeKotak Tomboltombolyangtersedia Bentuk
0 OK
1 OK,Cancel
2 Abort,Retry,Ignore
3 Yes,No,Cancel
4 Yes,No
5 Retry,Cancel
-
115
c. MESSAGEBOXTanpaArgumenKetiga
Bila memanggil MessageBox tanpa menyertakan argumen ketiga, maka
yangditampilkanadalahkotakdialogyanghanyaberisitomboltekanOK.Contohnya:
MessageBox(Pesan,Judul)
Akanmemberikanhasilsbb.(Gambar3.2)
d. MESSAGEBOXTanpaArgumenKeduadanKetiga
Apabila rgumentkeduadanketigaMessageBox tidakdisertakan,
judulkotakdialogdiperlakukan seperti jika judul tidak diberikan.
Berikut adalah hasil dari
perintahMessageBox(Pesan)(lihatgambar3.3)
e. MenentukanIkonpadaKotakDialog
MessageBox telah menyediakan empat macam ikon yang bisa kita
tampilkan padakotak dialog. Kita dapat menyertakan ikon dengan
menambahkan nilainilai yangtercantumpadaTabel3.5.
Tabel3.3.KotakDialogtanpaargumenkeduadanketiga
Tabel3.2.KotakDialogtanpaargumenketiga
-
116
Tabel3.5.Nilaiuntukmenentukanikonkotakdialog
NilaiIkon Gambar WarnaIkon
16 Merah
32 Hijau
48 Kuning
64 Biru
f. MenentukanTombolDefault
Bila kotak dialog terdiri lebih dari sebuah tomboltekan, maka
tombol terkiri
akandijadikansebagaidefault.Seandainyakitamenghendakilain(bukantombolterkiriyangdijadikan
sebagai default), kita bisa menambahkan angkaangka berikut ke
argumenketigapadaMessageBox.
256untukmenjadikantombolkeduasebagaidefault
512untukmenjadikantombolpertamasebagaidefault
Berikutadalahcontohhasildariperintah(lihatgambar3.4)
MessageBox(Pesan,Judul,1+32+256)
g. MendeteksiTombolyangdiklikolehPemakai
Untuk mengetahui tombol pada kotak dialog yang ditekan oleh
pemakai, nilaipengembalian dari MessageBox perlu diletakan ke
variabel terlebih dahulu. Sebagaicontoh:
Gbr3.4.KotakDialogdengantombolkeduasebagaidefault
-
117
Jawaban=MessageBox(Pesan,Judul,1+32+256)
Setelah pemakai mengklik salah satu tombol, kode dari tombol
bersangkutan
akandiletakankevariabeljawaban.Selanjutnyakitatinggalmemeriksaisivariabeltersebut.
Tabel3.6.mencantumkannilaiyangmewakilitombolyang
dipiliholehpemakai.
Tabel3.6.Kodetombolpadakotakdialog
Nilai Tombolyangdipilih1 OK2 Cancel3 Abort4 Retry5 Ignore6 Yes7
No
Untukmenyeleksi tombol yangdipilih,kitabisamenggunakanpernyataan
IFataupunDOCASE.
ContohdenganIF:
Jawaban=MessageBox(Pesan,Judul,1+32+256)IFJawaban=1&&BerartitomboltombolOkyangdipilih
*MemprosespesanELSE*Membatalkanperintah
ENDIF
h. Informasilebihdarisatubaris
Untukmengatur informasiyangditampilkanpadakotakdialog yang
terdiri lebihdarisatu 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
tersebutsecaraberurutanbiasadipakaiuntukmembuatbarisbaru.
-
118
Amaticontohperintahberikut:
MessageBox(Pesanbarispertama+CHR(13)+CHR(10)+Pesanbariskedua,Judul,1+32+256)
Hasilnyasebagaiberikut(lihatgambar3.5)
i. KelemahanMESSAGEBOX
MessageBox tidak memungkinkan kita mengganti keterangan yang
terdapat
padatombolkotakdialog.Misalnya,kitatidakdapatmengubahkataYesmenjadiYa.
18. MembuatIndeks
Indeks pada tabel berguna untuk mempercepat pencarian suatu
data.
Kecepatanpencariandataberdasarkanindeksakanterasasekalijikajumlahdatasangatbanyak.
Selainuntukkeperluanmencarisuatudata,indeksmembuatdapatdisajikansecaralogika(tidaksecarafisik),baiksecaraurutnaik(ascending,dariAkeZ)ataupunurutturun(descending,dariZkeA).
Indeks bisa dibuat dengan menggunakan perintah MODY atau
MODIFYSTRUCTUREpadajendelacommand.
19. PernyataanSETORDER
Apabila kita membuka suatu tabel, indeks tidak dengan sendirinya
digunakan(walaupunindekssecaraotomatisikutdibuka)
BentukpenulisanSETORDERadalahsbb.:SETORDERTOTAG
Dalamhalini,adalahfieldyangdijadikansebagaiindeks.
Gbr.3.5.KotakDialogdenganduabarispesan.
-
119
20. PencarianRecorddenganSEEK/FIND
Pencarian suatu record tertentu dapat dilakukan dengan cepat
seandainya file indeksdigunakan. Namun, tentu saja data untuk
pencarian record harus sama dengan
fieldkunci.BentukpencariandenganSEEKadalahsbb.:
USEMK.DBFSETORDERTOTAGKODEMKSEEKMK102202?FOUND()
?FOUND() adalah perintah untuk mendeteksi/memeriksa apakah data
yang
dicariditemukanatautidak.Bilahasilnya.T.berartidataditemukan,sedangkanjikahasilnya.F.berartidatatersebuttidakditemukan.
21. PencariansecaraEksak
Bilakitabermaksudmencarisuatudatabertipekarakterpadafieldyangtelahdiindeks,kita
perlumemperhatikan efek dari keadaan SET EXACT. Bila SET EXACT
dalamkeadaanONberartimecaridatayangsamapersisdenganyangdituliskandalamSEEK,sedangkanbilaSETEXACTdalamkeadaanOFF,inibisaberartimencariyanghurupawalnyasepertiyangdituliskandalamSEEK.