Está en la página 1de 17

EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

México, 23 de marzo de 2012 1


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

PREFACIO

El presente manual está siendo elaborado con el propósito de ayudar a los


principiantes a entender y conseguir iniciar en la programación con el lenguaje
Visual FoxPro.

El autor se considera a si mismo un “novato” así que no esperes leer cosas


avanzadas en este manual o terminarás muy decepcionado jeje!

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!

En realidad VFP tiene cientos de trucos y no son solo 35.

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.

El autor agradece la ayuda que la Comunidad Visual FoxPro en Español le ha


brindado en su esfuerzo por aprender a usar esa poderosa herramienta.

Aprovecho para difundir el enlace de dicha Comunidad:

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.

Pueden enviarlas al email :

Thenewinquirer01@gmail.com

Saludos!

NOTA.-Las marcas y nombres comerciales mencionados en este manual pertenecen a sus


respectivos propietarios.

México, 23 de marzo de 2012 2


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

INTRODUCCIÓN

¿Por qué nos gusta Visual FoxPro?

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.

Nada más lejos de la realidad.

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!

Éxito en tu proyecto de aprendizaje con Visual FoxPro!

México, 23 de marzo de 2012 3


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Para Iniciar Visual FoxPro, haga algo como lo siguiente (dependiendo de la


versión de Windows):

1. Haga click sobre el botón de Inicio.


2. Elija todos los programas.
3. Microsoft visual FoxPro 9.0

Para empezar, te presentamos la Ventana de Comandos.

Dicha ventana es muy útil porque podemos hacer pruebas de código en modo
interactivo desde ella.

Por ejemplo para imprimir en la pantalla de Fox el mensaje “Bienvenido a Visual


FoxPro”, prueba a hacer lo siguiente:

1. Activa la ventana de comandos en el menú Window/Command Window o


presionando el metacomando Ctrl+F2
2. Teclea: ? “Bienvenido a Visual FoxPro” y presiona enter.

Debiste ver el mensaje en la pantalla principal de VFP.

Ahora teclea el comando CLEAR desde la ventana de comandos. ¿Qué tal?..

Ahora, ve directo a la ayuda y prueba los comandos que te interesen:

1. Click en el Menú Help/Microsoft Visual FoxPro Help o presiona F1.

NOTA.- A menos que se indique lo contrario, los ejemplos de este manual se


basarán en la versión 9 de VFP.

TRUCO 1. LIMPIAR LA VENTANA DE COMANDOS EN VFP 9

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)))

Eso nos muestra la ruta donde se encuentra el archivo _command.prg que


debemos convertir a “solo lectura” para evitar que guarde los comandos que
tecleamos.

En mi caso, en una máquina XP, la ruta está oculta en:

C:\Documents and Settings\Miusuario\Datos de programa\Microsoft\Visual


FoxPro 9

México, 23 de marzo de 2012 4


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Solo hay que dar click derecho sobre el archivo _command.prg, propiedades y
activar la casilla "Solo lectura"

TRUCO 2. VER EL CÓDIGO DE LA VENTANA DE COMANDOS EN VFP 9

Si lo que quieres es “husmear” el código que Visual FoxPro pone en la ventana


de comandos mientras el usuario “se pasea” por VFP haz lo siguiente:

MODIFY COMMAND DDBS(JUSTPATH(SET("RESOURCE",1)))+"_command.prg"

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

Una de las ventajas de la programación procedural (o por procedimientos) es la


de generar módulos o subrutinas que pueden ser llamadas desde cualquier
parte del programa, evitando programar código y aprovechando su
reutilización.

Desde la ventana de comandos, haz lo siguiente:

MODI COMM ULTIMA (Enter)

Luego copie y pegue el siguiente código en la ventana del .prg y guárdelo.

* PROGRAMA QUE DETECTA EL NUMERO ASCII DE LA ULTIMA TECLA.

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())

@ 15,40 SAY "REPETIR (S/N):" GET R PICT "@!" VALID R$"SN"


READ

ENDDO

CLEAR
RETURN

Luego ejecute esa rutina tecleando DO ULTIMA desde la ventana de comandos.

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.

México, 23 de marzo de 2012 5


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

ENTENDIENDO LA FORMA VISUAL DE TRABAJAR

En visual Fox, si lo que finalmente deseamos es generar un programa


ejecutable (que funciona aunque no esté instalado VFP), debemos agregar todo
como parte de un proyecto. Así que entra a Visual Fox y crea un nuevo
proyecto.

