Foxpro Manual Rapido

48
FOXPRO Es un sistema orientado a objeto para la generación de Base de Datos y el desarrollo de aplicaciones. Desde Visual FoxPro podemos crear Formularios , Base de Datos , Informes , Vistas, Proyectos entre otros. Podemos crear los elementos de un proyecto por separado y luego agregarlos a un proyecto existente o crear un proyecto y desde éste ir agregando los elemento que deba contener. Cuando creamos un proyecto debemos crear una carpeta de trabajo en la se guarde el proyecto. Para indicarle a Visual Foxpro en cual directorio debe buscar los archivos del proyecto debemos indicarle el directorio por defecto; en le menú Herramientas en la opción de Opciones en la ficha de Archivos, aparecerá la ruta por defecto el directorio de Vfp cambiamos este directorio por la carpeta en la que está nuestro proyecto y seleccionamos Aceptar. Desde la Ventana de Comandos se utiliza el comando SET DEFAULT nombrederuta por ejemplo: Set default c:\publico\practica (La Ventana de Comandos será explicada mas adelante) CREACION DE LA BASE DE DATOS 1. Ubiquese en la ficha Datos y luego en Base de Datos y presione el botón Nuevo La ventana del Diseñador de Base da datos aparecerá :

description

Computacion

Transcript of Foxpro Manual Rapido

FOXPROEs un sistema orientado a objeto para la generacin de Base de Datos y el desarrollo de aplicaciones.Desde Visual FoxPro podemos crear Formularios, Base de Datos , Informes, Vistas, Proyectos entre otros. Podemos crear los elementos de un proyecto por separado y luego agregarlos a un proyecto existente o crear un proyecto y desde ste ir agregando los elemento que deba contener. Cuando creamos un proyecto debemos crear una carpeta de trabajo en la se guarde el proyecto. Para indicarle a Visual Foxpro en cual directorio debe buscar los archivos del proyecto debemos indicarle el directorio por defecto; en le men Herramientas en la opcin de Opciones en la ficha de Archivos, aparecer la ruta por defecto el directorio de Vfp cambiamos este directorio por la carpeta en la que est nuestro proyecto y seleccionamos Aceptar. Desde la Ventana de Comandos se utiliza el comando SET DEFAULT nombrederuta por ejemplo: Set default c:\publico\practica (La Ventana de Comandos ser explicada mas adelante)CREACION DE LA BASE DE DATOS1. Ubiquese en la ficha Datos y luego en Base de Datos y presione el botnNuevo

La ventana del Diseador de Base da datos aparecer :

Puede utilizar la barra de herramientas del Diseador para el control de la Base de Datos.Descripcin de los botones de la Barra de herramientas (Diseador de Base de Datos):Crear una nueva tabla.Agregar una tabla existenteEliminar una tabla seleccionadaModificar una tabla seleccionadaCreacin de Vistas remotasCreacin de Vistas localesEditar Procedimientos almacenados en la Base de DatosCreacin de Conexiones con vistas remotasExaminar el contenido la tabla (BROWSE)Los nombres de las tablas deben ser de una a ocho caracteres de largo y deben tener la extensin predeterminada .dbf (database file: archivo de Base de Datos)Crear una nueva tabla:

1. Click en el botn de Nueva tabla, aparecer la ventana Nueva Tabla

2. Se selecciona Nueva Tabla, luego aparece la ventana de guardar el archivo, seleccione el directorio y el nombre de la tabla y luego presione el boton de guardar.

