Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMANDOS Y FUNCIONES
Antes de comenzar la práctica veremos una serie de comandos y funciones que serán utilizados en
este ejercicio.
CURSORSETPROP():
Sintaxis:
Argumentos:
cPropiedad
eExpresión
Especifica el valor de la propiedad que especifica con cPropiedad. Si omite eExpresión, se establece el
valor predeterminado de la propiedad.
La tabla siguiente muestra las propiedades que pueden especificarse para cPropiedad y una
descripción de los valores que puede adoptar eExpresión.
Esta propiedad se utiliza principalmente para vistas remotas; el hecho de establecerla no tiene ningún
efecto sobre las vistas locales. Sin embargo, puede pre-establecer esta propiedad para vistas locales
que vayan a aumentar de tamaño.
cAliasTabla
nÁreaTrabajo
Especifica el área de trabajo de la tabla o el cursor para los que se establece la propiedad. Si
especifica 0 para nÁreaTrabajo, CURSORSETPROP( ) establece el valor de entorno utilizado para
todas las tablas o cursores subsiguientes.
Ejemplo:
CURSORSETPROP("buffering",5,"ALUMNOS")
CURSORSETPROP("buffering",1,"CALIFICACIONES")
APPEND
Argumentos:
BLANK
Agrega un registro en blanco al final de la tabla activa. Visual FoxPro no abre ninguna ventana de
edición cuando usted ejecuta APPEND BLANK.
Es posible modificar los nuevos registros con BROWSE, CHANGE o EDIT.
IN nÁreaTrabajo
IN cAliasTabla
Ejemplo:
APPEND BLANK
APPEND BLANK IN 1
APPEND BLANK IN ALUMNOS
TABLEUPDATE()
Graba los cambios realizados en una fila o una tabla almacenada en búfer o en un cursor.
Sintaxis
Argumentos:
nFilas
Especifica qué modificaciones se han introducido de las realizadas en la tabla o en el cursor. Si nFilas
es 0 (o .F.) y está activado el almacenamiento de tablas o filas en búfer, sólo se introducirán las
modificaciones realizadas en el registro actual de la tabla o del cursor.
Si nFilas es 1 y está activado el almacenamiento de tablas en búfer, todas las modificaciones
realizadas en los registros se introducirán en la tabla o en el cursor. Si nFilas es 1 (o .T.) y está
activado el almacenamiento de filas en búfer, sólo se introducirán las modificaciones realizadas en el
registro actual de la tabla o cursor.
Si nFilas es 2, los cambios realizados en la tabla o en el cursor se confirmarán como en el caso en que
nFilas 1. Sin embargo, no se producirá un error cuando no se pueda confirmar un cambio y Visual
FoxPro continuará procesando el resto de los registros en la tabla o en el cursor. Si se incluye
cMatrizErrores, cuando se produzca un error se creará una matriz con información acerca del mismo.
El valor predeterminado para nFilas es 0.
Ejemplo:
TABLEUPDATE()
TABLEUPDATE(2)
TABLEREVERT()
Descarta los cambios realizados en una fila o en una tabla almacenada en búfer o en un cursor y
restaura los datos de OLDVAL( ) para cursores remotos y los valores del disco actual para tablas y
cursores locales.
Sintaxis
Argumentos
lTodasFilas
almacenamiento de tablas en búfer, sólo se descartarán los cambios realizados en el registro actual de
la tabla o el cursor.
Si está activado el almacenamiento de filas en búfer, se pasará por alto el valor de lTodasFilas y se
descartarán los cambios realizados en el registro actual de la tabla o el cursor.
El valor predeterminado para lTodasFilas es falso (.F.).
cAliasTabla
nÁreaTrabajo
Ejemplo:
TABLEREVERT(1)
TABLEREVERT(2)
TABLEREVERT(CALIFICACIONES)
DELETE
Sintaxis
DELETE
[Alcance] [FOR lExpresión1] [WHILE lExpresión2]
[IN nÁreaTrabajo | cAliasTabla]
[NOOPTIMIZE]
Argumentos:
Alcance
Especifica un intervalo de registros que desea marcar para su eliminación. Las cláusulas de alcance
son: ALL, NEXT nRegistros, RECORD nNúmeroRegistro y REST.
FOR lExpresión1
Especifica una condición por la cual solamente se marcan para su eliminación los registros que
satisfacen la condición lógica lExpresión1.
Rushmore (tecnología para optimizar la recuperación de datos) optimizará una consulta creada con
DELETE ... FOR si lExpresión1 es una expresión optimizable y la tabla está indexada por DELETED( ).
Para obtener un mejor rendimiento, utilice una expresión optimizable en la cláusula FOR.
WHILE lExpresión2
Especifica una condición por la cual los registros se marcan para su eliminación siempre y cuando
lExpresión2 dé como resultado verdadero (.T.).
IN nÁreaTrabajo
Especifica el área de trabajo de la tabla en la cual se marcan los registros para su eliminación.
IN cAliasTabla
Ejemplo:
MESSAGEBOX()
Sintaxis
Argumentos:
cTextoMensaje
Especifica el texto que aparece en el cuadro de diálogo. Utilice un retorno de carro (CHR(13)) en
cTextoMensaje para mover una parte del mensaje a la siguiente línea del cuadro de diálogo. El alto y
el ancho del cuadro de diálogo aumentan lo que sea necesario para que quepa cTextoMensaje.
nTipoCuadroDiálogo
Especifica los botones y los iconos que aparecen en el cuadro de diálogo, el botón elegido inicialmente
cuando se muestra y el comportamiento del mismo.
En las tablas siguientes, los valores 0 a 5 del botón del cuadro de diálogo especifican los botones que
aparecen en el mismo. Los valores de icono 16, 32, 48 y 64 especifican el icono que aparece en el
cuadro de diálogo. Los valores predeterminados 0, 256 y 512 especifican qué botón del cuadro de
diálogo es el botón predeterminado. El botón predeterminado se selecciona cuando aparece el cuadro
de diálogo.
Valor Icono
16 Punto.
32 Signo de interrogación.
48 Signo de exclamación.
64 Icono de información (i).
nTipoCuadroDiálogo puede ser la suma de hasta tres valores, uno de cada una de las tablas
anteriores. Por ejemplo, si nTipoCuadroDiálogo es: 290 (2+32+256), el cuadro de diálogo especificado
tendrá las siguientes características:
cTextoBarraTítulo
Especifica el texto que aparece en la barra de título del cuadro de diálogo. Si omite cTextoBarraTítulo,
en la barra de título aparecerá el título "Microsoft Visual FoxPro".
Comentarios
El valor que devuelve MESSAGEBOX( ) indica qué botón del cuadro de diálogo se ha elegido. En los
cuadros de diálogo con un botón Cancelar, al presionar la tecla ESC para salir del cuadro de diálogo
se devolverá el mismo valor (2) que al elegir Cancelar.
La tabla siguiente muestra los valores que devuelve MESSAGEBOX( ) para cada botón.
7 No
Ejemplo:
MSSAGEBOX(“MENSAJE PRUEBA”)
RESPUESTA=MESSAGEBOX(“¿ESTA SEGURO DE ELIMINAR EL REGISTRO?”, 4+32+256)
Código 32 (signo de
interrogación)
Código 256 activa el
segundo botón
Código 4 (botones Si y No)
RELEASE WINDOWS
Elimina de la memoria ventanas definidas por el usuario o ventanas del sistema de Visual FoxPro.
Sintaxis
Argumentos
ListaNombresVentanas
Especifica las ventanas que se liberan de la memoria. ListaNombresVentanas puede incluir ventanas
definidas por el usuario así como ventanas del sistema de Visual FoxPro. Separe los nombres de las
ventanas mediante comas.
Ejemplo:
RELEASE WINDOWS
RELEASE WINDOWS MIFORMULARIO
RELEASE WINDOWS CLAVE,MENU
PRÁCTICA
Se utilizara para
agregar un nuevo
registro en la tabla
Alumnos y
Aceptara los Calificaciones
cambios que se
realicen en las
dos tablas Marcará el registro
para ser eliminado
Cancela los
cambios
realizados a los Cerrará la ventana
registros de las del formulario
dos tablas
1) Abra su base de
datos EJEMPLO
3) De un clic en 4) Busque la
la barra de título propiedad NAME
o en cualquier y cambie el
área en blanco nombre del
del formulario formulario por
para MIFORMULARIO
seleccionarlo
(cuide de no dar
clic sobre el
Marco de página
o los botones de
clase)
5) Agregue cinco
botones de
comando y
cambie la
propiedad Caption
como lo muestra
la figura
2. El primer código que agregaremos será en el evento INIT del formulario este código nos
servirá para poder realizar cambios en las tablas ALUMNOS y CALIFICACIONES.
1) De doble clic
sobre un área
en blanco del
formulario (cuide
de no dar doble
clic sobre algún
control) para
abrir la ventana
de código
Es importante que
escriba las líneas tal y
como lo marca el
ejemplo sin cambiar ni
quitar letras para evitar
posibles errores
Puede verificar que se escribió correctamente la orden o función porque Visual FoxPro las marca de
color azul.
Visual FoxPro marca de color azul a todas las ordenes y funciones; de color Negro todas las variables
definidas por el usuario y palabras que no corresponden a un comando o función y de color verde los
comentarios (para asignar un comentario debe de iniciar la línea con un asterisco).
SET DELETED ON
PUBLIC NUEVO
NUEVO = 0
CURSORSETPROP("BUFFERING",5,"ALUMNOS")
CURSORSETPROP("BUFFERING",5,"CALIFICACIONES")
En la segunda línea se declaro una variable tipo publica llamada NUEVO la cual nos servirá en el
transcurso del proceso para saber si se agrega un nuevo registro en las tablas.
En la tercer línea se asigno el valor inicial de cero (0) para la variable NUEVO.
1) De la lista de
objetos seleccione 2) Seleccione el
el control evento CLICK
cmdAGREGAR
Escriba las siguientes líneas de código en el evento CLICK del control cmdAGREGAR (botón
AGREGAR):
SET DELETED OFF
GO BOTTOM
PUBLIC CRED
CRED = ALUMNOS.CREDENCIAL + 1
APPEND BLANK IN 1
THISFORM.REFRESH
APPEND BLANK IN 2
THISFORM.PAGEFRAME1.PAGE1.TXTCREDENCIAL.VALUE = CRED
THISFORM.PAGEFRAME1.PAGE1.TXTNOMBRE.SETFOCUS
NUEVO = 1
THISFORM.CMDELIMINAR.ENABLED = .F.
SET DELETED ON
3) Escriba las
siguientes líneas
de código en el
evento CLICK
del control
cmdAGREGAR
Estas líneas de código se ejecutaran cuando le demos un clic en el botón AGREGAR del formulario, es
decir cuando queramos agregar un nuevo registro en las tablas de ALUMNOS y CALIFICACIONES.
Analicemos las líneas de código:
SET DELETED OFF: Se muestran los registros marcados como borrados, esto para no dar de alta una
credencial que ya existe.
GO BOTTOM: Se manda el apuntador al ultimo registro de la tabla.
PUBLIC CRED: se valida la variable CRED coomo publica.
CRED = ALUMNOS.CREDENCIAL + 1: Se asigna el siguiente numero de credencial en la variable
CRED a dar de alta.
APPEND BLANK IN 1: Se agrega un registro en blanco al final de la tabla ALUMNOS.
THISFORM.REFRESH: Se refresca el area de datos del formulario.
APPEND BLANK IN 2: Se agrega un registro en blanco al final de la tabla CALIFICACIONES.
THISFORM.PAGEFRAME1.PAGE1.TXTCREDENCIAL.VALUE = CRED : Se asigna al control
TXTCREDENCIAL en su propiedad value el valor de la variable CRED la cual guardo el numero de
credencial siguiente a dar de alta.
THISFORM.PAGEFRAME1.PAGE1.TXTNOMBRE.SETFOCUS: Se manda el foco al control
TXTNOMBRE para capturar el nombre del alumno a dar de alta.
NUEVO = 1: Se asigna el valor de 1 a la variable NUEVO.
THISFORM.CMDELIMINAR.ENABLED = .F.: Se deshabilita el botón ELIMINAR.
SET DELETED ON: Se vuelve a ocultar los registros marcadoa para eliminar.
1) Seleccione el
control
2) Seleccione el
cmdACEPTAR
evento CLICK
TABLEUPDATE(1)
SELECT 2
TABLEUPDATE(2)
NUEVO = 0
SELECT 1
THISFORM.CMDELIMINAR.ENABLED = .T.
1) Seleccione el 2) Seleccione el
control evento CLICK
cmdELIMINAR
3) Agregue las
siguientes líneas de
código
En la primer línea se despliega un mensaje en una ventana, con los botones Si y No (4), con un icono
de signo de interrogación (32) y al desplegarse el mensaje queda activo el segundo botón (256); al
momento de dar clic en el botón Si o botón No, su valor queda almacenado en la variable RES.
En la segunda línea se hace una condición de si el valor de la variable es igual a 6 (el 6 indica “Si”, o
que se dio un clic en el botón Si); si se cumple la condición se cambia la propiedad BUFFERING a 1
para poder marcar los registros de las tablas ALUMNOS Y CALIFICACIONES, y se marcan con el
comando DELETE (área 1 y área 2) y se despliega un mensaje de aviso de registro eliminado, se
manda el apuntador de registros al primer registro de la tabla, se refresca los datos del formulario y
finalmente se cierra la condición.
En las ultimas dos líneas se vuelve a establecer el modo de almacenamiento optimista para las dos
tablas de ALUMNOS y CALIFICACIONES esto para poder seguir actualizando las tablas.
1) Seleccione el
control
cmdCANCELAR 2) Seleccione el
evento CLICK
TABLEREVERT(.T.)
THISFORM.REFRESH
En la primer línea se cancelan todos los cambios realizados en los registros de la tabla.
1) Seleccione el
control
cmdSALIR
2) Seleccione el
evento CLICK
TABLEREVERT(.T.): Descarta todos los cambios pendientes realizados en los registros de las tablas
ALUMNOS y CALIFICACIONES.
4. Una vez que se agregó el código en los botones, agregaremos código en el evento CLICK
del PAGE2.
1) Seleccione el
objeto PAGE2
THISFORM.REFRESH
IF NUEVO = 1 THEN
THISFORM.PAGEFRAME1.PAGE2.TXTCREDENCIAL.VALUE = CRED
THISFORM.PAGEFRAME1.PAGE2.TXTPARCIAL1.SETFOCUS
ENDIF
Analicemos la orden:
THISFORM.REFRESH
IF NUEVO = 1 THEN
THISFORM.PAGEFRAME1.PAGE2.TXTCREDENCIAL.VALUE = CRED
THISFORM.PAGEFRAME1.PAGE2.TXTPARCIAL1.SETFOCUS
ENDIF
Esto que nos indica, que cuando el usuario de un clic en el botón Agregar y se registre un nuevo
alumno, la credencial de la tabla ALUMNOS sea la misma para la credencial de la tabla
CALIFICACIONES.
En la siguiente línea se manda el foco al objeto TXTPARCIAL1 para aceptar la primer calificación.
THISFORM.PAGEFRAME1.PAGE2.TXTPARCIAL1.SETFOCUS
THISFORM.PAGEFRAME1.PAGE2.TXTCREDENCIAL.VALUE
5. Como último paso cierre la ventana de código y regrese al diseño del formulario y cambie
la propiedad BufferMode a 2- Optimista.
1) De un clic
en cualquier
parte en
blanco del 2) Busque la
formulario o propiedad
en el título BufferMode y
para cámbiela a:
seleccionarlo 2- Optimista
Recuerde que en
las tablas 1) De un clic en el
ALUMNOS y botón AGREGAR
CALIFICACIONES
solo tenemos 4
registros
Observe que el
botón eliminar
esta deshabilitado
2) Antes de
escribir el nombre
del alumno de un
clic en la página
CALIFICACIONES
para activarla
Recuerde que la variable NUEVO inicio con el valor de cero (0) y ahora cambia su valor a uno (1) el
cual nos va a servir en el trascurso del proceso para saber que se esta dando de alta un nuevo
registro.
Observe que se
agrego
automáticamente
la credencial 5
para registrar sus
calificaciones y el
campo PARCIAL1
Tiene en estos
momentos el foco
THISFORM.REFRESH
IF NUEVO = 1 THEN
THISFORM.PAGEFRAME1.PAGE2.TXTCREDENCIAL.VALUE = CRED
THISFORM.PAGEFRAME1.PAGE2.TXTPARCIAL1.SETFOCUS
ENDIF
Observe como en la tercer línea se asigna el valor de la variable CRED al control TXTCREDENCIAL
que se localiza en la página PAGE2 (calificaciones).
THISFORM.PAGEFRAME1.PAGE2.TXTCREDENCIAL.VALUE = CRED
THISFORM.PAGEFRAME1.PAGE2.TXTPARCIAL1.SETFOCUS
Observe con detalle el papel que juega la variable NUEVO es decir que sólo asignara el valor al
control TXTCREDENCIAL y mandara el foco a al control TXTPARCIAL1 cuando se este dando de alta
un nuevo registro, y eso lo sabrá el programa por el valor de la variable NUEVO, es decir que cuando
tenga el valor de 1 indica que se esta dando de alta un nuevo registro (recuerde que la variable inicio
con el valor de cero (0).
7) Al terminar de
registrar las
calificaciones del
alumno de un clic
en el botón
ACEPTAR para
almacenar los
datos del alumno
y sus
calificaciones
TABLEUPDATE(1)
SELECT 2
TABLEUPDATE(2)
NUEVO = 0
SELECT 1
Recuerde que la función TABLEUPDATE() graba los cambios realizados en una tabla.
Observe que al actualizar los cambios en las tablas se vuelve a asignar su valor de cero (0) a la
variable NUEVO y volverá a tener el valor de uno (1) solo cuando se de un clic nuevamente en el
botón AGREGAR y se vuelva a dar de alta otro registro.
El formulario permitirá también realizar modificaciones en los registros que ya existen en las tablas
tanto en los datos del alumno como en sus calificaciones.
1) De un clic en
el botón INICIO
para
desplazarnos al
primer registro
de la tabla
5) Por último de
un clic en el
botón Aceptar
2) Cambie los para actualizar
apellidos del la tabla con los
alumno nuevos cambios
4) Cambie el turno
3) Cambie el grupo
6) De un clic en el
botón ULTIMO para
desplazarse hasta el
último registro de la
tabla
1) Estando en el
primer registro de la
tabla nuevamente
cambie los apellidos
del alumno 5) De un clic en el
botón CANCELAR
TABLEREVERT(.T.)
THISFORM.REFRESH
La función TABLEREVERT() Descarta los cambios realizados en una fila o en una tabla.
Ahora analicemos como funciona el botón BORRAR.
Ubíquese en el
primer registro
1) Estando en el
de la tabla
primer registro de un
clic en el botón
ELIMINAR
Observe que se
despliega el mensaje
“REGISTRO
ELIMINADO” de un
clic en el botón
Aceptar
Realmente el registro no se elimina físicamente en el disco, solo se marca como registro para ser
eliminado.
Abra la tabla ALUMNOS en modo examinar y observe la marca que se agrego en el primer registro de
la tabla.
3) Abra el menú
Ver y seleccione
Examinar para
abrir la ventana
Examinar
4) De un clic en el
último registro
para poder ver la
marca
Para borrar físicamente los registros utilice la opción Quitar registros eliminados del menú Tabla.
6) De un clic en el
botón ULTIMO
Observe que ya no
se muestra el primer
registro
SET DELETED especifica si Visual FoxPro procesará o no los registros marcados para su eliminación
y si están disponibles o no para su uso en otros comandos.
Sintaxis
Argumentos:
ON
Especifica que los comandos que realizan operaciones sobre registros (incluyendo los registros de las
tablas relacionadas) utilizando un alcance pasan por alto los registros marcados para su eliminación.
OFF
(Predeterminado) Especifica que a los registros marcados para su eliminación se puede acceder
mediante comandos que operan sobre registros (incluyendo los registros de las tablas relacionadas)
utilizando un alcance.
CORRIGIENDO ERRORES
Este error es ocasionado por que se hizo un cambio en los registros y se cerro el formulario sin
grabarlos o aceptar los cambios (botón Aceptar) o cancelarlos (botón Cancelar).
1. Cerrar el formulario y cerrar la base de datos desde la ventana de Comandos utilizando la orden
CLOSE ALL.
Después de cerrar la
base de datos,
Escriba la orden CLOSE
ubíquese sobre la
línea OPEN ALL desde la ventana de
DATABASE y oprima comando para cerrar la
base de datos y después
Enter para volver a
abrir la base de datos vuelva a abrirla junto con
el formulario
Escriba la orden
TABLEREVERT(.T.) en el
evento DESTROY del
formulario
En la siguiente practica cambiaremos la aceptación de los datos GRUPO y TURNO; hasta ahora se
han estado aceptando los datos escribiéndolos desde el teclado, sin embargo es mucho más fácil y
además nos ahorra tiempo en el proceso de la información seleccionarlos que escribirlos; para esto
nos auxiliaremos del control Cuadro combinado el cual por medio de una lista de elementos nos
permitirá realizar el dato que almacenaran los campos GRUPO y TURNO.
PRÁCTICA
1) De un clic con
el botón derecho
del mouse sobre
el Marco de
páginas y del
menú contextual
seleccione
Modificar
Observe el
contorno azul
alrededor del Recuerde que para
borrar un control u
Marco de página
el cual indica que objeto solo tiene que
se encuentra en seleccionarlo y
después presionar la
modo Modificar
tecla Suprimir
Insertaremos un
cuadro combinado
para aceptar el
Grupo
3) De un clic en el
botón Bloqueo
del generador
para activarlo o
verifique que este
activado
Observe que se
abre la ventana Recuerde que esta
Generador de ventana solo se abre
cuadros si el botón Bloqueo
combinados del generador se
encuentra activado
6) De un clic en el botón
para mostrar la lista
plegable y seleccione
Datos introducidos
manualmente
7) Escriba como
grupos: A, B, C
yD
8) De un clic en
la página Estilo
para activarla
9) De un clic en la
opción Lista
desplegable para
seleccionarla
10) De un clic en la
página Valor
17) De un clic en la
página Distribución y
amplié con el mouse la
columna para mostrar
los datos de la lista
(similar como lo hace
con una columna de
Excel)
18) De un clic en la
página Valor y abra la
lista de campos y
seleccione el campo:
Alumnos.Turno
19) De un clic en el
botón Aceptar para
finalizar
Recuerde que si quiere cambiar algún dato de un alumno tendrá que dar un clic en el botón ACEPTAR
ya que si hace algún cambio e inmediatamente da un clic en el botón salir no se reconocerán los
cambios realizados.