You are on page 1of 35

ManualTe ricoPr cticodeVisualFoxPro6.0 Indice 1.Introducci n 2.Basesdedatos. 3.Programaci n. 4.Formularios 5.Informes 1.Introducci n Enestemanualdaremosaconoceralestudianteellenguajedeprogramacin VisualFoxPro6.0.Sepretende familiarizaralalumnoconelentornodedesarrollodeaplicacionesparabasededatos. VisualFoxProesungestordebasededatos,orientadoalaprogramacin deobjetos.

VisualFoxPropertenecealafamiliaxbaseloquehacequesuprogramaci nseasencilla,estructuradaymasfc ilde entendertantoparaprogramadoresprincipiantescomoprogramadoresexpertos. Nosenfocaremosencincorea sprincipales: Basededatos:Tratasobreeldiseo ,creacin ymanipulaci ndetablaslibresotablasconintegridadreferencial(basede datos) Programci n:Enestaparteseremoscapacesdeidentificaryaplicarlasestructurasb sicasdeprogramaciny conocer aspectossobrelaprogramacinorientadaaobjeto s. Formularios:Aplicaremosconocimientosparalaintegracin deunainterfazconelusuarioybasededatos. Informes:Aprenderemosadisearla ssalidasdelossistemasdeinformaci n,haciendousodelasherramientasqueel programaofrece. SQL:Enestaseccin haremosusodellenguajeSQLparamanipulardatos,creandoas diferentesconsultasovistas. 2.Basesdedatos. Introducci n Enestemanualmostraremoslob sicoperotambinpuede sconsultaralg nlibrodeVisualFoxPropuestodoser paratu desarrollo,enlasbibliotecasoenlaslibrera s.FoxProesunlenguajedemucharapidez,estoloconvierteenun lenguajedelosm sr pidosenelmercado,FoxProestambi nunodeloslenguajesdeprogramacin quecontienemucha potenciaenelmanejodelasbasesdedatos. ConceptosB sicos Basededatosesunconjuntodedatosalmacenadosencamposyregistros,esdecirquelabasededatosesta conformadaporestosdoselementos.As ,porejemplo: Basededatos(Campos) (Nombredelasvariables)NombreEdadSueldo (Registros)Jos Mendoza192,568.52OmarMendoza203,759.45

Loscampossonlosqueestn enverticalylosregistrosllamadostambindato s,sonlosqueestnenhorizontal. ComponentesdeInterfaz Algunasherramientasms utilizadasson: VentanaExaminar:unavista,tipohojadeclcu lo,deunatabla. VentanaC digo:paradesplegarc digoasociadoavarioseventosenlosformulariosycontroles.Cuandouneventose disparaelc digoseejecuta. VentanaDepuraci n:permiteexaminarvariablesdememoriaovalorescamposyestablecerpuntosdeinterrupcin .La ejecucin delprogramasedetienecuandounavariabledememoriaounaexpresin conunpuntodeinterrupci n cambiandevalor. ComandoOpciones(Men deHerramientas):permitecontrolarlaconfiguracindedoce nasdecaracterstica senel entornoFoxPro,incluidostodosloscomandosSET,as comoplanillasybibliotecasdeclases. VentanaPropiedades:permiteestablecerpropiedadesenunabuenacantidaddegeneradores,incluidoslosgeneradores deformularios,informesetiquetasydelasbasesdedatos,tambinprop orcionaaccesoapropiedades,mtodo sycdigo deeventos. AdministradordeProyectos:undiseo completamentenovedosodeFoxProparaWindows,esteadministradorde proyectosadministratodosloscomponentesdeunproyectoencincogrupos:Basesdedatos(conextensin .DBC), tablaslibres(conextensin. DBF),vistaslocalesyremotas,conexiones,etc. Generadordeconsultas:unarecodificacincompleta delRQBE(ConsultaRelacionalEjemplificada),estaherramienta manejatodoslosaspectosdeconstruirunaconsulta. BarrasdeherramientasFoxPro:proporcionaalosgeneradoresaplicacionesm sdeunadocenadebarrasde herramientasparacolocartodalaherramientaparavariastareasjustoalalcancedesusdedos.Adem s,puedesdise ar tuspropiasbarrasdeherramientasenconjuncin conformularios,paraproporcionaralosusuarioselmismotipode accesoinstant neoalasherramientas. Generadores Losgeneradoressonentornosdetrabajoenlosqueseconstruyencomponentesdeunaaplicacin deFoxPro. Enlasiguientelistatemostrarealgunosgeneradores: GeneradordeclasesParaconstruirobjetosreutilizables. GeneradordeBasesdeDatosParaorganizarlosdatosentablasydocumentarlasrelacionesentretablas. GeneradordeformulariosParadisear laspantallasdelaaplicaci n. GeneradordeconsultaParaconstruirconjuntosdedatosutilizadosenreportesyenpantallasdesl olectura. GeneradordeinformesParaconstruirinformesparalapantallaolaimpresora. GeneradordemensC onstruyeelsistemademens queejecutaunaaplicaci n. GeneradordetablasAdministraelformatodelastablasutilizadasenlaaplicaci n. Generadordecuadr culasPermiteaprendercmola sconfiguracionesdelapropiedaddecuadr culadelobjetocontrolan laoperacindel acuadr cula.

Asistentes Sonconjuntodecuadrodedi logosqueteayudanpasoapasoacrearunadeterminadaaplicacin, porejemploun formulario,etc. Asistenteparaformularios:Construye"Pantallasinstantneas" conlaestructuradelastablasbasndo seenclases prediseada s,incluidosefectosespecialesenlaspantallasybotonesdenavegacin nterconstruidos. Asistenteparadocumentacin: Documentalaaplicacin. Asistenteparainformes:Diseainformes, sencillosocomplejos,utilizandounpocom squelaestructuradelastablas. Asistenteparatablas:til parahacertablassencillas BarrasdeHerramientas Elprop sitodequehayanestasbarrasesparahacerteunpocom sf cileltrabajo,esdecirqueelusoqueledar ala ventanadecomandosser unpoquitoreducido. Paletadecolorescreoqueteimaginasqueeslabarradeloscoloresenfunci nRGB.BuenoRGBsignifica(Rojo, VerdeyAzul) Generadordebasesdedatosenestabarrasemanejanelentornodedatos,iconospara:crear,agregar,yquitarunatabla as ,comotambi nmodificar,vistaremotaolocal,examinarunatablaoeditarprocedimientosalmacenadosenel contenedordelabasededatos. Generadordeformulariosestabarratepermiteelpasorpido deunoaotroentrevarioselementosusadoseneldiseo depantallas:elentornodelosdatos,laventanapropiedades,laventanacdigolabarraC ontrolesdeformularios,la paletadecolores,labarradeherramientas.Distribucin,entreotro s. PresentacinP reliminarparaqueunavezdiseadouninformepueda sapreciarlocomotequedar ysinotegustapueslo podr smodificar. Estnda rEstelover scuandoiniciesFoxPro,proporcionaaccesoalgeneradordeformulariosyalGeneradorde informes,abasesdedatosdeimpresin consultantablas,conexiones,vistas,etiquetas,programas,clases,archivosde textoymen s. AdministradordeProyectos Estosproyectosestnintegrado sporelAdministradordeproyectos,quienmantienelapistadeloscomponentesdela aplicaci n.Conformeseagregancomponentesaunproyecto,(Estassonlascarpetasonombredelosmen sdel Administrador)FoxProloscolectabajoalgunodelossiguientesencabezados: Datos:lasbasesdedatos(ytodosloselementosquepuedendescribir),incluidaslastablas,vistaslocalesyremotas, conexionesyprocedimientosalmacenados,as comotablaslibresyconsultas. Documentos:formularios,etiquetaseinformes. Bibliotecasdeclases:repositoriosdeobjetosusadosenlaaplicacin. C digo:losarchivosconextensin. PRGquecontienenc digoquenoesta sociadoconunformulario,as como bibliotecasAPIyarchivosllamadosporlaaplicaci n. Otros:men s,archivosdetextoyotros,incluyendomapasdebits. Labarradeherramientas

