modul visual foxpro 91
TRANSCRIPT
-
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.