Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PREFACIO
Quizás te preguntes por qué se llama también “Los 35 trucos ocultos de Visual
FoxPro”. Permíteme aclarar que este título es solo una “mentira publicitaria”
con el fin de que algunos se puedan animar a leer este manual. Lo lamento
jeje!
Este manual contendrá ejemplos sencillos acerca de las cosas que hacen que
un usuario novato de Visual FoxPro se desespere un poco en su esfuerzo por
aprender.
http://groups.google.com/group/publicesvfoxpro
Por otro lado, el autor posee experiencia en la enseñanza, sobre todo del
idioma Inglés y sabe que las clases aburridas hacen que los alumnos deserten.
Así que si usted es una persona muy sería y aburrida, consiga por favor otro
manual por que este va a ser divertido jeje!..
Por último, se aclara que la idea es que este manual sea continuamente
mejorado con las amables sugerencias que se reciban.
Thenewinquirer01@gmail.com
Saludos!
INTRODUCCIÓN
Muchos que jamás usaron Visual FoxPro tienen la idea de que es un lenguaje que no
ofrece muchas prestaciones y que no merece ser aprendido.
Visual FoxPro, ha sido y sigue siendo, quizás la mejor herramienta RAD (Rapid
Application Development) para el desarrollo de sistemas o aplicaciones para bases de
datos.
Aun hasta el día de hoy, es posible, emprender desarrollos sustentables con Visual
FoxPro, ya que aunque su arquitectura fue concebida para los 32 bits, aun presenta
plena compatibilidad con el Sistema Operativo Windows 7 y ha sido probado con éxito
en algunas versiones beta de Windows 8 como la Consumer Preview.
Te conviene aprender Fox ya que aun sigue siendo una de las herramientas más
productivas para el desarrollo desktop.
Posee además una gran conectividad con los motores de bases de datos más
populares como Oracle, SQL Server, MySQL, PostgreSql, Firebird y muchos más.
Por lo que puedes notar, Visual FoxPro puede trabajar sin problemas con bases de
datos relacionales en el modelo Cliente Servidor.
Si en algún momento, tu cliente no tiene los recursos económicos para pagar por una
estructura Cliente Servidor (Windows Server instalado en un rack de un data center, un
experto de redes que configure la IP fija y supervise el funcionamiento de la red, los
servicios continuos de un DBA(Data Base Administrator), etc), Visual foxPro puede a su
vez ofrecer una solución para estas PYMES.
Visual FoxPro (VFP) posee un excelente motor de manejo de base de datos nativo, que
posibilita el uso compartido de archivos en una red, con una simple arquitectura punto
a punto (la red para trabajo en grupo o red normal de Windows).
Para quien posee un nivel experto en VFP, las posibilidades en el campo del desarrollo
son muy amplias ya que puede explotar la Orientación a Objetos, la interoperabilidad
con diferentes motores de datos, la tecnología Rush More (Correr mas aprisa), el uso
de vistas y cursores nativos de VFP mediante el lenguaje de consultas SQL nativo que
VFP trae embebido, las vistas remotas, la conexión a servicios web y un largo etcétera.
En fin, lo mejor será que empieces a comprobarlo por ti mismo, ya que como dijimos,
la idea de este manual es que aprendas rápido los fundamentos de la programación
con VFP y no “marearte” tanto con cosas avanzadas jeje!
Dicha ventana es muy útil porque podemos hacer pruebas de código en modo
interactivo desde ella.
Si es molesto para ti ver que los comandos que has tecleado siguen sin
borrarse al iniciar VFP 9, teclea lo siguiente en la ventana de comandos:
? ADDBS(JUSTPATH(SET("RESOURCE",1)))
Solo hay que dar click derecho sobre el archivo _command.prg, propiedades y
activar la casilla "Solo lectura"
Tal vez no entiendas mucho de lo que veas ahí, pero conste que el curioso no
fui yo si no tu jeje!
Mi primer prg
CLEAR
R="S"
DO WHILE R="S"
CLEAR
@ 5,35 SAY "PRESIONE UNA TECLA POR FAVOR"
INKEY(0)
@ 10,35 SAY "EL VALOR DE LA ULTIMA TECLA ES:"
@ 10,75 SAY STR(LASTKEY())
ENDDO
CLEAR
RETURN
Con eso puedes incluso, saber el código ASCII de las teclas de función como
F3, F5, F7, etc., las teclas de movimiento de cursor y otras.
Asi que en la cajita del proyecto agrega un nuevo formulario. Estos archivos
tienen extension .scx y el sistema creará otro archivo de respaldo .sct
El texto "Raul Lozano Lopez" debera ser colocado en un control de tipo text.
Si deseas dar valor de inicio a ese control deberás poner ese nombre en la
propiedad "Value" del control text1.
Thisform.txtnombrecliente.value=""
O sea que estamos en el evento Activate del form1 y ahi ponemos esto:
Thisform.Refresh()
El método Release() se usa para colocar código que libere el formulario antes
de salir como Thisform.Release().
Thisform.txtnombrecliente.visible=.F.
Thisform.txtciudadcliente.enabled=.T.
Tipos de Variables
Evento Init
Una Variable Privada está disponible para el procedimiento que la creó y para
cualquier procedimiento que sea llamado por el que la crea o llamado en la
cadena de procedimientos inicializada por el que la crea. Cuando finaliza este
procedimiento, la variable se libera automáticamente.
Ejemplos:
valor será el que tenga de forma privada dentro del módulo, evitando colisiones
con el valor que arrastra de forma global.
Para mayor información acerca del alcance de las variables puedes consultar los
siguientes enlaces:
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=79
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=80
http://fox.wikis.com/wc.dll?Wiki~PublicAndPrivateVariables
http://www.portalfox.com/press/index8.htm
http://vfpx.codeplex.com/wikipage?title=VFP%209%20SP2%20Help%20File
El evento Load del formulario resulta muy útil para declarar configuraciones o
seteos y para poner en uso datos desde el arranque de formularios.
CLOSE ALL Cierra todas las bases de datos, tablas e índices de la sesión de
datos actual.
El evento unload sirve para poner código sobre limpiar y cerrar bases o
tablas antes de abandonar el formulario.
Por lo general se acostumbra usar índices estructurales CDX que son como
contenedores que guardan varios criterios de ordenamiento o etiquetas de
orden.
SET EXCLUSIVE ON
USE Mitabla
USE
SET EXCLUSIVE ON
USE Mitabla
USE Mitabla IN 0 (Alias) Abre una tabla en la siguiente área de trabajo libre
de menor número. Puede agregar un nombre alias, pero sino lo especifica, el
nombre de la tabla será tomado como tal.
CLOSE DATABASES
USE customer IN 0
USE orders IN 0
SELECT customer
BROWSE
SELECT orders
BROWSE
Si estás abriendo las tablas por medio de un grid, es probable de que en alguna
ocasión te marque un error de que el archivo está en uso. Esto puede deberse
a que, como veremos más adelante, Visual FoxPro abre los cursores o tablas en
el entorno de datos y al parecer esto se ejecuta antes del evento Load del form.
Por ello, cuando intentas poner en uso la tabla, te indica que ya está en uso.
Para solucionar esto debes poner algo en el evento Load y Unload que cierre
las tablas antes de que se intente poner la misma en uso. Según tus
circunstancias puedes usar CLOSE DATABASES y CLOSE ALL.
EOF() Determina si el puntero de registro está situado o no más allá del último registro
de la tabla actual o especificada.
SKIP Mueve el puntero de registro hacia adelante o hacia atrás en una tabla.
MANIPULACIÓN DE REGISTROS
Para crear una Base de Datos puede utilizar la ficha Data/Databases y elegir
el botón New/New database del administrador de proyectos de VFP 9.
Para crear una nueva Tabla puede utilizar la ficha Data/Free Tables y elegir
el botón New/New Table
Ejemplo:
CLOSE DATABASES
USE Mitabla IN 0
Select Mitabla
GO BOTTOM
APPEND BLANK
USE
Ejemplo:
CLOSE DATABASES
USE Mitabla IN 0
SELECT Mitabla
GO TOP
USE MinuevaTabla IN 0
SELECT MinuevaTabla
USE
Ejemplo:
SET DELETED ON
USE Mitabla IN 0
GO TOP
IF FOUND()
DELETE
ELSE
ENDIF
Controlar el enfoque
Ejemplo: Thisform.txtcliente.setfocus()
Ejemplo: Thisform.txtcliente.click()
Ejemplo:
Uno de los métodos que pueden ser de gran utilidad para validar que la
información introducida en cierto control cumpla con ciertos criterios
necesarios es el método valid().
Cabe aclarar que el método Valid(), se dispara antes del evento LostFocus()
en la secuencia de eventos, por lo que debe idear una estrategia para
salir de él, pues de otra forma podría obligar al usuario a teclear datos que en
ocasiones no son del todo necesarios y pueden provocar molestia al usuario.
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=26
Select Mitabla
If found()
* Pon aquí tus instrucciones para hacer lo que necesitas
Else
* Enviar aviso de no encontrado
Return 0
Endif