EnFoxProhaymuchosbotones,estosbotonespertenecenalabarradeherramientasdeVFP.Tambinexi stenotras barrasdeherramientas.Sehaceclicenelmen Ver,apareceunasolaopci ndebarrasdeherramientas.S lohazclicen labarraquequieresactivaryaparecer aligualquelaestnda r.Algunasdeestasbarrasyalasvimosanteriormente, r ecuerdas?. Estructuradeun.BDF LosdatosenFoxProsealmacenanenformadetablas,estastablassonlasbasesdedatospueslaextensin deestas basesdedatoses.DBFaunquetambi nhayotrasquesever m sadelante.LosDBFcomienzanconunabreve descripcin delosdatosqueestnenla tabla. EscritoriodeVisualFoxPro ParaingresaraVisualFoxProtienesquepresionarelbotndeinicio /todoslosprogramas/MicrosoftVisualStudio6.0 /MicrosoftVisualFoxPro6.0(versi nwindowsXP). inicio/programas/MicrosoftVisualStudio6.0/MicrosoftVisualFoxPro6.0(versi nwindowsest ndar). Aparecerent upantallalasiguienteventana: EscritoriodeVisualFoxPro Configuraci ndeVisualFoxPro6.0 CuandosecargaFoxPro,leeunarchivollamadoCONFIG.FPWeneldirectorioVFP.CONFIG.FPWesunarchivode textoASCIIycontieneinstruccionesqueseleenalmomentodeiniciaryseconviertenenvalorespredeterminadosde lasesi ndeFoxPro. Heaqu algunosdeloselementosquesefijanenlaconfiguracindel sistema: SAFETY=OFF&&noavisaantesdesobrescribirarchivos TALK=OFF&&nodespliegaelprogreso ECHO=OFF&&inicialmentedesactivaelrastreo DEBUG=ON&&habilitaelrastreoyladepuracin RESOURCE=FOXUSER&&eligeunarchivoderecursos RESOURCE=OFF&&noseusehastaquesesolicite COMMAND=DOPROG&&correPROGalinicio Comandosdeconfiguraci n(SET) LosanterioressoncomandosloscualessepuedenmodificarutilizandoloscomandosqueinicianconlainstruccinS ET desdelaventanadecomandos,porej: SETDEFAULTTOA:&&estableceeldispositivoyeldirectorio PorejemplosilosarchivosquesevanautilizarseencuentraneneldirectorioC:\programas\transmisin \datos, escribiremoselcomandoSETdelasiguienteforma: SETDEFAULTTOC:\programas\transmisi n\datos. Otroscomandosdeconfiguracins on:

SETCENTURYON/OFF SETCLOCKON/OFF SETDATE SETDELETEON/OFF SETECHOON/OFF SETSYSMENU Creacind etablas Disea dordetablas Eldise adordetablasesunaventanadondepodr sdisea rlaestructuradeunarchivodebasededatosotabla. TiposdeCampos Loscamposnodebendecontenercaracteresespeciales,fueradelcar cter"Gui nbajo",ytampocopuedeempezarcon unnmero.P uedensercualesquieradevariostipos: Car cter:Cualquiercosaquesepuedateclear,puedeirenuncampodecaracteres.Uncar ctereslomismoqueunbyte yunbytepuedetenercualquiervalorASCIIhasta255,conunascunta sexcepciones. Num rico:Hastaunlmite de18dgito s,contantascifrasdecimalescomoquieras.Losenterossealmacenaneneste formatoyunnuevotipodedato"moneda"seusageneralmenteparadinero. Flotante:Estenoloutilizaremosenestemanualpuess losirveporcompatibilidadcondBASEV,esequivalenteal formatonumr ico. Fecha:Paraalmacenarlafechaenunformatointernonumrico, perosuvalidacinyrepre sentacins econtrolanconeste tipodecampo. Lg ico: ste,yaseaverdaderoofalso,esrepresentadoporToF,paraverdaderoofalsorespectivamente. Memo:Representadoensuestructuraderegistroscomouncampodecaracteresdelongitud10.Estoscampos almacenanenunasegundatablaconlaextensin. FPT.Puedensercasidecualquiertamao. General:st ostambins oncamposmemos,exceptoqueusualmentealmacenanotrostiposdeobjetosadem sdetexto comogrfi cos. Fechahora:incluyelahoradespu sdelafecha,enelformato[MM/DD/AAhh:mm:ss]. Moneda:Esuncamponum ricoeincluyecuatrocifrasdecimales. Imagen:Usadoparaguardarim genes. Car cterbinario:Camposdecaracteresnosujetosatraduccionesdep ginasdec digos. Memobinario:Camposmemoconlamismacaracter sticaNOCPTRANS. Abrirycerrartablas. ParaabrirunDBFenelrea detrabajo1cuandoningunaotratablaestabierta,tec leeenlaventanadecomando (ventanitapequea queaparecegeneralmentealladoizquierdo): USEnombredelatabla

Nota:Un readetrabajoesunespaciodememoriareservadoparaquealls emanipulenlosdatosdelatabla. Puedeespecificar:USEnombredelatablaIN3perorecuerdaparaabrirocerrarunatablatienequeestaryacreada. Parareservarun readetrabajopuedesdigitar: SELECT0&&0eseln meroderea detrabajo Estecomandotambinp uedeserSELECTnombredelatabla/aliasSELECTesparaseleccionarlatablaatrabajar (abrir,cerrar,modificar,etc.)USEnombredelatabla(yseabrir elcuadrodedialogoabrir,puesFoxPronosabeque tablaabrirdebesabrirlaquenecesites). Sinecesitastenervariastablasabiertaspuedeshacerlosiguiente: SELECTA USEtabla1 SELECTB USEtabla2 SELECTC USEtabla3 Ycuandoquierautilizarunadelastablassolotienesquellamarel readetrabajocomoporejemplosivashautilizarla tabla2escribeenlaventanadecomandosodentrodeunprogramaSELECTB. Paracerrartablasounasesindetabla sabiertaspuedesescribirlossiguientescomandos: CLOSEALL&&cierratodaslastablasabiertas CLOSEDATABASE&&cierralasbasesdedatosabiertas OsimplementeescribeUSE. Diseodetabla s Primerohayquecrearundirectorioparaalmacenartutrabajo(aunqueestonoesnecesarioperosivasatrabajarconun discoflexibleoenundirectoriodistintoalquetraedesignadoFoxProtienesquehacerlo),paraellodigita:MDruta luegoparaqueFoxProtrabajeconestedirectoriodebesdigitar: SETDEFATOruta(nombredeldirectorioquesesuponeyacreasteconelcomandomd). Bienahoratienesvariasopcionesparacrearlatabla: 1.digitaCREATEnombredelatabla. 2.hazclicennuevo(new)luegoseleccionatabla(table)luegodigiteelnombredelatabla. 3.Ctrl+nyseleccionatabla(table)luegodigiteelnombredelatabla Despu stendr squedarleunnombrealatablayloguardasaparecere lgeneradordetablasconlascarpetastablae ndice( siesVFP6.0estar tambi ncampos). Ahorapuedesintroducirelnombre,eltipoylalongituddelcampoenelordencorrecto. Porejemplo: NombreCar cter40

Direcci nCar cter40 CiudadCarc ter22 Saldomonetario8(esteesautomtico) Nooprimasenterporqueelprogramaentenderq uelatablayaestaterminadasiquierespasaradigitarelsiguiente campodebemoverteconlateclatabNOCONENTER.Enseguidaintroducedatosatutabla.SidigitasLIST STRUCTURE(enlaventanadecomandos),vers laestructuradetutablapuedesborrarloscampossidigitasDELETE NEXTnumerodecampo(2porejemplo),ypuedesrecuperarlosidigitasRECALLNEXT2yregresar. AhorapuedesdigitarBROWSEyveraslosdatosqueintrodujistelatabladespu sdecreada, SidigitasSETSCAPEONpodrs deteneralgunosprocesoscuandolodeseescomoelcomandoLISTperoaqu noser necesariopuesseintroducirn pocosdatosenlatabla.tp uedesdigitarLISTyverlosdatosenformarpidalas intaxis deLISTes: LIST|FIELDSlistacampos|TOPRINT|WHILEexpresiondominio|FORexpresiondominio|OFF FIELDdigitaselnombredelcampoocamposavisualizar.TOPRINTenparaenviarlasalidaalaimpresora.FOR seguidodeunaexpresi ndedominio,listasloaquello sregistrosquecoincidanconlaexpresin.ejemploLI STFOR ciudad="SanSalvador"elWHILEseriaLISTWHILEciudad="SanSalvador",elWHILEseutilizaparaoptimizar muchosaspectosdeldesempeodeFo xPro.OFFdesactivalaopcin denumeracin deregistrosdig talosynotar sla diferencia. SumsidigitasSUMsaldotesumartod oslossaldos(registros)almacenadosenestecampo. Cmo moverseenunatabladeFoxPro CuandoutilizamosinicialmenteunatabladeFoxPro,t est subicadoenelprimerregistrodelatabla.Puedesmover estepunteroderegistroimaginarioalrededordelatabla,endiversasformas: SkipMueveelpunterohaciaadelanteunregistro Skip1mueveelpunterohaciaatrs unregistro GoTOPMueveelpunteroalprimerregistr GobottomMueveelpunteroal ltimoregistroenlatabla Go2Mueveelpunterodelregistroalregistronmero 2. *Pruebaestoscomandosprimerodigitaunodeellosyluegodigitalistyverslos resultados. Practica1 Seg nlasiguientehoja,evalualosdatosquepudanservirpararealizarunatabladeInventario,construyelaestructura, tomandoencuentaalgunosdatosquepuedanenriquecerlatabla. ComputadorasSYSTEMS.A. Inventariofsi coal_____de__________del2001