Lo primero que creamos en un ambiente visual es la interfaz de usuario o la


GUI. Eso equivale a crear las pantallas de captura en los sistemas de modo
texto como Fox o clipper. En visual foxpro (y en casi todo lenguaje de OOP) le
llamamos formulario.

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

Agregando y configurando controles en el formulario

Ya que tienes tu formulario en pantalla y lo has guardado como parte del


proyecto. Ahora tienes que agregar controles a ese formulario.

Ejemplo: Nombre del cliente: Raul Lozano Lopez

México, 23 de marzo de 2012 6


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Nombre del cliente, generalmente sera un control tipo etiqueta que se


arrastra y pega desde el cuadro de controles de formularios que por lo
general aparece a tu lado derecho de la pantalla. Debes hacer click en la
etiqueta y cambiar la propiedad "Caption" en la cajita de propiedades
del objeto que por lo general veras a tu lado derecho de la pantalla.

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.

Si deseas cambiar el nombre desde el código harias esto, generalmente en el


evento Init o Activate, del form1 :

Thisform.text1.value= "Raul Lozano Lopez"

México, 23 de marzo de 2012 7


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Para hacer referencia a los objetos, en VFP tenemos 3 opciones:

THISFORM, sirve para hacer referencia al formulario actual.

THIS, sirve para hacer referencia al control u objeto actual.

THISFORMSET, sirve para hacer referencia al conjunto de forms actual.

También, modificando la propiedad Name del control text1, puedes


cambiarle el nombre del control en el codigo.

Entonces si le cambiaste el nombre al text1 y le pusiste txtnombrecliente, tu


referencia al objeto en el código seria:

Thisform.txtnombrecliente.value=""

El código anterior suele ponerse en el evento Refresh() del objeto formulario


y llamarse al evento cuando se convierte en el formulario activo. Como se hace
eso?... Dale click derecho sobre alguna parte del form donde no haya objetos y
elige codigo. (En VFP9 SP2, no funciona eso. Usa doble click sobre el
control en su lugar).

Arriba dice: Objeto: Form1, procedimiento: Activate.

O sea que estamos en el evento Activate del form1 y ahi ponemos esto:

Thisform.Refresh()

Significa que cuando el form1 se vuelva el formulario activo (porque el usuario


le dio click o recibió el enfoque mediante código), llamará al evento
Refresh().

Y ahi en el Refresh del form1 pondremos el código que limpia el control de


texto al iniciar el form asignándole una cadena de texto vacía.

El método Release() se usa para colocar código que libere el formulario antes
de salir como Thisform.Release().

Activate también puede servir para ocultar o deshabilitar controles al


arrancar el formulario de forma que el usuario no pueda verlos o alterarlos.

Thisform.txtnombrecliente.visible=.F.

Thisform.txtciudadcliente.enabled=.T.

El evento Init se utiliza para declarar variables locales o publicas o desactivar


u ocultar controles desde que arranca el formulario.

México, 23 de marzo de 2012 8


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Tipos de Variables

El alcance de las variables locales es el control o la rutina (función o


procedimiento) de la que forman parte. Para pasar valores desde una rutina a
otra, se puede hacer mediante el traspaso de parámetros. Su sintaxis es la
siguiente:

Local lnVar1, lcVar2

Donde ln, es una especie de “convención” o costumbre para identificar que se


trata de una variable local y numérica y lc, local y tipo carácter. Sin embargo
puedes usar cualquier nombre para tus variables, siempre y cuando no sea una
palabra que VFP use como instrucción interna (palabras reservadas).

El alcance de una variable pública, mejor llamada global, es mucho mas


amplio y puede ser llamada desde prácticamente cualquier parte del sistema.

Uno de los inconvenientes de estas variables es que conservan su valor a lo


largo de la ejecución del programa y pueden originar “colisiones” por arrastre
de dichos valores. Para solucionar eso haga lo siguiente al iniciar una variable
pública utilice el comando Release :

Evento Init

Release Gnvar1, Gcvar2

Public Gnvar1, Gcvar2

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.

No es necesario declarar una variable privada. Basta con inicializar su


valor.

Para hacerlo use el signo igual o el comando STORE.

Ejemplos:

pnVar1=50 o STORE 0.00 to X

pcVar2=space(50) o STORE “Javier Lopez” to pcVar2

pdfechaactual=date() o STORE Date() to pdfechaactual

El comando PRIVATE no se utiliza para declarar variables privadas, sino


para convertir una variable pública en privada, con la ventaja de que su

México, 23 de marzo de 2012 9


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

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:

Alcance en Visual FoxPro - Parte 1

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=79

Alcance en Visual FoxPro - Parte 2

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=80

Public And Private Variables

http://fox.wikis.com/wc.dll?Wiki~PublicAndPrivateVariables

Y recuerda que siempre puedes consultar la ayuda de fox.

Puedes descargar los archivos de ayuda aquí:

Para VFP 8 en Español:

http://www.portalfox.com/press/index8.htm

Para VFP 9 SP2 Corregido por la Comunidad Fox mundial

http://vfpx.codeplex.com/wikipage?title=VFP%209%20SP2%20Help%20File

La traducción de ayuda para VFP9 no se realizó.

México, 23 de marzo de 2012 10


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

TRABAJANDO CON DATOS

El evento Load del formulario resulta muy útil para declarar configuraciones o
seteos y para poner en uso datos desde el arranque de formularios.

Algunas instrucciones de configuración comunes son:

CLOSE DATABASES Cierra la base de datos actual y sus tablas.

CLOSE ALL Cierra todas las bases de datos, tablas e índices de la sesión de
datos actual.

SET DELETED ON Evita que se muestren y tomen en cuenta registros


marcados para su eliminación.

SET DATE FRENCH Configura la fecha con format DD/MM/AAAA.

SET EXCLUSIVE OFF Activa el modo compartido para trabajo en red.

SET SAFETY OFF Evita que aparezcan mensajes de confirmación en la


pantalla, antes de sobreescribir un archivo existente.

El evento unload sirve para poner código sobre limpiar y cerrar bases o
tablas antes de abandonar el formulario.

Comandos y Funciones Comunes para el manejo de datos

Para manejar datos, se recomienda el uso de archivos de índice ya que estos


funcionan tal como un índice de un libro, permitiendo buscar sobre unas
cuantas páginas y una vez que se tiene el número de página ir directamente a
ella, en vez de leer de forma secuencial cada página.

En otras palabras, para efectuar búsquedas rápidas en VFP es imprescindible el


uso de índices. Los índices también permiten ordenar uno o varios campos
en base a un criterio determinado.

Por lo general se acostumbra usar índices estructurales CDX que son como
contenedores que guardan varios criterios de ordenamiento o etiquetas de
orden.

Estos índices se crean una sola vez y se abren automáticamente al abrir


las tablas. Luego, cuando por alguna razón se corrompen, pueden volver a
generarse con la orden REINDEX o bien borrarse y volverse a crear.

Cabe aclarar que las operaciones de creación, borrado y regeneración de


índices son tareas que se efectúan esporádicamente como parte del
mantenimiento y requieren del uso exclusivo, es decir, nadie mas debe estar
usando las tablas.

México, 23 de marzo de 2012 11


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Para crear un índice hacemos lo siguiente:

SET EXCLUSIVE ON

USE Mitabla

INDEX ON ALLTRIM(CampoNombre) TAG CampoNombre

USE

Si deseamos crear un índice de clave compuesta que involucre a mas campos,


hacemos esto:

SET EXCLUSIVE ON

USE Mitabla

INDEX ON ALLTRIM(Nombre)+DTOS(FechadeIngreso) TAG NOMBRE

USE *USE sin parámetros cierra la tabla

Esto último significa que se creará un archivo de índice ordenado primeramente


por el nombre y luego por la fecha de ingreso.

Cuando deseamos utilizar una de las etiquetas de ordenamiento del


archivo de índice .CDX, después de poner en uso la tabla, simplemente
hacemos esto:

SET ORDER TO MiCampoEtiqueta

Ej. SET ORDER TO Nombre

Otras órdenes útiles para el manejo de tablas son:

? Select() Muestra el área de trabajo actual.

? Alias() Muestra el nombre alias de la tabla actual.

? used() Determina si hay una tabla abierta en un área de trabajo específica.

México, 23 de marzo de 2012 12


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

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.

Select Mitabla(Cursor) Selecciona una tabla en el área de trabajo en que


fue abierta.

Ejemplo para abrir tablas:

SET EXCLUSIVE OFF

CLOSE DATABASES

OPEN DATABASE (HOME(2) + 'Data\testdata')

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.

BOF() Determina si el puntero de registro está situado al principio de una tabla.

EOF() Determina si el puntero de registro está situado o no más allá del último registro
de la tabla actual o especificada.

GO TOP Sitúa el puntero de registro en el primer registro de la tabla. Si la tabla tiene


en uso un índice ascendente, el primer registro será el registro con el valor clave más
bajo.