La ventana del Diseador de tablas aparecer en pantalla:Esta es la parte mas importante de la tabla, es aqu donde se define la estructura de datos que contendr dicha tabla. El primer paso es definir los campos, tipos, tamao, Formato y Reglas de validacin.a. Definicin de campos:b. Igual que en las versiones anteriores, la definicin de campos es igual. Se introduce el nombre del campo (name) el tipo de datos que soportar (Type) y el tamao. Los nombres de los campos pueden tener hasta 254 caracteres sin espacios en blancoFormat (Formato): Es el formato de salida del campo, ejemplo si fuera nmerico 9,999.99 o si fuera carcter !!!!!!!!!!!!, para que solo acepte mayusculasInput mask (Mscara de entrada): Igual que el Format, lo nico que es para la entrada de datos.Captin (Ttulo): Descripcin mas precisa del campo, es de utilidad al disear los Formularios.c. Definicin del Displayd. Definicin de reglas de validacin a nivel de campoLa validacin son triggers o eventos que se ejecutan a nivel de campo. Ejemplo: una validacin de un campo que solo acepte nmeros positivos. (id > 0)Rule (Regla): Es la regla de validacin, ejemplo: id > 0, si queremos que acepte valores positivos.Message(Mensaje): Es el mensaje personalizado que queremos que aparezca en pantalla a la hora de violarse la regla de validacin del campo. Ejemplo : Solo se aceptan nmeros positivos (nota: el texto debe escribirse entre comillas).Default Value : Valor por defecto del campo. (nota: hay que respetar el tipo de dato delCampo)Luego de hacer la definicin de los campos, pasamos a la definicin de Indices de la tabla, que ser muy importante a la hora de crear las relaciones entre las tablas.Los ndices facilitan la ubicacin en la tabla de un registro especfico as como tambien determinan el tipo de relaciones que existen entre las tablasLos ndices pueden ser CDX o IDX:Los ndices .IDX son ndices compactos se crean: "INDEX ON estado to estado compact" crea un archivo de ndice llamado estado.cdx. Desafortunadamente si alguna vez abre la tabla sin el ndice y aade un registro, ste no se actualizar y tendr que ser recreado.Los ndices .CDX se crean: "INDEX ON estado tag estado" . Estos archivos se abren automticamente junto con las tablas.La estructura interna de los IDX y los CDX es diferente.a. Nombre del Indice (name)b. Introducir el Nombre del archivo ndice. Es conocido tambin como TAG (etiqueta).c. Type ( tipo de Indice)Primary : Llave primaria.Candidate : Llave candidataUnique : Llave nica.Regular : Llave fornea.El ndice Primary o Principal: garantiza que solo se introduzcan valores nicos en un campo y determina el orden en el que se procesan los registros. Cada tabla puede tener nicamente un ndice Principal.El ndice Candidate o Candidato: puede ser un candidato para utilizarse como ndice principal, refuerza la unicidad de los valores.El ndice Unique o Unico: almacena un lista de cada valor nico en la tabla ndices.El ndice Regular o Normal: puede ser utilizado para ordenar y buscar datos en consultas e informes. No refuerza la unicidad de los datosc. Nombre de la ExpresinNombre de los campos que conforman la clave primaria:Ejemplo : id, o si son varios campos : id + lineaNota: si los campos no son del mismo hay que forzarlos al tipo de dato deseado, ejemplo: si id es carcter y linea, entoces el nombre de la expresion sera:Id + STR(linea)STR() convierte de nmero a carcter y VAL() convierte de carcter a nmerico.Despus de detallar los ndices, se define los eventos de La validacin a nivel de registro y los eventos que se ejecuten a la hora de Insertar un registro, de actualizar o borrar.