C digo Descripci n Marca Exist. Precio Costo Precio Venta Proveedor M025 Monitor14" Acer 50 900.00 1080.00 ProcomS.A. M026 Monitor12" Acer 102 850.00 1020.00 ProcomS.A. M027 MonitorRadius Acer 10 1100.00 1320.00 ProcomS.A. CA01 CaseMinitowerDeluxe ADS 300 105.00 126.00 DistribuidoraSalCom CA02 CaseDeskTop ADS 100 125.00 150.00 DistribuidoraSalCom

IMC1 ImpresorColorJET1000 Canon 25 367.00 440.40 ProcomS.A. IMC2 ImpresorcolorJET2000 Canon 15 452.25 542.70 ProcomS.A. Agrega20registrosalatabla. UtilizaloscomandosUse,Browse,ListyDisplay,segnteind iqueelinstructoryanotaentucuadernoloquepasa. Manipulacin deregistros Puedesutilizardiferentestiposdecomandoparamanipularlosdatosdetutabla,estoscomandospuedenutilizarse desdesumodom ssimplehastasuformacompuestautilizandoexpresionesdedominio,porejemplo: LISTFORpa s="ES"&&listalosregistroquepas ="ES" Heaqu algunoscomandosconsusexpresionesdedominio: DISPLAYALL DISPLAYRECORD5 GOTO17 GOTOP GOBOTTOM SKIP3 DELETERECORD6 LISTFORprecio>1200 BROWSEFORprecio>=900.AND.precio<2500 GO6 RECALL PACK ZAP Mencionaremosotroscomandosquesondegranayudaalmomentodemanipularlosdatos:

APPEND Agregaregistrosalabasededatosseleccionada APPENDFROM Agregaregistrosdesdeotratablaalfinaldelosregistrosdelatablaseleccionada COPYFILE Copiacualquiertipodearchivos COPYSTRUCTURE Almacenalaestructuradeunabasededatosenunanuevabase COPYTO Copiadatosdeunabasededatosaunarchivo COUNT Determinaelnmeroderegi stroenlabasededatos DISPLAYFILES Muestrainformacin debasededatos DISPLAYMEMORY Despliegalainformaci ndelasvariablesdememoria DISPLAYSTATUS Despliegainformacin delacondici ndeFOX DISPLAYSTRUCTURE Muestralaestructuradeunabasededatos MODIFYCOMMAND Abreunaventanademodificacin detexto MODIFYSTRUCTURE Modificalaestructuradeunabasededatos REPLACE Actualizalosregistrosenunabasededatos Otrotipodecomandos tilesparalamanipulacindetabla syregistrossonlasFUNCIONES,lascualessedividenen: Cadenasomanejodecaracteres:estegrupodefuncionesgestionaelmanejodecaracteres. Matemticas: permitenefectauaroperacionesconvaloresnumricos . Manejodefechasyhora:seencargadegesstionarlasvariablesdetipofecha. Lg icas:Seencargandeefectuaroperacionesdetipolgico. Funcionesdeconvercindetipo s:conviertesvariablesdeuntipoaotro. Antesdemostrarejemplosdefiniremosdoscomponentesquesehacennecesariosenlamanipulacin dedatos: Constante:Sonvalorespredefinidosquenocambiannuncaporejemplo:valor1=15478,cadena="abcd". Variable:Seutilizancomoidentificadoresdeseccionesdememoriadondeseguardainformaci n,porejemplo: var1=campo1,var2=tabla.campo. Lasvariablessepuedendefinircomo:publicas,privadasylocalesejemplo: PUBLICnombre,apellidos

PRIVATEsueldo Operadoresrelacionales Losoperadoresseutilizanentiempodeejecucinparaunir dosom selementosdellenguaje. Operadoresaritmtico s ()Agrupasubexpresiones **,^Exponenciacin *,/Multiplicacin ydivisin %M dulo(restodeladivisin) +,Sumayresta Operadoresrelacionales <Menorque >Mayorque <=Menoroigualque >=Mayoroigualque =iguala <>,#,= Distintode $Contenidoen AhoratedaremosunosejemplosconfuncionesenVisualFoxPro. *Declaracind evariables cadena1=SPACE(15) cadena2=SPACE(15) nmero= 0 cuenta=0 *Asignaci ndedatos cadena1="abcdefghijkl" *utilizandolafuncin LENparacontareln merodelacadena ?LEN(Cadena1)&&imprimeenpantalla14 ?Cadena2=SUSBTR(cadena1,1,4)&&imprimeenpantallaabad ?DTOC(DATE()) ?SIN(0)

ndices Cuandoseinsertanregistrosenunatablaestosnoseencuentranordenados,paraelloesnecesarioutilizarcomandos quenospermitanordenarlosregistrosdeacordealainformacinque necesitamos. ComandoSORT Clasificaunarchivodebasededatos SINTAXIS SORTTO<archivo>ON<campo>[/A][/D][/C] [,<campo2>[/A][/D][/C]..] [ASCENDING|DESCENDING] [<alcances>] [FOR<expresinlgica1>][ WHILE<expresinlgica2>] [FIELDS<listadecampos>] EJEMPLO: USEpersona SORTTOpersona_ordenadaONnombre USEpersona_ordenada Persona persona_ordenada JuanMartnez RoxanaCuellar MargaritaRosales PedroL pez EduardoGaray EduardoGaray JuanMartnez MargaritaRosales PedroL pez RoxanaCuellar ComandoINDEXON Creaunnd iceenunarchivodend icescompuestosobienunarchivodendices imple. SINTAXIS

INDEXONcampoTOnombredearchivoIDX|TAGetiqueta [OFarchivoCDX][FORexpresin lgica][ COMPACT][ASCENDING|DESCENDING][CANDIDATE|UNIQUE] [ADDITIVE] EJEMPLO: USEpersona INDEXONnombreTOpersona.idx ElcomandoINDEXONcreaunaarchivo ndicellamadopersona.idx,elcualtendre lndice deelarchivopersona. Unamejorformadecrearun ndiceyenelcualFoxtrabajaaunamejorcapacidadescreandounndicecompue sto. INDEXONnombreTAGpersona Delaformaanteriorsecreaunarchivondicepe rsona.CDX. Tambi nsepuedencrearnd icescombinadoscondosom scamposporejemplo:INDEXONUPPER(LEFT (apellido,10)+LEFT(nombre,10))TOnombre. Practica2 Abrelatabladeinventario. Escribelasiguienteinstruccin SORTONcodigoTOinventarioordenado. AplicaunBROWSEyabrelanuevatablayBROWSE,comparaambas. CierralastablasenusoescribiendolasiguientesentenciaCLOSEALL. Haremosunacopiadelarchivoinventario.dbfCOPYFILEinventario.dbfTOinventa.dbf. Ahoraordenaremoslatablapormediodeunnd iceescribiendolasiguientesentenciaINDEXONCODIGOTO CODIGO;leestasdiciendoqueel ndicevahaserpormediodecdigo yqueelarchivondice sellamar CODIGOsolo queesteconextensi nIDX,visualizaelarchivoescribiendoDIR*.IDX. Ahoracierralatablas.YvuelveaabrirlaescribiendoUSEINVENTARIOINDEXCODIGO. BuscaunregistrohaciendousodelcomandoSEEK,delaformasiguienteSEEK<expresin>porejemploS EEK "MO01";recuerdasielcampoesdetiponumriconose lecolocancomillas. AhoraDISPLAY,yverasqueteapareceelregistroquebuscastepormediodelndice. Ejercicio: Creaunatablaqueguardelosdatosdetuscompaero syponunn diceporelcampoquecreasconvenienteypr cticalo anterior. Tambi npuedesindexarunatabla,desdeelgeneradordetablasdeFoxPromarcandolacasillaquesemuestraenla figura: Primerotienesqueseleccionarelcampoqueservircomo ndice,luegoseleccionalafichademodoqueteaparezcala siguientepantalla: Tienesqueelegireltipodedend iceelcualleindicaraalatablaquetipodend icetiene.Lostiposden dicessonlos siguientes: Principal:Noadmitesclavesduplicadas,act acomoreferenteaunregistrodeunatabla,deformaquenopuedehaber dosregistrosconlamismaclave. Candidato:Estendice tampocoadmiteclavesduplicadas.Puedehaberms deunoportabla. nico:Enestendices los eguardanaquellosvaloresqueseandistintosentres,peros admiteregi strosconvalores duplicados. Regular:Eselndicet pico.Admiteclavesduplicadas.

