Otras direcciones de una consulta (salida), son las siguientes :
Into Tabla Num_Tabla
Into Array Num_Arreglo
Into Cursor Num_Tablarmp
En el primer caso se debe especificar una tabla en la cual se almacena información de la consulta, para poder visualizarse en situaciones futuras.
El uso de un arreglo y de un cursor es similar, pero el arreglo y la tasa son temporales mientras este encendida la computadora.
Es preferible utilizar una salida inmediata y en caso de uso posterior es más conveniente volver a generar la información directamente con la consulta.
Para generar la información de la consulta se debe codificarla instrucción Select dentro de un procedimiento de evento conveniente y con un control adecuado, generalmente un botón de comando.
A travez de un formulario y varios controles.
Tema : Reportes
Objetivo : Como elaborar reportes
Un reporte o Informes un listado de información obtenida en la impresora, para cumplir con los requerimientos de los usuarios.
Los reportes o informes pueden ser:
-Listado Vertical (Columnas)
-Tabular
-Grupos Totales
Aún cuando pueden exisitir otros tipos incluso, "personalizado" o "especiales", los anteriores se consideran básicos.
Nota: Cada cambio dl campo numero (num) se genera un total, y un total general al final del reporte.
Para generar un reporte :
A- Se selecciona la herramienta nueva, (Archivo Nuevo) y en el cuadro de dialogo nuevo se selecciona reporte, y se pulsa el icono de nuevo.
B- En el proyecto, en documentos se selecciona reporte y se pulsa el boton nuevo.
En cualquier caso aparece un cuadro de diseño, y las herramientas de diseño, para que se elabore el reporte (Previamente, se graba el archivo de reporte.
Y junto con la anterior ventana aparece la barra de herramientas, (Controles) que se manejan en forma similar a ñas herramientas de diseño de los formularios.
De los cuales las etiquetas y los de los cuadros de texto son los más usuales en el caso de informes o reportes.
Por ejemplo para generar un reporte de columnas (campos-información), en donde, los cuadros de textos involucren el contenido de las tablas.
Para el diseño se deben seguir los siguientes pasos :
1- Crear un medio ambiente o abrir las bases de datos que contienen las tablas.
2- Se situan las etiquetas, en la misma manera que los formularios.
3- Al terminar de dibujar el cuadro de texto, almacena un cuadro de dialogo.
"Expresión de informes " con el cual, se puede arreglar el " campo" de la tabla con el nombre de dicho campo (encadenar o relacionar).
En el boton de puntos suspensivos que se encuentra adelante de la expresión se genera el campo o expresión deseada.
Tema : Reportes
Se selecciona el campo en el cuadro de lista: Campos ; si no aparecen los campos "No existe medio ambiente de datos".
En el caso, en el que se desee visualizar el cuadro de texto del formulario una expresión o calculo, se pueden ir tomando las funciones, los campos y variables que sean necesarias; para que en la expresión " Expresión para campo de informe", de este cuadro de dialogo (Generador de la expresión )donde dicha expresión o calculo deseado.
4- Al pulsar el boton de Aceptar se regresa el cuadro de dialogo "expresión de informes", y ahi se es necesario, se puede establecer " formato" al campo, seleccionado del botón de puntos suspensivos de un cuadro de texto " formato", aparecuera un nuevo cuadro.
En donde después de establecer el formato, se pulsa Aceptar y se regresa al cuadro de dialogo " expresión de informes", y al pulsar aceptar en este ultimo cuadro, ya queda habilitado en control del cuadro de texto, diseñado en el informe.
Nota : Los controles de etiqueta se pueden formatear
- Cambio de color
- Otro tipo de letra y tamaño.
Finalmente la pantalla de diseño, contiene herramientas para insertar cuadros, líneas e incluso insertar un logotipo ; siempre y cuando se coloque en el diseño un tipo OLE.
Cuando se genera un reporte o informe de grupos totales, a encontrarse en diseño, se genera un tipo de informe tabulador, y el campo que servirá de control cuando este diseñado, en " expresión de informes" se puede pulsar el botón Calculo... para determinar el tipo de operación que se realizará; cuando cambie el campo de control.
Es el menú Informe ( Report), se debe elegir la opción (Título-Resume) en que aparezcan dos nuevas secciones en el diseño del informe ; encabezado de control y total, para que se coloquen los resultados o totales.
Tema : Control de reportes
Objetivo : Como controlar los reportes y modificarlos.
Para enviar a impresión un reporte se emplea un objeto de control, presentadose un boton de comando y ahi estabilizarse el proceso para imprimir.
Para el caso de impresión, se escribe el siguiente código:
Report Form As Nombre_Reporte o Printer.
Y para el caso de vista previa se puede usar el siguiente código :
Repor Form As Nombre_Reporte Preview
Donde el Nombre_Reporte es el nombre asignado al reporte cuando este se crea.
Tema : Vistas
Objetivo : Conocer las vistas, como se trabajan y su relación con las consultas.
Las vistas y consultas, tienen mucho en común y se siguen los mismos pasos para crear una vista o consulta.
Una vista es un tipo especial de consulta, que combina las cualidades combinadas de una consulta y una tabla.
Para crear una vista se emplea el siguiente comando :
Create SQL View Nombre_Vista As
Y segundo en la consulta en la cual se basa; por ejemplo :
Crear una vista que contenga todos los campos de la tabla " products" de la base de datos "BD1", en forma ascendente de acuerdo al campo " nom_prod".
Create SQL View Nom.Vista As;
Select *From BD1!Products;
Order by Num_Prod
Se abre el administrador de proyectos, ahí aparecera el nombre de la nueva vista en la carpera (views) se abre la pantalla de base de datos donde se creó una vista, esta se mostrará como si fuera una tabla, y con su nombre específico.
Para modificar la vista, se abre la base de datos en donde se encuentra y se utiliza el comando Modify View seguido del nombre de la vista.
Ejemplo :
Modifique la vista "Product_Vista" de la Base de datos prueba
Open Database DatosPrueba
Modify view Product_Vista
Se visualiza el diseñador de las vistas y sobre el que se realizan los cambios.
Otra forma de modificar las vistas es seleccionando el Menu Consulta de la opción del diseñador de vistas.
Para cambiar el nombre de una vista, utilice el comando rename view con la siguiente sintaxis.
Rename View Vista Ant to Vista_nuevo
Para eliminar una vista se emplea el comando Delete con la siguiente sintaxis :
Delete view Vista_Cliente
ó
Drope view Vista_Cliente
thisform.text1.=(thisform.txtcal1...value+ this.....)/2
Tema : Vistas
Las vistas tienen la ventaja que se puedem utilizar, cada vez que se desee ya encaminadas; para ello basta, escribe el siguiente código.
Use nombre_vista
Browse ya que como, se dijo anteriormente
Tiene una estructura y funcionamiento similar a una tabla
Para emplear la vista debe de estar abierta la Base de Datos, en la cual esta inserta o el proyecto con sus respectivas bases de datos.
Para condiconar o filtrar los registros de la consulta, se pueden usar "beneficios" con la clase where y funciones de Visual Fox Pro, incluyendo parametros condicionales ordinarios (and, or, not, <,>,>=,F)
Nota : Dentro del Select, los operadores lógicos, and, or y not se emplean sin puntos (.and.)
Use de In en Where
Esta palabra se significa inclusión e involucraa todos los elementos de un conjunto de datos determinados.
Ejemplo :
Visualiza todos los registros de la tabla empleado y de la Base de Datos DBN, cuyos Departamentos (Deptos), son "10", "11", y "13", ordenados por num (numero de empleado descendente).
Select * From DBN!Empleado;
Where Depto in ("10","11","13");
Order by num desc
Si en el ejemplo anterior se quisiera visualizar los registros de todos los departamentos menos 14 y 15 podríamos :
Select * From DBN!Empleado;
Where not (Depto In (14,15));
Order by num desc
- Cuando sea cadena se puede usar comilla sencilla o doble.
Si se quiere manejar valores númericos en lugar de alfabeticos, se pueden aplicar funciones :
select * from dbn!empleado;
where nnot (val(depto) in (14,15));
order by num desc
Uso de like en where
Esta palabra significa como y filtra la letra inicial y los caracteres subsiguientes, de acuerdo a lo siguiente:
% El resto de caracteres
- Seguido de un caracter cualquiera
El siguiente ejemplo, muestra todos los registros de customer, base de datos, base2, cuyo, nombre de empresa, (company) comience con una mayuscula y tenga cualquier longuitud
Select *From Base2! Customer;
Where Company Like "C%"
Otro ejemplo :
Muestre todos los registros de la tabla ejemplo, base de datos BDE, cuyo nombre de país comience con U y segudiso de cualquier caracter; ordenados por dicho campo.
Select *from BDE! ejemplo ;
where pais like "u";
Order by pais asc
*Select (prestado de SQL)
Uso de between en Select
Between se emplear cuando se deben considerar valores de un campo entre un valor y otro (limites); por ejemplo, si se desea visualizar los números de producto (Prod ID) entre "10 y 19" de la tabla inventario, base de datos ABS, y en orden ascendente tenemos :
Select Prod_Id form DBS!Inventario;
Where prod_id between "10" and "19";
Order by Prod_Id Asc
Uso de IIF ( If Inmediato) en los campos calculados de select.
La instrucción IIF, sirve para producir resultados, en forma inmediata, usandose en el campo calculado; que se puede incluir en una vista o consulta la instrucción IIF tiene la siguiente sintaxis:
Iff (condición, int_CV, Inf_CF) as columna
Ejemplo :
IIF (Para >6.0,"Aprobado", "Reprobado") as evalucion
Cuando la condición esta formada por varias desiciones se emplea IIF en forma anidada.
Por ejemplo, se se desea calcular la comisión de un vendedor de acuerdo a los montos de ventas de la siguiente tabla :
Iif(Ventas<=1000,Ventas*0.05,Iif(Ventas<=3000,Ventas*0.08,Iif(Ventas<=5000,Ventas * 0.10, Ventas )0.12))) as Comisiones
Tema : Otros eventos
Objetivo: Conoce otros eventos que se pueden emplear dentro de la programación.
Init-Cuando se crea un objeto
Load-Cuando se carga un formulario
Destroy-Cuando se libera un objeto de la memoria
Error- Cuando sucede un error
Click- Cuando el usuario hace click con el mouse
Dbleclick- Cuando el usuario hace doble click con el mouse
Rightclick- Cuando el usuario hace click con el botón derecho
del mouse
Got Focus-Cuando el objeto recibe el foco " por un acto
Del usuario " o a travez de código
Keypress- Cuando el usuario oprime una tecla
Mouse down- El usuario oprime un botón sobre el objeto
Mouse move- Cuando el usuario mueve el ratón sobre el objeto
Mouse up- Cuando el usuario suelta el botón del ratón
izquierdo
Interactive change - El valor del objeto es cambiado por el usuario
Programatic change- El valor del objeto es cambiado por el programa
Tema : Cuadros de lista
Objetivo : Como usar los controles de cuadros de lista
Los cuadros de lista proporcionan al usuario una lista, por la que se puede desplazarse y contiene una serie de opciones
En un cuadro de lista, puede haber multiples elementos visuales, en todo momento; algunos de los usos de los cuadros de lista son :
- Seleccionar los elementos de una lista
- Llenar una lista con valores diferentes orígenes
-Ordenar elementos de una lista
Las propiedades y metodos más usuales son :
column conf- Indica el número de columna, y de cuadro de lista
control source- Indica donde se almacena el valor que elige el user
en la lista
Move bars- Indica si las Barras de desplazamiento se muestra a la izquierda
Multiselect- Indica si se puede seleccionar mas de un registro al mismo
tiempo
Row source - Indica de donde provienen los valores si se muestran en
la lista
Row surce type - Indica si Row source es un valor, una tabla, una instrucción
SQL, una consulta, o una lista de archivos; de acuerdo a la siguiente tabla
Row Source Type | Origen |
0 | Agrega elementos a la lista Med. Programación |
1 | Valor |
2 | Alias |
3 | Instrucción SQL |
4 | Consulta |
5 | Matriz |
6 | Campos |
7 | Archivos |
8 | Estrucura |
Los principales metodos son :
Add Item- Agrega un elemento a una lista, cuando Row Source type = 0
Remove Item- Quita un elemento a una lista, cuando Row Source type
= 0
Requery - Actualiza la lista si han cambiado valores de control source
Tema : Ejemplos de código usando medio cuadro de lista
Si Row Source Type=0, para agregar elementos a travez de código y usando el metodo Add Item
thisform.list1.additem ("Primer Elemento")
thisform.list1.additem ("Segundo Elemento")
thisform.list1.additem ("Tercer Elemento")
etc..
Esta codificación se puede simplificar usando With...Endwith
With thisform.list1
Row Source=0
Add Item ("Primer Elemento")
Add Item ("Segundo Elemento")
Add Item ("Tercer Elemento")
Endwith
Con el metodo Remove Item, se quita ó elimina un
elemento de la lista; por ejemplo:
La línea de comando siguiente, remueve o quita el segundo elemento
de la lista Mlist
thisformset.form2.removeitem(2)
Si establece el valor de 1 a la propiedad Row Source Type, se pueden especificar los valores que se mostraran, en la lista ; y los valores se pueden agregar en una sola instrucción.
thisform.list2.rowsource= " un, dos. tres"
También se pueden insertar los valores en el "Cuadro de propiedades", separan con uno de los valores con el uso de una coma.
Cuando Row Source es el valor 2 o 6, el puntero de registro se mueve al registro de la tabla que contiene el valor del elemento eligido por el usuario.
Si el valor de Row Source Type es de 3, se puede incluir la instrucción SQL, (Select) ó el nombre del archivo que contiene los resultados de consulta.
Thisform.list1.rowsource=;
"Select"
Si Control Source Type = 5, se puede rellenar un cuadro de lista, con los elementos de una matriz; para ello en la columna Columncount se establece el número de columnas de la matriz y en la propiedad Columnwidth a los anchos deseados de cada columna.
Thisform.list3.rowsource="thisform.array"
Con el parametro ListCount podemos indexar la lista y refiriendo a un elemento en especial, dependiendo del valor de listcount para usar el cuador combinado utilice la herramienta respectiva, y tantos, las propiedades como los metodos, son identicos a las de un cuadro de lista.
3=Select y otra instrucción
4=Consulta (Select)
24-May
En sus proyectos, antes de agregar un elemento a un cuadro combinado, se debe asegurar de que el valor no se encuentre ya en dicho cuadro para ello emplee la siguiente rutina:
Itemexist=.f.
For I= 1 to this.listcount
If this.list (1) = this.text
Itemexist=.t.
Exit
Endfor
If itemexist
this additem(this.text)
Endif
Control source : Especifica el campo de la tabla, que se almacena el
valor que dije.
Display Count : Especifica el número máximo de elementos
mostrados en la lista.
Incremental Search : Especifica si el control intenta hace coincidir
un elemento de la lista, a medida que el usuario escribe cada elemento.
Row Source : Especifica el origen de los elementos del cuadro combinado
Row Source Type : Especifica si el tipo de origen del cuadro combinado
igual que en el cuadro de lista.
Ejercicio Práctico :
En un formulario dibuje 2 cuadros de lista donde :
A- Se cargue una lista de formularios en el primer cuadro, cuando se
cree el formulario
B-Al hacer click a un elemento este debe pasarse al otro cuadro (Al
inicio del dicho control ó a continuación del elemento anterior)
C- Al hacer dobleclick, a alguno de los elementos del segundo cuadro
se debe pasar el elemento al primer cuadro, para hacer selección
de datos (List)
-Formload - Add Item para el elemento
D- Y así en forma continua, se puede pasar de un cuadro al otro
(con click ó dobleclick) respectivamente
Listcount- (propiedad que nos da el máximo valor, no. de elemento)
Listindex- (propiedad que nos da la posisción de apuntarlo)
Indice Actual