Visual Foxpro tiene 37.767 espacios de trabajo, llamadas reas de trabajo porque una tabla deber ser seleccionada para volverla la tabla actual. Cuando se inicia Visual FoxPro el rea de trabajo es la 1 por omisin. Para abrir una tabla en el rea de trabajo 1 cuando ninguna otra tabla est abierta, tecleamos en la Ventana de Comandos:USE nombretablaNo necesariamente debe estar en un rea de trabajo para abrir una tabla puede especificar: USE nombretabla IN 3Sin embargo con mas frecuencia se utiliza: USE nombre tabla IN 0 lo que significa encuentre el rea de trabajo siguiente en la que no se encuentre abierta una tabla y abre nombretabla ah.Cuando se utiliza una tabla Visual FoxPro le asigna un alias, un nombre de hasta 10 caracteres con el cual se refiere a ella en el programa, generalmente el alias es el mismo nombre que el de la tablaPara crear una tabla desde la Ventana de Comandos: CREATE < nombretabla>Para modificar una tabla Administrador de Proyectos | Datos | Base de Datos| Tablas | Seleccionamos la tabla | Modificar.Desde la Ventana de Comandos: Use tabla | MODIFY ESTRUCTUREEn Visual FoxPro existe la Ventana de comandos sta funge como la ventana de MSDOS que puede utilizarse desde Windows con la finalidad de permitir utilizar comandos del lenguaje para ejecutar algunas funciones. Por ejemplo desde Windows desde el explorador podemos examinar el contenido de un disckette accin que tambin podemos hacer si abrimos una ventana de MSDOS y tecleamos DIR A:. Es decir a pesar de que se pueden tener acceso a la mayora de los elementos de Visual FoxPro desde el men muchas veces es til simplemente teclear un comando.Para activar la Ventana de Comandos auque ella aparece por defecto en el en el entorno de trabajo tecleamos Ctrl. F2Para agregar registros a una tabla : Administrador de Proyectos | Datos | Base de Datos | Tablas | Seleccionamos la tabla | Examinar y luego en el men Ver | Modo AadirDesde la Ventana de Comandos: Teniendo la tabla activa escribimos APPEND.Para ver los registros de una tabla: Administrador de Proyectos | Datos | Base de Datos | Tablas | Seleccionamos la tabla | Examinar.Desde la Ventana de Comandos: teniendo la tabla activa escribimos BROWSE.En Visual Foxpro los registros de una tabla pueden borrarse lgicamente y fsicamente.Para borrar lgicamente un registro : Administrador de Proyectos | Base de Datos | Tablas | Seleccionamos la Tabla | Examinar luego con el ratn hacemos Click en la primera columna de izquierda a derecha, la columna en la celda seleccionada se colocar de color negro.Desde la Ventana de Comandos: DELETE (Teniendo seleccionado el registro)Para ver los registros de una tabla sin que aparezcan los registros borrados lgicamente:Primero desde la Ventana de Comandos debemos teclear : SET DELETE ON y luego desde el Administrador de Proyectos | Datos | Base de Datos | Tablas | Examinar .Tambin desde la Ventana de Comandos con el comando BROWSESi queremos incluso los registros borrados lgicamente tecleamos en la Ventana de Comandos SET DELETE OFF y luego tecleamos BROWSE.Para desmarcar los registros borrados lgicamente (desde la Ventana de Comandos): Suponemos que anteriormente haban sido borrados los empleados cuyo sueldo era 15000: DELETE FOR sueldo=15000Para desmarcar estos registros : RECALL FOR sueldo=15000Para borrar fsicamente registros de una tabla primero deben estar borrados lgicamenteY luego desde la Ventana de Comandos tecleamos el comando PACK, para utilizar este comando la tabla debe ser abierta en modo exclusivo USE nombretabla EXCLUSIVE .Algunos comandos para manipular tablas:List for cedula="12434213" Muestra en el entorno de trabajo la informacion del registro que cumpla con esta condicin.List fields cedula,nombre. Muestra en el entorno de trabajo todas las cdulas y nombres de la tabla seleccionada.Sum cantidad (suponemos que la tabla activa tiene un campo de tipo numrico llamado cantidad). Muestra en el entorno de trabajo la suma del campo cantidad de la tabla activa.Sum cantidad for cantidad>1000 Obtiene la suma de los campos cantidad de los registros que cumplen con la condicin indicadaCount to Registros for nota>15 (quermos contar los registros de una tabla cuyo campo nota sea mayor a 15 puntos, guardar este total en una variable llamada Registros ) Si luego queremos examinar el contenido de la variable Registros tecleamos ?Registros (signo de interrogacin que cierra y luego el nombre de la variable que queremos examinar)Comandos SEEK y LOCATELos comandos Locate y Seek permiten buscar un registro en particular. Locate funciona en cualquier campo dentro de una tabla ya sea que est indexada o no Seek da por hecho que la clave que est buscando encaja con el ndice actual.Locate for nombre="Luis" La tabla activa posiciona su cursor el registro que cumpla con esta condicin.Seek("Luis") ERRORSet order to nombre (CORRECTO) Primero se debe activar el ndiceSeek("Luis") y luego hacer la bsquedaLa funcin Set filter:Esta funcin provoca que Visual FoxPro se comporte como si no existieran los registros que no coinciden con la expresin de filtro, y en las operaciones que se realicen solo se tomarn en cuenta las registros que cumplen con la condicin del filtro actual.Set filter to nota=15Para desactivar un filtro colocamos set filter to y paraComo moverse en una tabla de VFP Skip mueve el puntero hacia delante un registroSkip - 1 mueve el puntero hacia tras un registroGo top mueve el puntero hacia el primer registro de la tablaGo bottom mueve el puntero hacia el ltimo registro de la tabla.Go 3 mueve el puntero hacia el registro #3 de la tablaOperaciones Ciclcas:Existen una cantidad de mecanismos de ciclos que puede utilizar para moverse a travs de una tabla. El principal es SCANPor ejemplo:Select Cliente (No hay necesidad de hacer go top)ScanSueldo=sueldo + 5000EndscanLas lneas de cdigo entre Scan y Endscan se ejecutarn 1 vez por cada registro de la tabla.Lo mismo se puede hacer con :Select ClienteGo topDo While not eof()Sueldo=sueldo+5000SkipEnddoLa instruccin FOR:For i=1 to 10Cont=cont+1;endforPara eliminar una tabla:Para eliminar una tabla con los indices principales, valores predeterminados y reglas de validacin asociadas a la tabla use el comando DROP nombretabla por ejemplo:Open Database inscripcionesDrop table alumnosUso de Funciones:Str() convierte a StringVal convierte a nmeroDate() devuelve la fecha del sistemaHoy=Date()GetDir() Obtiene el directorio por defectoCd GetDirImprime el da de la semana?Dow(Date())Len() Devuelve el nmero de caracteres de una expresin de caracteresRecno() Obtiene la posicin de un registroPara cerrar abierta en el rea de trabajo actual utilizamos el comando USEUso de Procedimientos y Funciones:Procedure Nombreprocedure*Aqu va el cdigo ejecutableendprocFunction Nombrefuncion*aqu va el cdigo ejecutableendfuncEl valor devuelto de forma predeterminada es verdadero (.t.) pero puede utilizarse el comando ReturnFunction semanas(dDate)Return dDate + 14EndfuncSi se incluyen los procedimientos y funciones en un archivo de programa disttinto, podr hacer accesibles estos procedimientos y funciones desde su programa si utiliza el Set procedure to. Por ejemplo: Si tiene un archivo llamado: FunProc.prg se utiliza el siguiente comando:Set Procedure to FunProc.prgLlamado a un procedimiento o a una fucin:-Utilizar el Do:Do Miproc-Incluir delante del nombre de la funcin un signo (=) e incluir parentesis despues del nombre de la funcin. Por ejemplo=Mifuncion()Envo de valores a un Procedimiento o a una Funcion:Procedure Nombreprocedimiento(eString)*La linea siguiente muestra un mensajemessagebox("Mi proc" + eString)endprocEl paso de parmetros a una funcin es exactamente igual.Para invocar a un procedimiento:Do nombreprocedimiento with parametro =NombreFuncin(parmetro)Con mltiples parmetros:Procedure nombreproc (dDate, eString,Ntimes)*Codigo ejecutableendprocEn la llamada: do nombreproc with Date(), "Hola", 10Comprobacin de Parmetros en un Procedimiento o una funcinFunction Semanas (dDate)If type("dDate")="D"Return dDate + 14ElseMessagebox("Requiere un parmetro de fecha")Return{} &&Devuelve una fecha vacaendifendfuncProcedure valores (cStore, dDate2, nDatos)If parameters() 100and dept_id IN (41,10,50)seleccionar el apellido, del empleado, id del depto, y el nombre del depto.select a.nombre AS empleado,b.id,b.nombre AS deptofrom s_emp a,s_dept bwhere a.id = b.dept_idSeleccionar el apellido del empleado, no del depto, el nombre deldepto para los depto que esten entre 20 y 50 sin incluirlos.select a.nombre AS empleado,b.id,b.nombre AS deptofrom s_emp a, s_dept bwhere a.id = b.dept_idand b.id > 20 and b.id < 50seleccionar el nombre del empleado no. del depto, nombre del depto, para los deptos que comiencen con 4 y ordenados el numero de depto y nombre del empleado descselect a.nombre AS empleado,b.id,b.nombre AS deptofrom s_emp a,s_dept bwhere a.id=b.dept_idand ALLTRIM(STR(b.id)) like '4%'order by a.nombre asc,b.idSeleccionar el nombre del cliente para aquellos empleados que el no del depto sean 30, 40, 41, 42 y el ( salario sea mayor que 1000 o el depto sea 50 )select a.nombre AS cliente,b.nombre AS empleado,b.salario,b.id,b.dept_idfrom s_customer a,s_emp bwhere a.emp_id=b.idand b.dept_id IN (30,40,41,42)and (b.salario > 1000 or b.dept_id='50')Otra soluccion:select a.nombrefrom s_customer awhere a.emp_id IN (Select idfrom s_empwhere dept_id in (30, 40,41,42)and (salario > 1000 or dept_id=50 )Seleccionar el nombre del cliente, nombre de region y el salario para todos los empleados que el salario sean mayor que 100select a.nombre AS empleado,b.nombre AS depto,a.salariofrom s_emp a,s_dept bwhere a.dept_id=b.idand a.salario > 100Funciones de grupossalarios minimos y maximos de los empleadosselect max(salario) sal_max,min(salario) sal_minfrom s_empSuma, maximo, minimo salario por Departamentoselect dept_id,sum(salario),max(salario),min(salario)from s_empgroup by dept_id*---select dept_id,count(dept_id)from s_empgroup by dept_idhaving dept_id > 20*---select dept_id,sum(salario)from s_empgroup by dept_idhaving sum(salario) between 2000 and 4000*--- select avg(salario),min(salario),max(salario),sum(salario)from s_empwhere UPPER(title) like 'SALES%'*---select count(nombre),dept_idfrom s_empwhere dept_id=31group by dept_idSELECT COUNT(ID),DEPT_IDFROM S_EMPGROUP BY DEPT_IDSELECT COUNT(ID),CREDIT_RATINGFROM S_CUSTOMERGROUP BY CREDIT_RATING*---- SELECT SUM(SALARIO), CARGOFROM S_EMPWHERE upper(TITLE) NOT LIKE 'VP%'GROUP BY CARGO*---- SELECT SUM(SALARIO), TITLEFROM S_EMPGROUP BY TITLE*----SELECT TITLE, SUM(SALARIO)FROM S_EMPWHERE UPPER(TITLE) NOT LIKE 'VP%'GROUP BY TITLEHAVING SUM(SALARIO)> 5000*----Formularios SencillosUn Formulario Sencillo, es el que es realizado generalmente utilizando una sola tabla.Un ejemplo tpico de formularios sencillos son las pantallas de los catlogos de un Sistema, que solamente tienen la funcin de registrar, modificar, eliminar y consultar datos de una tabla.Por ejemplo vamos a construir una forma sencilla utilizando el Wizard de Visual Foxpro:1. Abra su proyecto2. Ubquese en la pestaa de documentos (document) y luego en Formas (Forms).3. Presione el Botn Nuevo (New). Aparece la siguiente ventana:

4. Seleccione Wizard.5. Seleccione Form Wizard y OK.6. Luego aparece la ventana donde usted escoge la tabla a utilizar y los campos de esa tabla.7. Una vez seleccionado la tabla y sus respectivos campos, presiones prximo (Next).8. Se visualizar la siguiente ventana:10. Seleccione el estilo de la forma y el tipo de botones a utilizar en la forma y luego presione prximo (Next).11. Aparecer la siguiente ventana:Para visualizar todas las imgenes faltantes haga click en el menu superior "Bajar Trabajo".12. Seleccione el ordenamiento de la tabla, aqu por lo general se selecciona el ndice de la tabla ( los ndices aparecen con asterisco *)

13. Introduzca el titulo de la forma y luego Finalizar (Finish)Visual Foxpro Generar la forma, luego usted puede modificar la forma si lo desea.La forma, que creamos con el wizard, quedara de esta forma:Nota: Reconstruya el proyecto en la opcin Build (botn del proyecto). Luego Seleccione Rebuild Proyect y OK. Visual Foxpro, compila su proyecto.Notar que en la pestaa de clases de su proyecto Visual Foxpro le ha agregado una clase que l ocupa para construir formas con el Wizard, el nombre de la clase es WizStyle.Formularios Maestro - DetalleUn formulario maestro detalles es aquel en que entran en juego dos o ms tablas, las cuales tengan una relacin de uno a muchos. Ejemplo la relacin de s_region con s_dept ( una regin puede tener muchos departamentos).Se pueden construir formas mestro-detalle utilizando el Wizard, sin embargo, nosotros utilizaremos la forma manual para personalizar a nuestro gusto la forma.Pasos para construir una forma maestro - detallePara este ejemplo utilizaremos las tablas s_region y s_dept1. Abra su proyecto2. Ubquese en la pestaa de documentos (document) y luego en Formas (Forms).3. Presione el Botn Nuevo (New).4. Seleccione Nueva Forma en blanco.5. En la forma en blanco presione el botn derecho del ratn y luego Entorno de Datos (Data Environment)