Relacind eTablas Normalizacin La nicayms importantetcn icaeneldesarrollodebasededatoseslacapacidaddeobservarlosdatosyverlabasede laestructuradelosmismos.Altenervariosdatosdesordenadosyorganizarlosendiferentestablasrelacionadasentres, aesteprocesoselellamanormalizacin. Vinculartablas SETRELATIONTO Creaunarelaci nentreunabasededatospadre,laquedeber estarabiertaenelrea detrabajoactualmente seleccionada,yunabasededatoshija,yaabiertaenotrarea detrabajo. SINTAXIS SETRELATIONTO[<expresi n1>INTO<expresin num rica1>|<expresi ncar cter1>] Ejemplo: Pararelacionartablastienesquetenerdoom stablasabiertasendistintas reasdetrabajoyqueporlomenostenganun campoencom n. SELECT1 USEempleadoINDEXempleado.IDX SELECT2 USEdepartamentoINDEXdepartamento.IDX SELECT1 SETRELATIONTOcod_dptoINTO2 Enelejemploanteriorempleadoeslatablapadreydepartamentolatablahija,larelaci ndesedapormediodelcapo encom ncod_dpto. Elgeneradordebasesdedato Almacenainformaci nsobretablas,ndice syotrostemasrelacionados.Uncontenedordebasededatosenverdades unatabladeFoxProconlaextensin .DBC.Suscamposmemorelacionadosest nenunatabladelmismonombreconla extensin .DCT. LosDBCsonesencialmentediccionariosdedatosactivos.Surepresentaci nvisualdeunmodelodedatosdeaplicacin visualesprecisaenladocumentacin ycomunicacindela srelacionesentrelastablasdesusaplicaciones. Lasrelacionesms comunesentretablas: Deunoauno:Ejemplodeunallaveprimariaaotrallaveprimaria. Deunoamuchos:Ejemplodeunallaveprimariaaunaregularofor nea. Pr ctica3.

HaciendousodelosconocimientosadquiridosenAn lisisdeSistemas,normalizatutabladeinventarioyconstruyeuna basededatosdelinventarioqueporlomenostengalastablas:Productos,ProveedoresyMarca.Construyeeldiagrama deEntidadRelacinc onsucardinalidadyrealizalaestructuradelabasededatosenVisualFoxPro. Despu sdequehayasrelacionadolaestructuradetubasededatos,haslasiguientepruebaparaverificarsilabasede datosestabienconstruida. AgregaalatabladeProductos20registros,aladeproveedores3registrosyamarcas12registros,tomandoencuenta quedebendetenerdatosencomnc omoporejemplo: MO25Monitorde14"ACER1080.00ProcomS.A. Paraverificarlarelaci ndelosdatosdeber srealizarlossiguientespasos: Eligeelmen VentanaSesin dedatos. Teaparecelaventanadesesin dedatos,luegoeligeelbotn Abriryseleccionaunadelastablas. Haslomismoconlasotrastablas. Yaabiertaslastablas,seleccionalatabladeproveedoresyhasclicenelbotnR elaciones,luegoseleccionalatabla Marcayeligeelcampoconelcualarmarasturelaci n. Siteapareceelcuadroexpresiones,seleccionaelcampodelatabladelacualarmaraslarelacin. LuegohasclicotravezenlatablaproveedoresydaclicenelbotnR elaciones. Repitelospasosanterioressoloqueestavezeligelatabladeproducto,demodoquealfinalizartequededelasiguiente forma. Ahoraseleccionaelbotn Examinarparacadatablaynavegaenlatablaproveedores,losdatosdelasotrastablas aparecer nrelacionadosconella,delocontrariorevisaturelaci n. Pruebaconlarelacin ProductoMarcaProveedores,MarcaProductosProveedores. 3.Programaci n. Conceptos. Usualmenteseagrupaelc digofuenteenarchivosdeprograma.Unarchivodeprogramaestacompuestodevarias sentencias,queincluyencomandos,funcionesyestructurasdecontroldeflujo. ElcompiladortraduceelcontenidodeestosarchivosdetextoASCIIac digointerpretado.Encuantoelcompiladorha traducidoelcdigof uentecreaunarchivoconextensin .FXPqueeselquevaautilizarapartirdeesemomento.Cada vezqueelprogramadorintroducealg ncambioenelarchivo.PRGelcompiladorcomparalafechadeambosarchivos ycreaunanuevaversincomp iladadelprograma. Haciendoelc digolegible: Espaciosenblanco:Significanrea svaca sdentrodelcd igodeprograma,tambin espacios,tabulacionesolnea s vacas. Sangrado:Sangrareslamejormaneradeoptimizarelcdigo.Es unaprcticacomn sangrardentrodecomandospares anidados,porejemplo: DOEN DDO IF ENDIF SCAN..ENDSCAN DOCASE...ENDCASE WITHEN DWITH Maysc ulasymins culas:Muchosprogramadoresutilizanmay sculasymin sculasparadistinguirentreloselementos delprograma;may sculasparaloscomandosymin sculasparalasvariables. Comentarios:Loscomentariospuedenexistirenunalnea precedidosporunasteriscoydespus deunalneadecdigo, siestnse paradosde&&consecutivos. Continuarlne aslargasdecdigo: Puedecontinuarlnea slargasdec digoenlasiguientel neainsertandoun";"alfinal delal nea. Unadelastcnica sms tiles enlaprogramacins onlosencabezadosdeprograma,porejemplo:

*Nombredelprograma:nombre *Autor:H ctorHernndez *Propsi to:Dibujarcuadrosenlapantalla *Fecha:12/12/2001 ComandosdeAsignacin Paracrearvariablesdememoriaydarlesvaloresalmismotiempo,escribalosiguiente: X=3 STORE"lunes"TOd a Parasolamentecrearlas: PUBLICa,b,c PRIVATEx,y,z LOCALnombre,trabaja DIMENSIONnombres(3) Declaraci ndeVariables. Lasvariablestemporalessepuedendeclararutilizandoloscomandosanteriores, nicamente,hayquetomarencuentala formaenquesevanadeclararoescribir,comoejemplo:Nom_Empleado;NomEmpleado,sisonvariablesdememoria selepuedeanteponerunam x delaformasiguiente,mNom_Empleado;xNom_Empleado,tambins epueden declararvariableshaciendosabereltipodedatosquemanejaporejemplo:cNom_Empleado,nSueldo_Empleado; dFecha_Ingreso,etc. Operadores. Losoperadores+yso n,porsupuesto,usadosparaaa dirysubstraernmero s,perotambi nsepuedenusarencampos decaracteres.Eloperadorm seslabonadosexpresionesdecaracteres,camposovariablesdememoria,deformaque Fred+Smith;producir :FredSmith.Eloperadormenosquitaespaciorezagado. Operadorescclico syramificaciones. Lasoperacionescclica syderamificacin sonlosmecanismosparacrearlal gicadeunprograma,ejemplo: FORI=1TO10 ?I&&Imprimelosnmero sdel1al10 ENDFOR SELECTclientes SCAN ?Clientes.nombre&&Leeunarchivodesdeeliniciohastaelfinal ENDSCAN SELECTclientes

GOTOP DOWHILENOTEOF() ?Clientes.nombre&&Leeunarchivodesdeeliniciohastaelfinal SKIP ENNDO Puedesalirdeestasconstruccionesc clicasencualquiermomentomedianteelcomando:EXIT. LaramificacinenVF escontroladaconlaconstruccinI F..ENDIF,porejemplo: IFI>10 ?[Elcontadorexcedi 10] ENDIF Loscontadoresseutilizanamenudoparasalirdeoperacionesccli cas: L=1 DOWHILEL=LEN(nombrelista) IF[CRUZ]$nombrelista(L) SEEKnombrelista(L) IFnombre=[John] DOprgnombre LOOP ENDIF ENDIF ENDDO Serecomiendaquecuandoseutilizaunoperadorc clico,unoperadorcondicional,ocualquierotrooperadorqueabray cierreunaestructuraseescribaelcomandoprimeroyluegoserealiceelproceso,estoparanoperderseenla programacin . Tiposdecomandos Vamosadividirloscomandosseg nsufuncionalidadenlossiguientestipos: Basededatos:Todoslosquesirvenparamanipularbasesdedatos,tablasycampos. Entorno:EntornodelsistemaoperativoydeVisualFoxPro. Accesocompartidoadatos:Accesomultiusuarioatablasybasededatos. Entradaysalida:Losquepermitenlainterfazentrelacomputadorayelusuario. Programaci n:Losquetienenrelaci nconelentornodedesarrollodeaplicaciones. Funciones SonprocesosinternosprogramadoresquepuedenserllamadosdesdecualquierpuntadeVisualFoxloquediferencia delosmandatosdelasfuncionesesqueestasdevuelvenunvalor.Aceptanunaseriedeparmetro s,ysereconocenpor elusodepar ntesisparaencerrarlosargumentos,porejemploDATE()yTIME().