México, 23 de marzo de 2012 13


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

GO BOTTOM Sitúa el puntero de registro en el último registro de la tabla. Si la tabla


tiene activo un índice ascendente, el último registro será aquél con el valor de clave más
elevado.

GO NumDeRegistro Sitúa el puntero de registro en el registro indicado.

RECNO() Devuelve el número del registro actual de la tabla actual o la especificada.

SKIP Mueve el puntero de registro hacia adelante o hacia atrás en una tabla.

MANIPULACIÓN DE REGISTROS

Para poder manipular información es necesario comprender algunos conceptos.

BASE DE DATOS. Es un conjunto de tablas, generalmente relacionadas.

TABLA. Es una colección de información estructurada por filas y columnas.

CAMPO. Vista en renglones y columnas, se referiría a una columna que


contiene información sobre un mismo tipo de dato. Ej. El campo dirección,
contendría todas las direcciones de los clientes.

REGISTRO. Es una fila de información que contiene muchos datos acerca de


una misma entidad. Ejemplo: El registro o fila 7, puede contener el Id, nombre,
dirección, teléfono, etc. de una persona.

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.

O teclear en la ventana de comandos la orden:

CREATE DATABASE NombreBasedeDatos

Para crear una nueva Tabla puede utilizar la ficha Data/Free Tables y elegir
el botón New/New Table

También puede crear una tabla mediante código tecleando CREATE en la


ventana de comandos.

Agregar registros. Para insertar un nuevo registro en la tabla utilice el


comando APPEND BLANK.

México, 23 de marzo de 2012 14


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

Ejemplo:

CLOSE DATABASES

USE Mitabla IN 0

Select Mitabla

GO BOTTOM

APPEND BLANK

USE

Para agregar registros desde otra tabla utilice APPEND FROM.

Ejemplo:

CLOSE DATABASES

USE Mitabla IN 0

SELECT Mitabla

GO TOP

COPY STRUCTURE TO MinuevaTabla

USE MinuevaTabla IN 0

SELECT MinuevaTabla

APPEND FROM Mitabla

USE

Para marcar registros para su borrado utilice DELETE.

Ejemplo:

SET DELETED ON

USE Mitabla IN 0

México, 23 de marzo de 2012 15


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

GO TOP

LOCATE FOR IdCliente=28

IF FOUND()

DELETE

ELSE

WAIT WINDOW ‘No se localizó el ID del cliente’ TIMEOUT 2

ENDIF

Para eliminar un registro del disco duro utilice PACK.

Este PACK solo debe usarse cuando se tiene el modo exclusivo, es


decir, ningún otro usuario está usando las bases de datos o tablas, y
solo con fines de mantenimiento.

Para modificar manualmente registros en las tablas utilice EDIT.

Para visualizar una tabla utilice BROWSE.

Para cerrar una tabla utilice el comando USE sin parámetros.

Controlar el enfoque

El evento LostFocus() le indica a fox que debe hacer cuando el control


pierde el enfoque. (o sea que el usuario hizo click en otro objeto o bien, se
puso el enfoque en otro control vía código).

El método SetFocus(), pone el enfoque en cierto control (como si el usuario


hubiera hecho click sobre el).

Ejemplo: Thisform.txtcliente.setfocus()

El evento GotFocus() le indica a fox que debe hacer cuando un control


recibe el enfoque.

México, 23 de marzo de 2012 16


EL HUMILDE MANUAL DE UN APRENDIZ. (O Los 35 trucos ocultos de Visual FoxPro).

El evento click(), le indica a fox que debe hacer cuando el usuario ( o


mediante código) hizo un click sobre el objeto. Para provocar un click mediante
código sería:

Ejemplo: Thisform.txtcliente.click()

El evento Keypress(), permite colocar el típico código para que al presionar


cierta tecla como F7, se realice una acción como llamar a otro formulario que
contiene generalmente un grid para efectuar búsquedas.

Ejemplo:

Evento Keypress() del form.

ON KEY LABEL F7 Wait Window ‘Se ha presionado F7’ TIMEOUT 2

Como regresar el enfoque al mismo control

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.

Para aprender más acerca de la secuencia de eventos, consulte este artículo:

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=26

El formato para utilizar correctamente el método Valid(), es el siguiente:

Select Mitabla

Locate for CampoaBuscar = This.value

If found()
* Pon aquí tus instrucciones para hacer lo que necesitas

Else
* Enviar aviso de no encontrado

Return 0

Endif

México, 23 de marzo de 2012 17

También podría gustarte