6. Seleccione las tablas s_region, que ser el maestro y luego la tabla s_dept que ser nuestro detalle.

7. Arrastre uno por uno los campos de la tabla s_region a su forma, de tal manera que queden asi:

8. Luego arrastre toda la tabla s_dept al formulario

1. Ahora vamos a modificar las propiedades del Grid que hemos insertado: seleccionan el grid, botn derecho del ratn y luego propiedades. Se sitan en la pestaa datos, para modificar las siguientes propiedades con el fin de establecer la relacin entre las dos tablas:

En la clase se explicaron los procedimientos para Incluir Modificar y Eliminar alumnos a una base de datos de inscripciones. En este este codigo se estan actualizando clientes el cdigo es anlogoBoton Incluir:if thisform.incluir.caption="Incluir"scatter memvar blankthisform.incluir.caption="Guardar"thisform.salir.caption="Cancelar"thisform.text1.enabled=.t. (Recuerden que los texbox poseen nombres que secorresponden con la realidad txtcedula,txtnombre,aunque en este ejemplo no se planteen as debeprogramarse)thisform.text2.enabled=.t.thisform.text3.enabled=.t.thisform.text4.enabled=.t.elseif thisform.text1.value''if thisform.text2.value''if thisform.text3.value''if thisform.text4.value''append blankgather memvarendif (Pueden mostrarse mensajes de validacin de llenar todoslos campos antes de incluir un registro)endifendifendifthisform.incluir.caption="incluir"thisform.salir.caption="Salir"thisform.text2.enabled=.f.thisform.text3.enabled=.f.thisform.text4.enabled=.f.endifthisform.refreshBoton Modificar:if thisform.modificar.caption="Modificar"thisform.text1.enabled=.f.thisform.text2.enabled=.t.thisform.text3.enabled=.t.thisform.text4.enabled=.t.thisform.modificar.caption="Guardar"thisform.salir.caption="Cnacelar"elsegather memvarthisform.text1.enabled=.t.thisform.text2.enabled=.f.thisform.text3.enabled=.f.thisform.text4.enabled=.f.thisform.modificar.caption="Modificar"thisform.salir.caption="Salir"endifBoton Eliminar(Recuerden que en la ayuda de Visual FoxPro est la informacin de la aplicacin de la funcin y/o procedimiento Messagebox)if messagebox("Esta seguro que desea eliminar este cliente",36,"Confirmacion")=6(Implementada como funcin)deletepackmessagebox("El registro fue eliminado",0,"Aviso")(implementada como procedimiento)scatter memvar blankendifthisform.refreshBoton Salir:if thisform.incluir.caption="Guardar"thisform.text2.enabled=.f.thisform.text3.enabled=.f.thisform.text4.enabled=.f.thisform.incluir.caption="Incluir"thisform.Salir.caption="Salir"elseif thisform.modificar.caption="Guardar"thisform.text1.enabled=.t.thisform.text2.enabled=.f.thisform.text3.enabled=.f.thisform.text4.enabled=.f.thisform.modificar.caption="Modificar"thisform.Salir.caption="Salir"elsethisform.releaseendifendif

Boton Primero:go topm.codigo=clientes.codigom.nombre=clientes.nombrem.telefono=clientes.telefonom.direccion=clientes.direccionthisform.refreshBoton Ultimo:go bottomm.codigo=clientes.codigom.nombre=clientes.nombrem.telefono=clientes.telefonom.direccion=clientes.direccionthisform.refreshBoton Siguienteif eof()thisform.siguiente.enabled=.f.go bottomm.codigo=clientes.codigom.nombre=clientes.nombrem.telefono=clientes.telefonom.direccion=clientes.direccinfrmactcliente.refreshelseskip 1m.codigo=clientes.codigom.nombre=clientes.nombrem.telefono=clientes.telefonom.direccion=clientes.direccionif thisform.anterior.enabled=.f.thisform.anterior.enabled=.t.endifendifthisform.refreshBoton Anteriorif bof()thisform.anterior.enabled=.f.go topelseskip -1if thisform.siguiente.enabled=.f.thisform.siguiente.enabled=.t.endifendifm.codigo=clientes.codigom.nombre=clientes.nombrem.telefono=clientes.telefonom.direccion=clientes.direccionthisform.refreshCreacin de Clases de ObjetosEn Visual Foxpro se pueden crear clases de objetos que pueden de uso muy comn, como por ejemplo el botn salir es muy comun en todas las pantallas.Pasos para creacin de clases:1. Abra su proyecto2. Ubquese en la pestaa de classes.