Lasfuncionessedividendelasiguienteforma: Tiposdedatos Funcionesdemanejodecadenasdecaracteres. Funcionesdeconversindetipo s Funcionesdefechayhora Funcionesdemanejodevaloresnumrico s Funcionesdefinidasporlosusuarios(FDU) Practica4 Realizalossiguientesprogramasutilizandoprogramacins imple(programas.PRG)ydasoluci nalassiguientes situaciones. Desplegarelvaloracobrarporllamadastelefnica slocales,sisecobra$0.09cadallamada,haciendohasta100 llamadas,$0.08por200,$0.07por300y$0.06porms detrescientos,teniendoencuentatambin queporllamadas internacionaleslatarifaesfijade$1.93sisondiurnasy$1.75sisonnocturnas,cadaunadeestastarifasestamedidaen minutos. Calcularlautilidadqueuntrabajadorrecibeenelrepartodeutilidadessis teseleasignacomoporcentajedeunsalario mensualquedependedesuantigeda denlaempresadeacuerdoconestatabla: TiempoUtilidad Menosdeuna o5% de1hastamenos2a os7% 2ao samenosde5ao s10% de5ao sam s15% Determinarlacantidaddedineroquerecibirunt rabajadorporconceptodelashorastrabajadasenunaempresa, sabiendoquecuandolashorasextrasdetrabajoexcedende40,elrestoseconsiderahorasextrasyque stassepaganal dobledeunahoranormalcuandonoexcedende8;silashorasextrasexcedende8sepaganaldoblem sel70%dela horanormal,lashorasextrasnoexcedende55. Realiceunprogramaenelcualpidaelnombrecompletodeunapersonayesteindiquecuantasvocalesycuantas consonantestiene. Realiceunprogramaodiferentesprogramasquepermitaunmantenimientodeunatabladedirecciones. Programaci norientadaaobjetos LaPOOintentaserunmejorsistemaparaeldesarrollodeaplicaciones.Comotodatcnica deprogramacin, sisehace malpuedeserdesastrosa. UnadelasmejorasquesetieneconlaPOOeselpermitirafrontarprogramasm scomplejosydemayortamaoc on menoresfuerzo.Elhechodetrabajarconpeque oselementosbiendefinidos,comosonlosobjetos,nospermiteaislar cadacomponentedelaaplicaci n,delrestoydeesaformaaprovecharenmayormedidanuestroesfuerzo. ElementosdelaPOO Claseyobjeto:laclaseeslageneralizacindelos objetosylosobjetossonlaconcrecin delaclase.Comoejemplo podemosobservarlosbotonesdeunentornogrfico,dondedefinimo squelaclasebot neslageneralizacindela s propiedadesycomportamientosdetodoslosbotonesdelosentornogr ficos. Definirunaclase:lasclasessonladescripci ndeloselementoscomunesdelosobjetosquegeneralizan.Aslas clases sedefinenypuedenserusadasparacrearinnumerablesobjetosdeestetipo.Paradefinirunaclaseutilizaremosuna sencillasintaxisdeVFP. DEFINECLASSNombreClaseASClasebase Parapoderutilizarestadefinicindebe mosincluirlaenunfichero.PRGycargadoconSETPROCEDURETOobien incluirlaalfinaldenuestrofichero.PRG.

Crearunobjeto:yapodemoscrearobjetosbasadoenestaclase,paraelloutilizaremoslasiguienteexpresin: Variable1=CREATEOBJECT("NombreClase") Propiedades:Comohemosdicho,laspropiedadessonlosdatosquemanejanlasclases.Estaspropiedadessedeclaran enladefinicin delaclaseypermanecenentodomomentoasociadosalosobjetosCREADOSbajoesaclase. M todos:elotroelementocaractersticodeuna clasesonlosmtod os.Losmt odossonaccionesquepuedenrealizarlos objetos,esdecir,sonfuncionesoprocedimientosasociadosaestetipoobjeto. Mensajes:Cuandollamamosaunmtododeunobjetos edicequeestamosenviandounmensajealobjetoparaque realiceunadeterminadaacci n. Operadorthis:Cuadovamosautilizarunapropiedadounmtododelacla se,debemosanteponeraloperadorpuntoel operadorTHIS,paraindicarquesetrataranlaspropiedadesdelobjetoquerecibeelmensaje,esdecir,quehasido invocado,ynoparaotro. Laspropiedadesmantienenvaloresdiferentesparacadaunodelosobjetos,perolosmtod oscompartensucdigoentre todoslosobjetosdeunaclase.Unmt odovar aenlamedidaquelaspropiedadesdelobjetoquelollamasondiferentes, porelloestanimportanteeloperadorTHIS. Ocultacin: UnadelasmejorasqueimplementalaPOO,eslaposibilidaddelimitarelaccesoadeterminadas propiedadesom todos.Conelloconseguimosquelautilizacin delaclasesehagadeformaordenada. Laspropiedadesom todosprotegidoss losonutilizablesdesdelosmtodo spertenecientesaestaclaseynopueden usarsedirectamenteporotrosprogramas. Aligualquepodemosprotegerpropiedades,podemosprotegermtodo s.Deestaformapodemosdefinirmtodo sque s loseanusadosporotrosmtodos delaclaseynopuedanserinvocadosapartirdelosobjetosdeestaclase.Paraello bastacolocarlacl usulaPROTECTEDantesdePROCEDURE. Polimorfismo:Cuandorealizamosprogramacine structuradadebemostenercuidadodenollamarconelmismo nombreadosvariablesoadosprocedimientos,sinembargoenlaPOOpodemosllamaraunmtodo oaunapropiedad deunaclasedeigualformaqueunm todoopropiedaddeotra.Estacaracterstica esloquesedenominapolimorfismo. Eventos:Existeunaseriedemtodos especiales,quenormalmentenoseejecutanporserinvocadosdeformaexplcita, comolosquehemosdefinidohastaahora,sinoquepordenominarsedeunaformadeterminadasonlanzadoscuando "pasaalgo",esdecir,cuandoseproduceunevento.Estoseventospuedenserunclic,elmovimientodelratn,u na pulsacin detecla,etc. Conclusiones LaPOOesunconjuntodeconceptosinterrelacionadosquedifcil menteseentiendeunossinlosotros.LaPOOestaqu ynodeber amosignorarlaporms tiempo.Posiblementenoesnecesarioestetipodeprogramaci n,peroesrealmente muyrecomendable,esseguroquenosolucionatodoslosproblemas,peroesmuchom ssencilloeldesarrollo, tendremosqueesforzarnosunpocoalprincipio,peronuestroesfuerzoseverso bradamenterecompensado.En definitivalaPROGRAMACI NORIENTADAAOBJETOesunamejorformadeprogramar. Ejemplo: DEFINEELOBJETOformu formu=CREATEOBJECT("Ejemplo") DEFINEELOBJETOboton formu.ADDOBJECT("boton","boton") formu.SHOW READEVENT

CLASEDELOBJETOformu DEFINECLASSejemploASFORM MOVABLE=.F. CLOSABLE=.F. CAPTION="EJEMPLODEPOO" AUTOCENTER=.T. ENDDEFINE CLASEDELOBJETOboton DEFINECLASSbotonASCOMMANDBUTTON VISIBLE=.T. CAPTION="PRESIONEAQUI" LEFT=125 TOP=65 HEIGHT=100 PROCEDURECLICK IFMESSAGEBOX("ACABASDEUTILIZARPOO",0+48)=1 CLEAREVENT ENDIF ENDDEFINE Findelprograma 4.Formularios Conceptos Objeto:Unainstanciadeunaclasequecombinadatosyprocedimientos.Porejemplo,uncontroldeunformularioen ejecucin esunobjeto. Formulario:Seutilizanparavisualizareintroducircualquiertipodeinformaciny sonelmediodecomunicacinentre elusuarioylosdatos. Propiedades:Unatributodeuncontrol,campouobjetodebasededatosqueseestableceparadefinirunadelas caracter sticasdelobjetoounaspectodesucomportamiento.Porejemplo,lapropiedadVisibleafectaalavisibilidad entiempodeejecuci ndeuncontrol.Puedecambiarlosvaloresdelaspropiedadesdeobjetomediantelaventana Propiedades. Evento:Unaacci n,reconocidaporunobjeto,paralacualpuedeescribircd igoderespuesta.Loseventospuedenestar generadosporunaacci ndelusuario,comohacerclicconelmouseopresionarunatecla,porcdigodeprograma opor elsistema,comoocurreconloscronmetro s. M todo:Unaaccinq ueunobjetoescapazderealizar.Porejemplo,loscuadrosdelistatienenm todosllamados

