Taller
Reporteador Windows
Nivel Básico
Agenda
• Revisión de características e
instrucciones básicas del reporteador.
• Desarrollo de reportes de casos prácticos
(1a. Parte).
• Receso
• Desarrollo de reportes de casos prácticos
(2a. parte).
• Receso
• Desarrollo de reportes de casos prácticos,
(Parte final).
Objetivo
Aprender y/o aumentar el
conocimiento de las características
básicas del Reporteador Windows
desarrollando casos prácticos.
Conceptos básicos
•
•
•
•
•
Reporte.
Reporteador.
Algoritmo.
Compilador.
Editor.
Características
• Columnar.
• 400 cm o 255 columnas.
• Hasta 3000 renglones o instrucciones de código en las
nuevas versiones.
• Cliente de OLE Automation (Excel, Word, etc.).
• Hoja dinámica interna (similar hoja de Excel).
• Reportes sensibles al contexto.
• Sintáxis no sensible a minúsculas o mayúsculas.
Compiladores
Compilador
Base de
Datos
Sistemas
Ubicación
WinRep.exe
Foxpro 2.5 o
superior y
CodeBase
ContPAQ y
MegaPAQ
Windows 16 Bits
C:\Compacw\Sistemas\ContPAQ
C:\Compacw\Sistemas\MegaPAQ
WinRep32.exe
Foxpro 2.5 o
superior y
CodeBase
ContPAQ y
AdminPAQ
(CodeBase)
Windows 32 Bits
C:\Archivos de programa\Compacw\Bin
C:\Archivos de programa\Compacw\AdminPAQ
BDERep32
Paradox
CheqPAQ,
NomiPAQ
AdminPAQ
(Paradox)
C:\Archivos de programa\Compacw\Bin
C:\Archivos de programa\Compacw\AdminPAQ
Proceso para generar código máquina
Archivo Código
Fuente
Compilador
Archivo Código
Máquina
Archivo.RPT
WinRep.EXE
Archivo.RTW
Winrep32.EXE
BDERep32.EXE
Instrucciones básicas
• Puntos a tomar en cuenta al desarrollar
un reporte.
• Instrucción para comentarios.
• Instrucción COLUMNAS.
• Uso de variables.
Puntos a tomar en cuenta
• Descripción de las instrucciones utilizando
comentarios.
• Uso de tabuladores (uso de otrosEditores).
• Nomenclatura en los nombres (utilizar nombres
descriptivos para las variables).
• Es muy importante definir columnas al inicio de
cualquier reporte.
• Terminar el reporte con una línea en blanco
(dar un <Enter> después de la última instrucción).
Puntos a tomar en cuenta
• Diseño del reporte
Encabezado
Detalle
Comentarios
La forma de insertar comentarios en el reporte es con
la doble díagonal //.
Ejemplo:
// Archivo: Mi primer reporte.RPT
// Descripción: Reporte de prueba para comprender el uso de // comentarios.
//
// Fecha:
// Autor:
//
Instrucción COLUMNAS
Sirve para definir el número de columnas y el tamaño que tendrá
el reporte.
Sintáxis:
COLUMNAS NumColumnas;Ancho1,Ancho2,...
Parámetros:
NumColumnas: es el número de columas del reporte
Ancho1,Ancho2,... : ancho de las columnas en centímetros
Ejemplo:
COLUMNAS 4;10,2,4,1
Uso de variables
Es un espacio que se designa en memoria para almacenar un
valor de cualquier tipo.
Una variable tiene N número de casillas, dónde N es el número
de columnas definidos en el reporte.
Sintáxis:
Variable[NumeroCasilla] = número
Variable[NumeroCasilla] = ‘Texto’
Variable = número[C<NumeroColumna>]
Uso de variables, continuación...
Ejemplos:
Para asignar la palabra Hola en la casilla 0 de una variable llamada varDatos se
hace de la siguiente manera:
varDatos[0] = ‘Hola’
Para asignar el número 45 en la casilla 1 de la variable varDatos se hace de la
siguiente manera:
varDatos[1] = 45
o también de la siguiene manera:
varDatos = 45[C1]
COLUMNAS 4;2
Hola
45
0
12
1
2
Mundo
3
Uso de variables, continuación
Ejemplos:
COLUMNAS 6;2
varDatos = ‘Totales:’
varDatos = 100[C1..C5]
varDatos = 500[C7]
varDatos[1..5] = 100
varDatos[1,5] = 200
varDatos = 500[1..5]
Uso de variables, continuación
Ejemplos:
COLUMNAS 6;2
varDatos = ‘Totales:’
varDatos = 100[C1..C5]
varDatos = 500[C7]
INCORRECTA
varDatos[1..5] = 100
INCORRECTA
varDatos[1,5] = 200
varDatos = 500[1..5]
INCORRECTA
Interactuando con el usuario
•
•
•
•
•
Instrucción LISTA.
Instrucción TEXTO.
Instrucción PARAMETRO.
Instrucción ACEPTA.
Instrucción ACEPTA con lista de
opciones.
Instrucción LISTA
Manda información a pantalla. Puede ser textos, números o
valores almacenados en una variable.
Sintáxis:
LISTA ‘Mensaje texto en Columna 0’,’Mensaje texto en Columna 1’,...
LISTA variable_en_Columna_0, variable_en_Columna_1,...
LISTA variable;avance_de_lineas
Ejemplos:
LISTA ‘Mi nombre es’,’Juan Pérez’
varTelefono = ‘38180900’
LISTA ‘’,’’,’’,varTelefono
varTotal = ‘Total:’[C0]
varTotal = 200[C1..C6]
LISTA varTotal;1
Instrucción TEXTO e IMPRIME
Manda información a pantalla. Puede ser textos, números o
valores almacenados en una variable.
Sintáxis:
TEXTO ‘Mensaje texto’
TEXTO C<NumeroColumna>;’Mensaje Texto’
TEXTO Posicion_en_Centímetros;’Mensaje Texto’
IMPRIME
Ejemplos:
TEXTO ’Hola’
TEXTO C1;’Mundo’
TEXTO 6.5;’Mi nombre es’
IMPRIME
Instrucción PARAMETRO
Se utiliza para recibir valores desde un diálogo propio de la
aplicación (ContPAQ, NomiPAQ, etc), cuando no se envía
nada del diálogo o se ejecuta el reporte directamente se toma
por omisión los valores asumidos en esta instrucción.
Sintáxis:
PARAMETRO variable = ValorInicial
Ejemplos:
PARAMETRO Ejercicio = 2005
PARAMETRO ProductoInicial = ‘52011232252’
PARAMETRO ImprimirCancelados = FALSO
Instrucción ACEPTA
Se utiliza para recibir valores del Usuario que pueden servir para aplicar
filtros.
Sintáxis:
ACEPTA [´Título ventana’;]’Mensaje’;variableReceptora
Ejemplos:
ACEPTA ‘Datos Personales’;’Introduce la edad’;varEdad
Datos Personales
X
Introduce la edad
|
Aceptar
Cancelar
Instrucción ACEPTA lista de opciones
Se utiliza para recibir valores, mostrando una lista de opciones de las cuales
el Usuario puede seleccionar alguna de ellas.
Sintáxis:
ACEPTA [´Título ventana’;]’Mensaje’;variableReceptora;’elemento1,elemento2,...’
Ejemplos:
ACEPTA ‘Lista de colores’;’Seleccione un color’;varColor;’Rojo,Azul,Blanco,Verde’
Lista de colores
X
Seleccione un color
Rojo
Azul
Blanco
Verde
Aceptar
Cancelar
Conociendo las bases de datos (BD)
•
•
•
•
Conceptos de Bases de Datos.
Ubicación de las Tablas.
Estructura de las Tablas.
Proceso para el Acceso a las Bases
de Datos.
Conceptos de BD
•
•
•
•
•
Dato
Campo
Registro
Tabla
Empresa
Proceso para el acceso a BD
• Conectarse a la empresa.
• Definir las tablas a utilizar para el
reporte.
• Definir los índices a utilizar.
• Definir los campos a desplegar.
Accesando las BD´s
•
•
•
•
•
•
•
Conectándose a la Empresa.
Campos de la Empresa.
Definiendo las Tablas.
Definiendo los Índices.
Buscando Datos.
Saltando Registros.
Definiendo los campos.
Conectandose a la empresa
La instrucción USAEMPRESA se utiliza para conectarse a la empresa.
Esta instrucción declara una variable que será utilizada para hacer
referencia a empresa.
Sintáxis:
USAEMPRESA variableEmpresa;’Sistema’[;’Ruta’]
Ejemplos:
USAEMPRESA empMegaPAQ;’MegaPAQ1.00’;’C:\Compacw\Empresas\Emp1’
USAEMPRESA empContPAQ;’CONTPAQW’
USAEMPRESA empAdminPAQ;’ADMINPAQW’
USAEMPRESA empCheqPAQ;’CHEQPAQW’
USAEMPRESA empNomiPAQ;’NOMIPAQW’
Conectandose a la empresa, cont.
Selección de empresa
X
Seleccione una empresa
La Gran Empresa, SA de CV
Empresa Demostración
Aceptar
Cancelar
Campos de la empresa
Los campos de la empresa nos sirven para extraer información
general de la empresa, tales como el Nombre, Dirección,
Telefonos, Colonia, etc.
Sintáxis:
variableEmpresa->Campo
Ejemplos:
COLUMNAS 5;2
USAEMPRESA varEmp1;’CONTPAQW’
TEXTO varEmp1->Nombre
IMPRIME
Definiendo las tablas
La instrucción USATABLA declara una variable que será utilizada
en el reporte para hacer referencia a una tabla.
Sintáxis:
USATABLA variableTabla = variableEmpresa[‘NombreTabla’]
Ejemplos:
USATABLA tClientes = varEmpAdm[‘MGW10002’]
USATABLA tCuentas = varEmpCtw[‘CTW10001’]
USATABLA tBenefPag = varEmpChq[‘BenefPag’]
USATABLA tEmpleados = varEmpNom[‘Nom10001’]
Definiendo los índices
La función USAINDICE de la variable Tabla se utiliza para ordenar
el despliegue de los datos por medio del índice en conjunto
con búsquedas en base a criterios.
Sintáxis:
variableTabla.USAINDICE[‘NombreIndice’]
Ejemplos:
tClientes.USAINDICE[‘CCODIGOCLIENTE’]
tCuentas.USAINDICE [‘ICUENTA’]
tBenefPag.USAINDICE [‘PRIMARYKEY’]
tEmpleados.USAINDICE [‘’]
Buscando datos
La función BUSCA PRIMERO de la variable Tabla se utiliza para
buscar el primer registro de la tabla en el orden del índice
activo.
Sintáxis:
variableTabla.BUSCA PRIMERO
Ejemplos:
tClientes.BUSCA PRIMERO
tCuentas.BUSCA PRIMERO
tBenefPag.BUSCA PRIMERO
tEmpleados.BUSCA PRIMERO
Buscando datos, continuación
La función BUSCA ULTIMO de la variable Tabla se utiliza para
buscar el último registro de la tabla en el orden del índice
activo.
Sintáxis:
variableTabla.BUSCA ULTIMO
Ejemplos:
tClientes.BUSCA ULTIMO
tCuentas.BUSCA ULTIMO
tBenefPag.BUSCA ULTIMO
tEmpleados.BUSCA ULTIMO
Buscando datos, continuación
La función SALTAREG de la variable Tabla se utiliza para buscar
el siguiente o anterior registro de la tabla en el orden del
índice activo.
Sintáxis:
variableTabla.SALTAREG[‘Numero de registros a saltar’]
Ejemplos:
tClientes.SALTAREG[1]
tCuentas.SALTAREG[-1]
tBenefPag.SALTAREG[1]
tEmpleados.SALTAREG[1]
Buscando datos, continuación
La función BUSCA de la variable Tabla se utiliza para buscar un
registro en base a un criterio aplicado sobre la llave del índice
activo.
Sintáxis:
variableTabla.BUSCA[Llave]
Ejemplos:
tClientes.BUSCA[‘100’]
tCuentas.BUSCA[‘110101’]
tBenefPag.BUSCA[‘500’]
tEmpleados.BUSCA[‘ROBERTO DEL ALTO TORRES’]
Buscando datos, continuación
Diferencias en el uso de la función BUSCA de las diferentes
versiones del reporteador.
WinRep32:
Ejemplo:
tSaldosCuentas.BUSCA[‘110101
20051’]
BDERep32
Ejemplo:
tEmpleado.BUSCA[campoLlave1 & ‘:’ & campoLlave2 & …]
Definiendo los campos
Sintáxis:
variableTabla.(NombreCampo)
Ejemplos:
tClientes(cNombreCliente)
tCuentas.(Codigo)
tBenefPag.(Nombre)
tEmpleados.(Nombre)
Ciclos
•
•
•
•
Comparadores
Instrucción Mientras
Instrucción InicioRepite
Terminación de ciclos
Comparadores
• Encontro
Mientras se encuentren registros
• Igualdad
a=b
• Desigualdad
a != b
• Negación
!a
• Mayor Que
a>b
• Menor Que
a<b
• Mayor Igual Que
a >= b
• Menor Igual Que
a <= b
• Conjunción
aYb
• Disyunción
aOb
Instrucción MIENTRAS
Sintáxis:
MIENTRAS condición
// Instrucciones a repetir mientras la condición sea verdadera
FINMIENTRAS
Ejemplos:
tCliente.BUSCA PRIMERO
MIENTRAS tCliente->Encontro
LISTA tCliente(cCodigoClienteProveedor,RazSocial)
tCliente.SALTAREG[1]
FINMIENTRAS
Instrucción MIENTRAS, continuación
Con iniciación, condición e incremento.
Sintáxis:
MIENTRAS [ iniciación; condición; incremento ]
// Instrucciones a repetir mientras la condición sea verdadera
FINMIENTRAS
Ejemplos:
MIENTRAS[tCliente.BUSCA PRIMERO; tCliente->Encontro; tCliente.SALTAREG[1] ]
LISTA tCliente(cCodigoClienteProveedor,RazSocial)
FINMIENTRAS
Instrucciones INICIOREPITE, REPITE
Sintáxis:
INICIOREPITE
// Instrucciones a repetir al menos una vez
// antes de verificar si no se cumple la condición
REPITE MIENTRAS condición
Ejemplos:
tCliente.BUSCA PRIMERO
Si tCliente->Encontro
INICIOREPITE
LISTA tCliente(cCodigoClienteProveedor,RazSocial)
tCliente.SALTAREG[1]
REPITE tCliente->Encontro
FinSi
Finalización de ciclos
Sintáxis:
FINCICLO
Ejemplos:
Numero = 0
tCliente.BUSCA PRIMERO
Si tCliente->Encontro
INICIOREPITE
Numero = Numero + 1
LISTA tCliente(cCodigoClienteProveedor,RazSocial)
Si Numero = 10
FINCICLO
FinSi
tCliente.SALTAREG[1]
REPITE tCliente->Encontro
FinSi
Condiciones
• Instrucciones SI, SINO y FINSI
• Instrucciones ESCOGE, CASO,
FINCASO, FINESCOGE
Instrucciones SI, SINO, FINSI
Sintáxis:
SI condición
// Instrucciones a ejecutar si la condición es verdadera
SINO
// Instrucciones a ejecutar si la condición es falsa
FINSI
Ejemplos:
SI varEdad > 18
Lista ‘Mayor de edad’
SINO
Lista ‘Menor de edad’
FINSI
Instrucciones ESCOGE, CASO,
FINCASO y FINESCOGE
Se utiliza para ejecutar un bloque de instrucciones dependiendo
del valor de una variable.
Sintáxis:
ESCOGE NombreVariable
CASO 1
// Instrucciones a ejecutar
FINCASO
CASO 2
// Instrucciones a ejecutar
CASO N
// Instrucciones a ejecutar
FINESCOGE
Instrucciones ESCOGE, CASO,
FINCASO y FINESCOGE, cont.
Ejemplo:
ESCOGE variablePais
CASO ‘México’
Nacionalidad = ‘Mexicano’
FINCASO
CASO ‘Estados Unidos’
Nacionalidad = ‘Estadounidense’
FINCASO
CASO ‘Francia’
Nacionalidad = ‘Francés
FINCASO
FINESCOGE
Crear nuevas funciones
Se utiliza para agrupar instrucciones que serán ejecutadas repetidamente y
además estas funciones pueden convertirse en extensión del lenguaje del
reporteador.
Sintáxis:
DEFFUNC nombre_funcion(argumento1;argumento2,...,argumentoN)
// Instrucciones...
FINFUNC
Invocación de Funciones:
variableResultado = NombreFuncion(argumento1;argumento2;...;argumentoN)
NOTA IMPORTANTE: La función a invocar debe estar definida
previamente al punto de donde será invocada.
Casos prácticos
Reporteador y Excel
Instrucciones Básicas
Objeto Excel = @CreaObjeto(‘Excel.Application’)
Objeto wb = Excel.Workbooks.Add(-4167)
Objeto ws = wb.workSheets(1)
Excel.Visible = 1[C0]
ws.Range(‘A1’).Value = ‘Hola Mundo’
Caso práctico
Descargar

Ejemplo