3. Presione el Botn Nuevo (New).4. Introduzca el nombre de la clase, el tipo de clase (en este caso Boton de comando) y guardarlo como curso.

5. Inmediatamente aparecer la siguiente pantalla:6. Personalice el botn y luego cierre la ventana y slvelo.7. La clase que usted a creado aparecer en la pestaa clases de su proyecto:Cmo hacer uso de la clase :1. 2. presione el botn de ver clases y luego agregar (Add) y seleccione la clase que usted a creado.2. Cree o Abra una forma

3. Aparecer la clase que usted a creado con el botn de salir4. Para poner el botn en la forma, seleccione el botn en la barra de controles y luego clic en la forma.En clase se implement una clase basada en la clase TextBox que cambia el color de fondo y el color de la letra del Textbox cuando el texbox obtiene o pierde el focus ( utilizando los procedimientos LosFocus y GotFocus) de esta manera el usuario identifica mas facilmente el texbox activoCdigo del Procedimiento LostFocus de la clase TxtColor (obtenel el focus)This.backcolor=rgb(0,0,255) (color de fondo azul)This.forecolor=rgb(255,255,255) (color de las letras blancas)Cdigo del Procedimiento GosFocus del la clase TextColor (perder el focus)This.backcolor=rgb(255,255,255) (color de fondo blanca)This.forecolor=rgb(0,0,0) (color de las letras negras)Soporte de Tecnologa ActiveXCuando usted instala Visual Foxpro, se instalan una serie de controles ActiveX soportados por Visual Foxpro.Un ActiveX, no es ms que un control externo, es parecido a una clase ya que las clases se pueden guardar en un archivo (extensin VCX) y los ActiveX tienen extensin OCX. La diferencia es que los VCX solo puede ocuparse en Visual Foxpro, mientras que los OCX se consideran como tecnologa abierta, es decir, pueden ser utilizado por cualquier lenguaje visual como Visual C++ o Visual Basic, por mencionar algunos.Estos controles ActiveX, vienen hechos de fabrica, son comercializables y no son modificables, sin embargo uno puede crear sus propios OCX. Los lenguajes donde se pueden construir estos OCX actualmente son Visual C++ y Visual Basic. En visual Foxpro 5.0 usted no puede crear OCX.Hay que tener mucho cuidado a la hora de comprar un OCX y verificar que lenguajes soporta, por que algunos OCX no son soportados por algunos lenguajes visuales incluso con Visual Foxpro.Cmo hacer uso de los ActiveX en Visual Foxpro:Un OCX es un objeto por lo cual tiene propiedades y eventos implcitos en l.En el curso, utilizaremos dos Controles ActiveX : OutLine control Microsoft Progress Bar ControlOutLine control:El Outline Control se utiliza para hacer Arboles como por Ejemplo: Regiones con departamentos (maestro-detalle)Cmo agregar un ActiveX a la forma:1. Abra o Cree una nueva forma.2. Seleccione Ver clases3. Seleccione ActiveX Control4. Seleccione el control deseado, en este caso el Outline Control y pngalo en la forma.

5. Vamos a crear una forma maestro detalle utilizando el Outline Control. El Outline control presentar la informacin de las Regiones y vamos a agregar un Grid que sern los departamentos, Algo asi:

Completar Cdigo del Outline control:MtodoCdigo

Init*-------------------------------------* Cargar el OCX*-------------------------------------*--------pnIndex = 0THIS.Additem( "Regiones" )THIS.Indent( pnIndex ) = pnIndexSelect s_regionSCANpnIndex = pnIndex + 1datos = ALLTRIM(name)THIS.Additem(datos)THIS.Indent( pnIndex ) = 1THIS.PictureType(pnindex) = 2THIS.ListIndex = pnindexTHIS.ItemData(pnIndex) = RECNO()ENDSCAN

ClickSELECT s_regionGO RECORD THIS.ItemData(THIS.ListIndex)THISFORM.REFRESH()

El ltimo paso es agregar el Grid con la tabla departamentos y luego establecer la relacin con la tabla de regiones.Progress Bar Control:Este control permite hacer una barra de progreso:

Propiedades :PropiedadDescripcin

MaxMximo valor de la Barra (nmerico)

MinMnimo valor de la Barra (nmerico)

ValueValor actual de la barra (nmerico)