AddItem,RemoveItemyClearparamantenerelcontenidodelaslistas. Barradeherramientas:Unaseriedebotonesenlosquesehaceclicpararealizartareasfrecuentes.Lasbarrasde herramientaspuedenflotarensupropiaventanaobienpuedeacopladasenlosextremossuperior,inferiorolateralesde laventanaprincipaldeVisualFoxPro.PuedepersonalizarlasbarrasdeherramientassuministradasconVisualFoxPro, as comocrearbarrasdeherramientaspropiasmediantelaclasedebaseToolBarincluidaconVisualFoxPro. Objetosypropiedadesb sicas Form Elformularioesunobjetodetipocontenedor. Losconjuntosdeformulariosacogenaunoom sformularios,oinclusobarradeherramientas.Alahoradeejecutarel conjuntodeformularios,seactivantodoslosformulariosdefinidosenelmismo. Propiedad Uso Caption Ttulodelaventanaoforma Autocenter Centraelformulario ShowTips ParaquesemuestrenlosTooltips Closable Visualizaelbot ncerrardelaventana MaxButton Visualizaelbot nmaximizar MinButton Visualizaelbot nminimizar ControlBox Visualizaelmen decontroldelaventana EventosoM todos Uso Init Sedisparaalahoraqueseinicializantodoslosobjetosdelformulario Load Sedisparaantesqueseinicialicenlosobjetosdelformularios(antesqueelinit) Destroy Sedisparaalcerrarelformulario Unload Sedisparadespu sdeDestroy Vieta sycuadrosdetexto Lasvieta soLabelsseutilizanparaescribiretiquetasalosobjetos.

Propiedad Uso Caption Ttulodelaventanaoforma Alignment Especificalaalinaci ndeltexto Name Nombredelobjeto BackColor Colordefondo ForeColor Colordelaletra EventooMt odo Uso Click Sedisparaaldarclicenelobjeto MouseDown EleventoMouseDownsedesencadenaalpresionarunbotn delmouse MouseUp Ocurrencuandoelusuariopresiona(MouseDown)osuelta(MouseUp)unbot ndelmouse Loscuadrosdetextosirvenparacapturarlosdatosdeloscampos. Propiedades Uso ControlSource Eslavariableonombredelcampoalcualsehacereferencia Value ContenidodelavariableocamporeferenciadoalControlSource Visible Sielcontrolesvisiblealusuario Enabled Sielcontrolestahabilitadoono EventooMt odo Uso Click Sedisparaaldarclicenelobjeto GotFocus Cuandoelcontroltomaelenfoque LostFocus Cuandoelcontrolpierdeelenfoque

Botonesdecomando Uncontrolqueest asociadoauncomando.Cuandohaceclicenelbotn decomandoentiempodeejecucin,el comandoasociadoalbot nseejecuta. Propiedades Uso Captio Etiquetadelcomando Visible Sielcontrolesvisiblealusuario Enabled Sielcontrolestahabilitado EventooMt odo Uso Click Sedisparaaldarclicenelobjeto SetlFocus Elcursorsevaalobjeto LostFocus Cuandoelcontrolpierdeelenfoque Refresh Refrescaelobjeto Init Sedisparaalahoraqueseseinicializaelobjeto Botonesdeopciny casillasdeverificacin UncontrolOptionButtonmuestraunaopcinques epuedeactivarodesactivar. Propiedades Uso ControlSource Eslavariableonombredelcampoalcualhacereferencia Value ContenidodelavariableocamporeferenciadoenControlSource Visible Sielcontrolesvisiblealusuario Enabled Sielcontrolestahabilitadoono EventooMt odo Uso InteractiveChange

Sedisparacuandomodificamoselcampo Init Sedisparaalahoraenqueseinicializaelobjeto Click Sedisparaaldarclickenelobjeto Valid Sedisparadespu sdepresionarEnteroTab,seutilizaparavalidar Refresh Refrescaelobjeto UncontrolCheckBoxmuestraunaXcuandoest activado;laXdesaparececuandoelcontrolCheckBoxsedesactiva. UtiliceestecontrolparaofreceralusuariounaopcindetipoVe rdaderooFalsooS oNo.Puedeusarcontroles CheckBoxengruposparamostrarmltiple sopcionesentrelascualeselusuariopuedeseleccionarunaoms. Tambi n puedeestablecerelvalordeCheckBoxmedianteprogramacin conlapropiedadValue. Listasycuadroscombinados UncontrolListBoxmuestraunalistadeelementosentreloscualeselusuariopuedeseleccionarunoom s.Sielnmero deelementossuperaeln meroquepuedemostrarse,seagregara utomticame nteunabarradedesplazamientoalcontrol ListBox. Sinoseseleccionaningnelemento, elvalordelapropiedadListIndexser 1.Elprimerelementodelalistaes ListIndex0yelvalordelapropiedadListCountsiempreesunom squeelmayorvalordeListIndex. Loscuadrosdelistayloscuadroscombinadospresentanalusuariounalistadeopciones.Deformapredeterminada,las opcionessemuestranverticalmenteenunanicacolumna,aunquetambin puedeestablecermltiples columnas.Siel nmerodeelementos superaalosquesepuedenmostrarenelcuadrocombinadooelcuadrodelista,aparecen autom ticamentebarrasdedesplazamientoenelcontrol.Elusuariopuedeentoncesdesplazarseporlalistahaciaarriba ohaciaabajoodeizquierdaaderecha. Uncuadrocombinadoanal ascaracterstica sdeuncuadrodetextoyuncuadrodelista.Estecontrolpermitealusuario seleccionaropcionessiescribetextoenelcuadrocombinadooseleccionaunelementodelalista. Adiferenciadeotroscontrolesquecontienenunn icovalor,porejemplolapropiedadCaptiondeunaetiquetaola propiedadTextdeuncuadrodetexto,loscuadrosdelistayloscuadroscombinadoscontienenm ltiplesvaloresouna coleccin devalores.Tienenmt odosintegradosparaagregar,quitaryrecuperarvaloresdesuscoleccionesentiempo deejecucin .ParaagregarvarioselementosauncuadrodelistallamadoLista1,elcdigos eracomo elsiguiente: Lista1.AddItem"Par s" Lista1.AddItem"NuevaYork" Lista1.AddItem"SanFrancisco" Loscuadrosdelistayloscuadroscombinadossonunamaneraefectivadepresentaralusuariograncantidadde opcionesenunespaciolimitado. Propiedades Uso ControlSource Variableaquehacereferencia(campodondesealmacenaelvalordelalista) RowSource Tablaoquerydeloselementosdelalista

rowSourceType Tipodelafuente(siestablaoquery) Visible Sielcontrolesvisiblealusuario Enabled Sielcontrolestahabilitadoono BoundColumn Valorqueretornalalisa(n merodelacolumnadeRowsource) BoundTo EspecificasielvalordelalistaestadeterminadoporlosvaloresoporlapropiedadListIndex EventooMt odo Uso Click Sedisparaaldarclicenelobjeto SetlFocus Elcursorsevaalobjeto LostFocus Cuandoelcontrolpierdeelenfoque Refresh Refrescaelobjeto Init Sedisparaalahoraqueseseinicializaelobjeto Cuadr cula Uncontrolquecreaunacuadrculay quelepermitepresentarlosdatosenunformatotabular.Loscontrolesdetipo cuadrc ulacontienenencabezadosdecolumna,columnasycontrolesdecolumna. Propiedades Uso RecordSource Nombredelatabla Visible Sielcontrolesviisiblealusuario Enabled Sielcontrolestahabilitadoono ColumnCount Nme rodecolumnasdelGrid DeleteMark Permiteregistroparaborrar(ApareceenlaparteizquierdadelGrid EventooMt odo Uso

Click Sedisparaaldarclicenelobjeto SetlFocus Elcursorsevaalobjeto LostFocus Cuandoelcontrolpierdeelenfoque Refresh Refrescaelobjeto Init Sedisparaalahoraqueseseinicializaelobjeto Im genes,controlesOLE,timer,Marcosdepgina Uncontrolquelepermiteincluirimgene senunformulario. Hipervinculoconcualquiertipodeaplicacin. UncontrolTimerpuedeejecutarc digoaintervalosperidico sproduciendouneventoTimer. Unmarcodep ginaesunobjetocontenedorquecontienepg inas.Asuvez,lasp ginascontienencontroles.Las propiedadespuedenestablecerseaniveldemarcodepgina,depgina odecontrol. UsodeClases Losdise adoresActiveXpuedenproporcionarinterfacesvisualesparatareasque,deotromodo,requeriranuna gran cantidaddecd igo.Porejemplo,eldiseadorU serConnectionincluidoenlaEdicinEmp resarialdeVisualBasic proporcionaherramientasvisualesparadefinirconsultasdebasesdedatoscomplejas.Entiempodeejecucin,dicha s consultassepuedeninvocarconmuypococdigo. Similitudesentrelosdiseadores ActiveXylosdiseadore sintegrados Losdise adoresActiveXsoncomolosdiseadore sdeformulariosenlossiguientesaspectos: Losdise adoresActiveXproducenclasesapartirdelascualespuedecrearobjetos.Estasclasesaparecenenlaventana Proyecto,igualquelasclasesdeformulario. Lasclasescreadasconundiseado rActiveXtienensuspropiosmdulo sdec digo,enlosquepuedeescribirc digopara losprocedimientosdeeventoproporcionadosporeldiseador. Puedepersonalizarunaclasesiagregapropiedades,m todosyeventosalosproporcionadosporeldiseado rActiveX. Losobjetoscreadosapartirdelasclasesdise adaspuedentenercaracter sticasdiferentesentiempodediseoy en tiempodeejecuci n. Laventanadedise odeldise adorActiveXesttotalmentei ntegradaenelentornodedesarrollo.Puedemodificarsu tamaoy configurarladelamismaformaquelasventanasdediseo incorporadas. PuedeagregaralproyectotantasinstanciasdeundiseadorAc tiveXcomoconsiderenecesario,delamismaformaque puedeagregartantosdisea doresdeformularioscomoquiera. Pr ctica5 Diseaunformulario querepresenteybaucherdenotasyquealescribirlasnotascalculelospromediosfinales.(Puedes mejorarlosilosdatoslosvasalmacenandoenunatabla). Realizaunprogramaquecalculeelpagodeunaplanilladondeelpagom nimoesde$240.00,construyelatablayhas quelosdatossealmacenenenella,tomaenconsideracin, elpagoporhoras,horasextras,losdescuentosnecesariosy lascomisionestomandoenconsideracinlas iguientetabla: Silasventas<$1700.00nohaycomisin

Silasventas>=$1700.00y<$2500.00lacomisin esdel3% Silasventas>=$2500.00y<$3200.00lacomisin esdel5% Silasventas>=$3200.00y<$3700.00lacomisin esdel7% Silasventas>=$3700.00lacomisine sdel10% UtilizandotubasededatosdeInventarioconstruyeelmantenimientorespectivosinutilizarelWIZARD. Combinacin deformulariosydatos Laideafundamentaldeltrabajoconformularioseslacombinacin queestoshacenconlasbasesdedatos,paraello,un formulariosepuedecombinardesdeunatabla,hasta,variasdeellas. Paralograrestacombinacinlos formularioshacenusodelosobjetos,loscualesseasocianalosdatos,elobjetoguarda lareferenciaalastablas,ycuandoelformularioseejecuta,seabrenespec ficamentetodaslastablasasociadasal entornodedatos. Elentornodedatosesdondesedefinenlastablasrelacionadasysusordenesestablecidos. Paralograrunformulariofinalsehacenecesariodeconocerlossiguienteselementos: Pr ctica6 CreaunacarpetallamadaSistemadeclientes,dentrodeellacreaotrassubcarpetasyn mbralasas:dato s,formularios, grf icoseinformes. Utilizandoelm tododecarpetas,teasegurasquetuproyectoseveaordenadoyclasificado. Ahoracadaobjetoquecreesdeesteejemploaseguratque loguardasenellugarindicadodelocontrarionofuncionar debidamente. Creaelproyecto SeleccionaArchivo/Nuevo/Proyecto Gu rdaloenlacarpetaSistemadeclientesconelnombredeClientes. Crealabasededatos Detuproyectoeligelafichadatos/Nuevo Gu rdaloenlacarpetaSistemadeclientes/datosconelnombredeClientes Agregatablas Ahoraagregaraslastablascorrespondientesalabasededatos,seleccionaAgregarnuevatablayadicionacadatabla queacontinuaci ntedamos,tencuidadodegrabarlasconelmismonombreyconlosnombresdeloscamposiguales. Tabla:Clientes ndiceprimario:cod_cliente

Tabla:Distribuidorndiceprimario:c od_distri Tabla:Departamentond icepprimario:cod_dpto

Copialosgrfi cosnecesariosenlacarpetaGr ficos. Relacionalastablas. Cuandoacabesdecrearlastablasrelacionalastablasdemodoquetequedendelasiguienteforma. Diseodeformulario. Ahora,haremoseldiseo delformulario,puedeshacerlodedosformas,laprimeraesabriendoelentornodedatosy arrastrandoloscamposhastaelformulario,ylasegundacolocandocadaunodelosobjetos,luegotucambiasla propiedadControlSourcecolocandoelnombredelcampoalquehacereferencia,eldiseodel formulariopuedeserel siguiente,perotupuedeshacereltuyo. Aseguratq uelastablasenelentornodedatosseencuentrenbienrelacionadas,esdecir:entrelarelacin Clientes DepartamentolapropiedaddelentornodedatosChildAlias=DepartamentoyParentAlias=Clientesyentrelarelacin Departamento DistribuidorlaspropiedadesserianChildAlias=DistribuidoryParentAlias=Departamento.Sitienes algunadudapreguntaatuinstructor. Cambiapropiedadesnecesarias. Cambialaspropiedadesquetesontile s,porejemploFontName,FontSize,BackColoryparaloscuadrosdetextoy cuadrosdeedici ncambialapropiedadEnabled,estaservir paranopoderescribirmientrasnoseledelaordende agregaromodificarregistros. Crearemosunabarradeherramientas. Haremoslabarradecursuras,paraesotuinstructortecopiaralosgrf icosnecesariosentudisco. Primeroenlapartedeabajodelformulario,colocauncommandgroupycambialapropiedadButtonCountconelvalor de4,paraqueaparezcancuatrobotonesdecomando,hasclicderechosobreellayseleccionadelmencontextualque aparecelaopcin modificar,elcuadrosesobrard ecolorverde,estoteindicaquepuedesmodificarlosbotonesque estne suinterior. Cambialaspropiedadnamedecadaunodeellospor:primero,anterior,siguienteyltimore spectivamenteyla propiedadCaptiond jalavaca (oseaqueborralasleyendas). AhoracambialapropiedadPictureybuscaelgrficoque perteneceacadabotn, demodoquetequededelasiguiente forma: Programalosbotonesdelabarra. Bot nprimero: GOTOP THISFORM.REFRESH Bot nanterior: IF.NOT.BOF() SKIP1 ELSE GOBOTTOM ENDIF THISFORM.REFRESH Bot nSiguiente:

IF.NOT.EOF() SKIP1 ELSE GOTOP ENDIF THISFORM.REFRESH Bot n ltimo: GOBOTTOM THISFORM.REFRESH Agregaunbot ncerrar Ahorainsertaunbot nparacerrarlaventanaqueestasprogramando,puedeshacerlocontextoocongrf icos,programa losiguiente: THISFORM.RELEASE Agregaunbot nparabuscarregistros Vamosaagregarunbot nparaquebusqueregistrospormediodelcampon dicecd igodelcliente,paraelloinsertaun contenedorydentrodelunbotn decomandosyuncuadrodetexto,modificalaspropiedadesnecesariasdemodoque tequedecomoelsiguienteejemplo: buscar=0 buscar=VAL(THISFORM.CONTAINER1.txtbuscar.VALUE) SEEKbuscarORDERTAGcod_client; OFC :\HectorHernandez\SistemadeClientes\Datos\clientes.cdx IF!FOUND() ctexto='Registronoencontrado.D eseabuscardenuevo?' ntipodedialogo=4+32+256 ctitulo='Mensaje' *4=BotonesSy No. *32=Iconodelsignodeinterrogaci n. *256=Elsegundobot neselpredeterminado. nrespuesta=MESSAGEBOX(ctexto,ntipodedialogo,ctitulo) DOCASE CASEnrespuesta=6

THISFORM.CONTAINER1.txtbuscar.SETFOCUS() CASEnrespuesta=7 THISFORM.cmdsalir.SETFOCUS() ENDCASE ELSE THISFORM.REFRESH ENDIF Agregalabarrademantenimiento. Hasundiseos imilaralsiguientedentrodeungrupodebotones: Luego,insertadosbotonesm sarribadecmdagregarycmdeditar,demodoquetequededelasiguienteforma: Haestosbotonesprogramalosiguiente: Cmdagregar THISFORM.txtcod_cliente.ENABLED=.t. THISFORM.txtnom_cliente.ENABLED=.t. THISFORM.txtape_cliente.ENABLED=.t. THISFORM.txtnom_negocio.ENABLED=.t. THISFORM.edtdir_cliente.ENABLED=.t. THISFORM.txtcod_dpto.ENABLED=.t. THISFORM.txttele_cliente.ENABLED=.t. THISFORM.txtfax_cliente.ENABLED=.t. THISFORM.txtno_cuenta.ENABLED=.t. THISFORM.commandgroup1.ENABLED=.f. THISFORM.container1.ENABLED=.F. THISFORM.commandgroup2.ENABLED=.F. THISFORM.cmdsalir.ENABLED=.F. THISFORM.cmdguardar.VISIBLE=.T. GOBOTTOM THISFORM.REFRESH contador=THISFORM.txtcod_cliente.VALUE APPENDBLANK

THISFORM.txtcod_cliente.value=contador+1 THISFORM.txtnom_cliente.SETFOCUS THISFORM.REFRESH Cmdguardar ctexto=' Estasegurodegrabarelregistro?' ntipodedialogo=4+32+256 ctitulo='Guardar' *4=BotonesSy No. *32=Iconodelsignodeinterrogaci n. *256=Elsegundobot neselpredeterminado. nrespuesta=MESSAGEBOX(ctexto,ntipodedialogo,ctitulo) DOCASE CASEnrespuesta=6 THISFORM.REFRESH CASEnrespuesta=7 DELETE PACK ENDCASE THISFORM.txtcod_cliente.ENABLED=.f. THISFORM.txtnom_cliente.ENABLED=.f. THISFORM.txtape_cliente.ENABLED=.f. THISFORM.txtnom_negocio.ENABLED=.f. THISFORM.edtdir_cliente.ENABLED=.f. THISFORM.txtcod_dpto.ENABLED=.f. THISFORM.txttele_cliente.ENABLED=.f. THISFORM.txtfax_cliente.ENABLED=.f. THISFORM.txtno_cuenta.ENABLED=.f. THISFORM.commandgroup1.ENABLED=.t. THISFORM.container1.ENABLED=.t. THISFORM.commandgroup2.ENABLED=.t.

THISFORM.cmdsalir.ENABLED=.t. THISFORM.cmdguardar.VISIBLE=.f. THISFORM.REFRESH Cmdborrar mensaje=MESSAGEBOX(" Segurodeeliminarelregistro?",;4+32+256,"Eliminarregistros") DOCASE CASEmensaje=6 DELETE PACK GOTOP THISFORM.REFRESH CASEmensaje=7 THISFORM.REFRESH ENDCASE Cmdeditar THISFORM.txtnom_cliente.ENABLED=.t. THISFORM.txtape_cliente.ENABLED=.t. THISFORM.txtnom_negocio.ENABLED=.t. THISFORM.edtdir_cliente.ENABLED=.t. THISFORM.txtcod_dpto.ENABLED=.t. THISFORM.txttele_cliente.ENABLED=.t. THISFORM.txtfax_cliente.ENABLED=.t. THISFORM.txtno_cuenta.ENABLED=.t. THISFORM.commandgroup1.ENABLED=.f. THISFORM.container1.ENABLED=.F. THISFORM.commandgroup2.ENABLED=.F. THISFORM.cmdsalir.ENABLED=.F. THISFORM.cmdguardare.VISIBLE=.T. THISFORM.txtnom_cliente.SETFOCUS THISFORM.REFRESH

Cmdgrabare THISFORM.txtcod_cliente.ENABLED=.f. THISFORM.txtnom_cliente.ENABLED=.f. THISFORM.txtape_cliente.ENABLED=.f. THISFORM.txtnom_negocio.ENABLED=.f. THISFORM.edtdir_cliente.ENABLED=.f. THISFORM.txtcod_dpto.ENABLED=.f. THISFORM.txttele_cliente.ENABLED=.f. THISFORM.txtfax_cliente.ENABLED=.f. THISFORM.txtno_cuenta.ENABLED=.f. THISFORM.commandgroup1.ENABLED=.t. THISFORM.container1.ENABLED=.t. THISFORM.commandgroup2.ENABLED=.t. THISFORM.cmdsalir.ENABLED=.t. THISFORM.cmdguardare.VISIBLE=.f. THISFORM.REFRESH Ahoracambiaremosalgunaspropiedadesindispensables,alformulariocambiaShowWindor=2comoformulariode nivelsuperior,ShowTips=.t.,yahoracambiaalgunaspropiedadesToolTipsTextparaqueaparezcanalgunas indicacionesalcolocarelpunterodelrat narribadelcontrol. Agregaremosotroformulario. Enelgeneradordeproyectosdisearemo sotroformulariollamadodepartamento: Esteformularioser pequeo ,trataqueenlaposicinque lodisees seadondeenelformularioclientesvayael departamentodelcliente,agregauncontrolGrid(Cuadrcula),ha sclicderechosobreellayseleccionalaopci n Generador. Teaparecer lasiguientepantalla: SeleccionalatablaDepartamento,seleccionaloscampos,luegopasaalafichaestiloyescogeelestiloquequieras, seleccionalafichadistribucin ,escribelosttulo squeall tepidenyporl timolaficharelacin,d ondeescribirs ninguna,porl timodaclichaaceptaryautom ticamentesetegenerarungr idconsusespecificaciones. LuegoaeseformulariocambialapropiedadShowWindor=1enformulariodenivelsuperiorygrbalo. Modificaelcuadrodeedici n. Entraalformularioclientes,seleccionaelformulariolapropiedadINITycopia: PUBLICCODEPAR CODEPAR=0

contador=0 Luegoalcuadrodeedicinenl apropiedadLOSTFOCUSescribe: DOFORM'C:\HectorHernandez\SistemadeClientes\formularios\departamento' LuegoenlapropiedadGOTFOCUSdelobjetotxtcod_dptoescribelosiguiente: THIS.VALUE=CODEPAR THISFORM.REFRESH Ahorapuedesprobartuprograma. Usandoelasistentedeformularios. Conelasistente,creaelmantenimientodedistribuidores. 5.Informes UtiliceelDiseadordeinforme sparacrearymodificarinformes. Paracrearr pidamenteundise osencillodeinforme,elijaInformerpido delmenInforme. Informerpido lesolicitala entradadeloscamposyeldiseoque deseaparasuinforme. Opcionesdelaventana Bandas Deformapredeterminada,elDiseador deinformesmuestratresbandas:Encabezadodepg ina,DetalleyPiedepgina. Enlaparteinferiordecadabandahayunabarraseparadora.Elnombredelabandaapareceenlabarragrisjuntoauna flechaazul,queindicaquelabandaest encima,nodebajo,delabarragris. Puedeagregarlassiguientesbandasasuinforme. Banda Seimprime Contenidotpico Encabezadodecolumna Unavezporcolumna Ttulodecolumna Piedecolumna Unavezporcolumna Resumen,totales Encabezadodegrupo Unavezporgrupo Precedelosdatossiguientes Piedegrupo Unavezporgrupo Valorescalculadosparagruposdedatos Ttulo Unavezporinforme Ttulo Fechaon merodep gina

Logotipodelacompa a Cuadroalrededordelt tulo Resumen Unavezporinforme Totales TextocomoSumatotal Regla ElDisea dordeinformestieneunareglaverticalyotrahorizontalquepuedeutilizarparacolocardeformam sprecisa losobjetosenlasbandas.UtilicelasreglasjuntoconelcomandoVerdelmenMos trarposicin paraayudarleenla colocaci ndelosobjetos. Laescaladelareglavienedeterminadaporlasconfiguracionesdemedidasdesusistema.Puedecambiardelaescala predeterminadadelsistema(pulgadasocentmetro s)apxele sdesdedentrodeVisualFoxPro.Sideseacambiaralvalor predeterminadodelsistema,cambielaconfiguraci ndemedidasdesusistemaoperativo. Paracambiarlaescaladelaregla Cambieestaunidadap xelesdelaformasiguiente: Enelmen Formato,elijaConfigurarcuadr cula.SemuestraelcuadrodedilogoC onfigurarcuadrcula. EnelcuadroEscaladelaregla,seleccioneP xelesyelijaAceptar. Laescaladelareglaseconfiguraap xelesyelindicadordeposicindelabarra deestado(siest activadoMostrar posici nenelmen Ver)tambi nmuestralasposicionesenp xeles. Trabajoenviadopor: RotcehHernandez rotcehHernandez@terra.com

You might also like