Almacenar objetos OLE en la Base de Datos:Con Visual Foxpro se pueden almacenar objetos OLE en la Base de Datos, estos objetos OLE van desde una simple imagen BMP de Paintbruhs hasta un video clip, un documento en Word, una hoja en Excel un grafico.Esto se llama OLE Automation (automatizacin OLE)Qu se necesita para hacer OLE Automation?Muy sencillo: El campo de la tabla debe ser tipo General Utilizar el control OLE Bound Control de Visual Foxpro Utilizar el Comando APPEND GENERALSintaxis de APPEND GENERALAPPEND GENERAL Nombre Campo tipo General[FROM Nombre Archivo][DATA Nombre de Variable][CLASS Nombre de la Clase OLE]FROM : Por si deseamos insertar un Archivo existente en el discoDATA : Si no es un archivo puede ser una variable, entonces se especificaaqu.CLASS : El nombre de la clase de la aplicacin al que esta asociada el archivoo la variable.Toda aplicacin Windows ( Word, Excel, Graph, Paint, WordPad, Block de Notas, Power Point, entre otras) tienen un nombre de clase:Por mencionar algunos nombres de clases:AplicacinNombre de la clase

Paintbrush PicturePAINT.PICTURE

Documento de Word 97WORD.DOCUMENT

Hoja de Calculo de ExcelEXCEL.SHEET

Como conocer el nombre de clase de una aplicacin Windows:1. Cree un formulario nuevo2. Inserte en el formulario el control OLE Container Control

3. Insertar la Aplicacin deseada: (Escoger el objeto y luego OK)4. Luego en las propiedades del objeto insertado buscar la propiedad OLECLASS:Incluir en el Formulario el Objeto OLE:Diseo de ReportesGuia rpida visual:Los informes muestran datos y resumen datos en un formulario impreso o en pantalla. Los dos componentes principales de los informes son los datos y el formato. La fuente de datos del informe puede ser una tabla de base de dato, una consulta o una vista.El primer paso para disear un informe es determinar los datos que se van a mostrar, y el segundo paso es determinar cul va a ser el mejor formato para mostrar ese informe. Puede crear listados que se basen en una nica tabla o en informes complejos.El Generador de Informes es una herramienta flexible y de fcil uso para la creacin, diseo y modificacin de informes.Pasos para Creacin de Informes :I. Seleccin de los datosEsta es la parte ms importante del informe, la seleccin de datos, hay que saber qu es lo que quiere el usuario o que el usuario muestre el diseo del informe que desea, para comenzar a trabajar.Los datos pueden ser simples (utilizando una sola tabla), como listados de regiones, listado de departamentos, entre otros; o pueden ser algo mas complejos (utilizando mas de una tabla) Ejemplo Reportes agrupados, reportes consolidados, etc.Los datos se pueden obtener directamente utilizando las tablas o utilizando SQL para crear cursores, esta ltima es la ms recomendada para una aplicacin multiusuario.Existen varios tipos de informes entre ellos :- Listados (Ej. Listados de regiones)Muestra:-------------------------------id name-------------------------------01 Region 102 Region 2--------------------------------- Grupos con detalles ( o maestro detalles)-------------------------------RegionDepartamento-------------------------------Region 1Departamento aDepartamento bRegion 2Departamento xDepartamento y--------------------------------- Matriciales o consolidados--------------------------------------------RatingRegion Excellent Good Poor--------------------------------------------Region 1 1 2 0Region 2 3 0 1--------------------------------------------Totales 4 2 1--------------------------------------------Creacin de Informes usando el entorno de datos:1. En el administrador de proyectos, seleccione la ficha Documentos.2. Seleccione Informes3. Pulse el botn nuevo4. Pulse el botn nuevo informe.Aparece el generador de informes y al barra de herramientas Controles de informes.5. Seleccione Entorno de datos y seleccione la tabla6. Arrastre los campos a utilizar del entorno de datos en el informe en la parte de detalle7. Introduzca los encabezados del reporte

8. Puede ver como queda el informe con el botn de presentacin preliminar:Presentacin Preliminar :

Men de Reportes

Titulo/Sumario (Title/Summary):Muestra el rea del Titulo y el Sumario del InformeTitulo : Aparece solo en la primera pagina del ReporteSumario : Aparece solo en la ultima pagina del Reporte

Agrupamiento de datos (Data Grouping)El agrupamiento de datos se utiliza para informes maestro detalle.Variables:Las variables son tiles para hacer clculos con los datos del reporte y luego presentarlas en el mismo reporte.Propiedades de los camposCada campo en el Informe posee propiedades :Creacin de Informes usando Cursores SQL:1. Crear el cursor con el comando SELECT..... FROM .....WHERE....2. Crear el Informe manualmente, con los nombres de campos del cursor.3. Correr el Reporte.Ejemplo:* Se define una ventana PersonalizadaDEFINE WINDOW w_Output ;FROM 0,0 TO 25,70 ;TITLE 'Informes - INATEC' ;CLOSE FLOAT GROW ZOOM SYSTEMUSE IN .\data\s_region IN 0SELECT id, nameFROM s_regionINTO CURSOR c_region* Si lo queremos por pantallaREPORT FORM .\report\pp_detalles ;PREVIEW WINDOWS w_output ;NOEJECT NOCONSOLE* Por ImpresoraREPORT FORM .\report\pp_detalles ;TO PRINTER PROMPT ;NOEJECT NOCONSOLE* Hacia un ArchivoREPORT FORM .\report\pp_detalles ;TO FILE PUTFILE() ;ASCII* Cerrar el cursorUSE IN c_regionIntegracin de la AplicacinCreacin de Mens:Gua rpida Visual:Tipos de Mens:Existen dos tipos de mens : men y Shortcut.Creacin de Mens:La creacin de mens es un proceso que conlleva diferentes pasos. Primero, debemos definir las opciones del men y de los submens. Luego, asignar funcionalidad a las opciones de men. Finalmente, generar el programa de mens.Puede l generador de mens de Visual Foxpro para que le ayude a construir mens rpidamente. El Generador de mens le permite definir la estructura y funcionalidad de su sistema de mens a travs de cuadros de dilogo de fcil uso y de listas desplegables que puede utilizar para crear y modificar su sitema de mens.Definicin de las opciones de men.Los mens presentan su aspecto con una lista de opciones para iniciar una actividad. La mayora de los elementos de men muestran submens u opciones adicionales cuando el usuario selecciona uno de estos elementos. Antes de generar un men para una aplicacin, tendr que determinar que selecciones tendr disponibles el usuario final y qu opciones de mens pertenecen a otras opciones de mens (sub menus).Cmo crear un nuevo men1. Aparece la pgina otros con las categoras de archivo de Mens, Texto y Otros.2. Pulse la ficha de otros en el Administrador de proyectos.3. Seleccione mens en la lista de categoras4. Pulse el botn nuevo y escoja si es Menu o un Shortcut4. Introduzca las opciones del menu y luego el resultado del men ( submenu, comando o procedimiento)5. A la derecha del resultado se encuentra la opcin crear o modificar segn el caso. ( crea o modificar los resultados de la opcin del menu).Tipos de Resultados :Submenu : Si el men contiene un submenuComando : Si la opcin de ese men invoca un comando (Ejemplo: DO FORMRegiones, para llamar un formulario;CLEAR EVENT, por lo general va en la opcin Salir)Procedimiento : Si la opcin de ese men invoca varias lneas de comandos ( un procedimiento).Opciones de Men:

En las opciones del men se especifican: Teclas de Acceso directo Mensajes del men Condicin de habilita/No habilitarGeneracin del men :1. En el men escoja la opcin Men.2. Se le pregunta si desea grabar los cambios ( responda que si)3. Luego se le pide que proporcione el archivo de salida del menu ( escoja la ruta y el nombre del archivo, por lo general son extension MPR) y luego seleccione generar.4. Si existe ya el archivo se le pide si desea re-escribirlo ( seleccione que si)Como invocar al men creado:Al generar el men se crea un archivo que por lo general tiene extensin MPR que contiene el cdigo para desplegar el men.La instruccin sera:DO ruta y nombre del archivo MPREjemplo : DO menu.MPR Para volver a re establecer el men por default de Visual Foxpro utilice la instruccin: SET SYSMENU TO DEFAULTCreacin del Ejecutable de la Aplicacin.

Primero se tiene que crear un programa de inicio, al cual se le tiene que decir que ese es el programa que se ejecutara de primero ( esto se hace haciendo clic derecho en el programa que designemos como principal y escoger la opcin main ( principal) del men de opciones)Contenido Ejemplo del programa principal:CLEAR ALL* Variables PublicasPUBLIC w_Output, g_ao, gid_area, g_nivel, g_cambio, g_login_entry ;,g_pass_entry, V_MENU_PRE, V_ERROR, g_acceso* Definicion de Ventana para los ReportesDEFINE WINDOW w_Output ;FROM 0,0 TO 25,70 ;TITLE 'Informes - BCN' ;CLOSE FLOAT GROW ZOOM SYSTEM* AmbienteSET SYSMENU TOSET ECHO OFFSET TALK OFFSET CENTURY ONSET CLOCK STATUSSET DATE britSET DELETE ONSET PATH TO formenu,bmp,prg,dataSET EXCLUSIVE OFFSET SAFETY OFFSET REFRESH TO 5SET REPROCESS TO AUTOMATICSET MULTILOCK ONSET LOCK OFFSET PROCEDURE TO .\prg\utility* Fondo de la Pantalla principal_SCREEN.Picture=".\bmp\fondo.bmp"_SCREEN.WINDOWSTATE=2_SCREEN.CLOSABLE=.F._SCREEN.CAPTION="Formulacin Presupuestaria"* Base de DatosOPEN DATA .\SCOTT\scott SHARED* Llamada al MenuDO .\menu\menu.mprREAD EVENTCLEAR ALLSET SYSMENU TO DEFAULTCreacin del Ejecutable

En el Administrador de proyectos seleccione la opcion Build, luego la opcin build Executable y luego OK. En las opciones es recomendable seleccionar Recompile All y display Error, para recompilar todos sus programas y formularios ; y Por si hay un error mostrarlo al final de la generacin del Ejecutable.Suerte en tu nuevo aprendizaje...Para visualizar todas las imgenes faltantes haga click en el menu superior "Bajar Trabajo".