Академический Документы
Профессиональный Документы
Культура Документы
contpaqi.com
Aviso de derechos del propietario
Este Manual es una Obra Literaria protegida en favor de Computación en Acción, S.A. de C.V.; Copyright © 2005-
2006 Derechos Reservados © 2005-2006 Computación en Acción, S.A. de C.V., Pablo Villaseñor No. 435, Col.
Ladrón de Guevara, Guadalajara, Jalisco, México. C.P. 44600. Los Derechos de este Manual se encuentran
reconocidos por la Ley Federal del Derecho de Autor. Se prohíbe su producción, reproducción, publicación, edición o
fijación material en copias o ejemplares, por cualquier medio, importación, almacenamiento, transporte, distribución,
comercialización, venta o arrendamiento, así como su comunicación y transmisión pública por cualquier medio, su
divulgación en cualquier modalidad, su traducción, adaptación, paráfrasis, arreglos, transformaciones u otras
similares, sin previa autorización por escrito de su titular. La violación de esta prohibición constituyen un delito y una
infracción administrativa que están sancionados conforme a los artículos 424 fracción III, 424 bis fracción I y 424 ter,
del Código Penal Federal; así como los artículos 229 fracciones VII y XVI y 231 fracciones I, III, IV y X, de la Ley
Federal del Derecho de Autor y demás normas aplicables vigentes.
Las marcas COMPUTACIÓN EN ACCIÓN ®, EN ACCIÓN ®, PAQ ® y sus respectivos diseños; la marca y nombre
comercial COMPAC ® y su diseño; las marcas ES TIEMPO DE PODER ®, LA CONEXIÓN DE TU NEGOCIO ®, TU
NEGOCIO SIEMPRE EN MARCHA ®, SOÑAR. PODER. CRECER. ®; los avisos comerciales “Bien Pensado” ®,
“Respuesta Oportuna” ®, y “La Forma más Amigable de Controlar tu Negocio” ®; así como la Imagen del
Foquito ®© y del Diseño de la Portada ®©, son signos distintivos registrados y protegidos propiedad de
Computación en Acción, S.A. de C.V.
AdminPAQ ®©, MegaPAQ ®©, Exión ®©, ContPAQ ®©, CONTPAQ i ®©, CheqPAQ ®©, NomiPAQ ®©,
WinPAQ ®©, Solución Contable PAQ ®©, ProduPAQ ®© y VentPAQ ®, también son marcas registradas y
protegidas propiedad de Computación en Acción, S.A. de C.V., la que ostenta de igual forma los derechos
patrimoniales de autor; con excepción del programa de cómputo que ostenta la marca VentPAQ, cuyos derechos
patrimoniales pertenecen a Pacific Soft, Sistemas de Información, S.A. de C.V.
Microsoft ®, MS-D.O.S. ®©, WINDOWS ®© y Excel ®©, son marcas y en su caso productos de Microsoft Corporation.
Cualquier otra marca que se mencione dentro de este manual que pertenezca a terceras partes tiene solamente
propósitos informativos y no constituye aprobación y/o recomendación. Computación en Acción, no se responsabiliza
de la ejecución o uso de estos productos.
• CONTPAQ i® CONTABILIDAD
• CONTPAQ i® BANCOS
• CONTPAQ i® NÓMINAS
• CONTPAQ i® COMERCIAL
Perfil del Los asistentes al curso de Reporteador deberán tener conocimientos básicos de
asistente programación, bases de datos y sentencias de SQL.
Estructura del El curso de Reporteador está planeado de tal manera que conforme vaya avanzando en los
curso capítulos se desarrollará un reporte paso a paso.
Introducción En este capítulo se describen los pasos iniciales y las instrucciones principales necesarias
para comenzar con el desarrollo de un reporte.
Tema Página
VISIÓN GENERAL 1-1
PREPARACIÓN PARA LA CREACIÓN DE UN REPORTE 1-2
EDITOR DE REPORTES DE CONTPAQ i® 1-5
COMENTARIOS 1-8
INSTRUCCIÓN COLUMNAS 1-9
VARIABLES 1-10
ASIGNACIÓN DE VALORES A UNA VARIABLE 1-11
INICIALIZACIÓN DE UNA VARIABLE 1-12
CONSTANTES 1-13
ARREGLOS DE DATOS 1-14
Puntos previos Antes de comenzar con el desarrollo de un reporte considera los siguientes puntos:
•
(1)
Ten a la mano el documento “Estructura de la Base de Datos”.
• Ten instalado instalado el sistema en la computadora en la que se desarrollará el
reporte. De preferencia una instalación Monousuario para poder utilizar la
herramienta depuración.N
• Se sugiere contar con alguna herramienta que pueda abrir bases de datos de SQL
(por ejemplo: Microsoft® SQL MANAGEMENT STUDIO) con el fin tener acceso a
estas. Es gratuito y podrás descargarlo de:
http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-
5A0F62BF7796&displaylang=es
• El lenguaje de Reporteador no hace distinción entre mayúsculas y minúsculas.
• Los nombres de los campos y las tablas no se acentúan.
• Describe las instrucciones utilizando comentarios.
• Usa tabuladores para identificar bloques (en ciclos, funciones, condiciones,
etcétera.)
• Maneja nombres descriptivos en variables.
• Termina el reporte con una línea en blanco (Da un <Enter> después de la última
instrucción).
(1)
Puedes acceder a este documento desde el grupo de programas del sistema, subgrupo
Ayuda.
Archivos RPT y Cuando trabajes con Reporteador de CONTPAQ i® encontrarás dos tipos de archivos: unos
RTW son extensión .RPT y otros son extensión .RTW
Archivo Descripción
.RPT También conocidos como archivos fuente, son los que contienen las
instrucciones creadas por el programador. Estos archivos son de tipo
texto.
.RTW Este archivo se crea al compilar el archivo fuente (RPT), y contiene el
código máquina que será interpretado por el reporteador de
CONTPAQ i® para mostrar el reporte.
MiReporte.RPT
Compila
No Sí
¿Error de sintaxis?
Ubicación de los • Los reportes existentes (tanto los archivos fuentes .RPT como los ejecutables .RTW)
reportes se ubican en el servidor en las siguientes rutas:
Sistema Ruta
CONTPAQ i® CONTABILIDAD <C:\Compac\Empresas\Reportes\Contpaq>
CONTPAQ i® BANCOS <C:\Compac\Empresas\Reportes\Bancos>
CONTPAQ i® NÓMINAS <C:\Compac\Empresas\Reportes\Nominas>
CONTPAQ i® COMERCIAL <C:\Compac\Empresas\Reportes\Comercial>
Respaldar Importante: realiza un respaldo de los reportes que hayas desarrollado, copia los archivos
reportes .RPT y .RTW de tus reportes en un lugar seguro.
Si deseas realizar una modificación a un reporte ya existente se sugiere realizar una copia del
reporte original, modificar el reporte y hacer un respaldo del RPT y RTW modificado, ya que si
reinstalas el sistema, se sobre-escribirá el reporte y perderás los cambios.
Pasos para crear Para crear un reporte nuevo es necesario que siga los siguientes pasos:
un reporte
Paso Acción
1 Define los campos (columnas) que se requieren en el reporte.
2 Ubica en qué tablas dentro de la base de datos se encuentran los campos
requeridos.
3 Desarrolla la consulta de SQL en el Managment Studio.
4 Desarrolla el código fuente desde el Editor de reportes incluyendo la consulta
de SQL.
5 Guarda el archivo RPT en el servidor.
6 Compila el archivo RPT (Generar archivo RTW).
7 Prueba el reporte ejecutándolo desde el editor de reportes.
8 Una vez terminado el reporte lo podrás ejecutar desde el menú Reportes opción
Mis Reportes.
Reglas en el Cada programador tiene su propia forma de estructurar el código para desarrollar el reporte, sin
orden de las embargo hay ciertas reglas que se deben respetar en el orden en que aparecen las
instrucciones instrucciones en el código fuente.
• Define las columnas antes del inicio del cuerpo del reporte (ve el tema Instrucción
columnas en la página 1-9).
• Declara una función antes del llamado de la misma (ve el capítulo Funciones página
6-1). Abre la empresa y las tablas antes de hacer llamados a las mismas.
• Pide parámetros antes de desplegar los datos del reporte.
3. Librerías. Define las librerías de funciones externas a utilizar dentro del reporte.
Introducción El Editor de Reportes es una herramienta que permite crear nuevos reportes o editar los ya
existentes. Para abrir el Editor de reportes:
Archivo Guardar Como Permite guardar el archivo RPT con un nombre diferente.
Archivo Imprimir Imprime el código fuente.
Ayuda Acerca del Editor de Muestra información general del Editor de Reportes
Reportes como la versión.
Introducción Los comentarios permiten agregar un bloque de texto que será ignorado por el compilador.
De esta manera se pueden describir las instrucciones del código fuente para facilitar la
comprensión del mismo.
Nota: Dentro del Editor de reportes los comentarios aparecen en color verde claro.
Cómo insertar un La forma de agregar comentarios en Reporteador es insertando dos diagonales // antes del
comentario bloque de texto que se requiere sea ignorado por el compilador.
O también es posible comentar un bloque de instrucciones, comenzando con /* y terminando
con */.
Comentario Ejemplo
Se puede agregar un // Reporte Catálogo Productos
comentario al inicio de una // Elaborado por: Marco Muñoz
línea // Fecha: 23/Mayo/2013
A la derecha de una línea de Texto vTotales // Imprime los totales.
código Imprime
Comentar todo un bloque de /*
instrucciones Reporte Catálogo de productos
Elaborado por: Marco Antonio Muñoz
Fecha: 23/Mayo/2013
*/
Introducción La instrucción columnas sirve para definir el número y tamaño de columnas que contendrá el
reporte.
Todo reporte deberá tener esta instrucción a fin de mostrar datos en pantalla; por lo tanto es
recomendable que esta instrucción sea la primera en declararse dentro del cuerpo del
reporte.
Esta instrucción se puede utilizar varias veces dentro del reporte. Por lo que es posible
redefinir el tamaño y número de columnas dentro de un mismo reporte. La instrucción aplicará
de donde se define en adelante o hasta que se vuelva a definir otra instrucción columnas.
Parámetro Se refiere a
NumColumnas Es el número de columnas del reporte
Ancho1 Ancho de la columna 1 en centímetros
Ancho2 Ancho de la columna 2 en centímetros
AnchoN Ancho de la columna N en centímetros
Ejemplo // Esta instrucción define 4 columnas, la 1ra de 10 cm, la 2da de 2.5 cm, la 3ra de 4 cm, y la
//última de 1 cm.
Columnas 4;10,2.5,4,1
Introducción Una variable es un espacio en memoria que se designa para almacenar cualquier valor
temporal.
Aplicación de las Las variables permiten almacenar valores que posteriormente se podrán utilizar para hacer
variables cálculos aritméticos, comparaciones, guardar parámetros de entrada del usuario, etcétera.
Aplicación Ejemplo
Guardar datos vNombreCuenta = 'Activo'
Cálculos aritméticos vTotal = vSubtotal + vIVA
Comparaciones vPeriodoFinal > vPeriodoInicial
NOMENCLATURA EN VARIABLES
Las variables pueden llevar cualquier nombre pero se sugiere agregar un prefijo a las
variables y a las tablas para su fácil ubicación dentro del código. A continuación se
muestran algunas sugerencias.
Introducción En Reporteador solo hay un tipo de variable en la que es posible almacenar tanto valores de
texto como valores numéricos.
Importante: Todos los valores de texto en Reporteador se anotan entre apóstrofes sencillos
(‘).
Parámetro Se refiere a
vNombreVariable Nombre de la variable
Dato Dato a almacenar, puede ser un dato
numérico, de texto u otra variable.
Sintaxis Se refiere a
vNombreVariable = 0 Si es valor numérico
vNombreVariable = ' ' Si es valor de texto (espacio entre
apóstrofes)
Introducción Las constantes se definen para hacer referencia con un nombre a un valor numérico,
facilitando así la programación.
Sintaxis Se refiere a
NombreConstante Nombre con el que se identificará la
constante.
NumeroConstante Valor que se asignará a la constante
Introducción En las variables se puede asignar un dato por variable (como se vio anteriormente), o se
pueden almacenar varios datos en una misma variable.
El número de datos a almacenar por variable dependerá del número de columnas que se
hayan declarado. A esta modalidad se le conoce como arreglo de datos.
Parámetro Se refiere a
vNombreVariable Nombre de la variable
Índice Número del índice, los índices comienzan
en 0
Dato Dato a almacenar, puede ser un dato
numérico, de texto o booleano.
Columnas 4;2,3,1,2 // Inicializa un reporte con 4 columnas por lo tanto las variables tendrán 4
//índices comenzando del índice 0 al 3.
0 1 2 3
Total Del Periodo 12
vMiVariable
SINTAXIS ALTERNA
Es posible utilizar la siguiente sintaxis alterna para la asignación de valores a variables:
Introducción En este capítulo se describen las instrucciones de salida las cuales sirven para mostrar datos
en pantalla.
Tema Página
Visión General 2-1
Instrucción Lista 2-2
Instrucciones Texto e Imprime 2-4
Instrucción Imprime 2-6
Laboratorio 1 2-7
Introducción La instrucción Lista sirve para mostrar datos en pantalla; pueden ser valores de texto,
numéricos o de registros almacenados en la base de datos.
Esta función se aconseja utilizarla para mostrar datos extraídos de registros de la base de
datos, para desplegar valores numéricos y valores de variables.
Sintaxis Resultado
Lista ‘Dato1’,’Dato2’,’Dato3’ Despliega datos de texto
Lista vMiVariable Despliega los datos almacenados en la
variable vMiVariable
Parámetro Se refiere a
‘Dato1,’Dato2’,’Dato3’ El texto ‘Dato1’ aparecerá en la primera columna.
‘Dato2’ en la segunda columna.
‘Dato3’ en la tercera columna.
vMiVariable La variable que contiene los datos a desplegar en pantalla
Columnas 3;2,3,2
Lista 'Código','Nombre','Precio'
0 1 2
Código Nombre Precio
Página
Computación en Acción, S.A. de C.V. Instrucciones de Salida
Derechos Reservados® 2-2
Instrucción Lista, Continuación
Columnas 3;2,3,2
vMiVariable[0] = 'Código'
vMiVariable[1] = 'Nombre'
vMiVariable[2] = 'Precio'
Lista vMiVariable
0 1 2
Código Nombre Precio
Introducción La instrucción Texto sirve para desplegar un dato en una columna específica. Generalmente
se utiliza para desplegar datos tipo texto, de ahí su nombre.
Esta instrucción a diferencia de la instrucción Lista permite asignar los valores a desplegar de
las columnas en desorden, por ejemplo: es posible asignar primeramente el valor a desplegar
en la columna 3 y después en la 1.
La instrucción Imprime muestra en pantalla los datos previamente asignados en cada una de
las instrucciones Texto y da un salto a la siguiente línea en pantalla.
Parámetro Se refiere a
C0 La primera columna
‘Mensaje en la primera columna’ El mensaje que se imprimirá en la primera columna
C1 La segunda columna
‘Mensaje en la segunda columna’ El mensaje que se imprimirá en la segunda columna
CN La columna N
‘Mensaje en la N columna’ El mensaje que se imprimirá en la N columna
Imprime Imprime los datos asignados en las instrucciones
Texto
Texto C3;12
Texto C1;'Del'
Texto C0;'Total'
Texto C2;'Periodo'
Imprime
0 1 2 3
Total Del Periodo 12
Página
Computación en Acción, S.A. de C.V. Instrucciones de Salida
Derechos Reservados® 2-4
Instrucciones Texto e Imprime, Continuación
Parámetro Se refiere a
<posicionCentímetros> Posición en centímetros dónde comenzará a
desplegarse el Mensaje
‘Mensaje’ El mensaje que se imprimirá en pantalla
Imprime Imprime el mensaje asignado en la instrucción Texto
Ejemplo 2 // El siguiente ejemplo imprime el mensaje ‘Detalle” a partir del centímetro 10 además el texto
abarcará la totalidad de las columnas de ser necesario.
Texto 10;'Detalle'
Imprime
Parámetro Se refiere a
‘Mensaje’ El mensaje que se imprimirá en pantalla, abarcará
todas las columnas de ser necesario.
Imprime Imprime el mensaje asignado en la instrucción Texto
Ejemplo 3 //En caso de no especificar el parámetro de la columna se asumirá que el texto abarcará la
//totalidad de las columnas de ese renglón. Esta modalidad generalmente se utiliza en los
//títulos del reporte (nombre del reporte, nombre de la empresa, etcétera.)
Texto 'Balance general a 12 periodos detallado'
Imprime
0 1 2 3
Balance general a 12 periodos detallado
Sintaxis Descripción
Texto C0;'Mensaje' Alinea el mensaje a la izquierda de la columna
Texto C0;'^Mensaje' Centra el mensaje en la columna
Texto C0;'"Mensaje' Alinea el mensaje a la derecha de la columna
anteponiendo comillas dobles antes del texto.
Introducción Es posible utilizar la instrucción Imprime para mostrar en pantalla los datos de una variable
0 1 2
Código Nombre Precio
Página
Computación en Acción, S.A. de C.V. Instrucciones de Salida
Derechos Reservados® 2-6
Laboratorio 1
Introducción En el siguiente laboratorio tomarás como base un reporte de Catálogo Clientes para crear un
Catálogo Productos, adjuntarás un título al mismo así como el título de cada una de las
columnas.
Paso Ejercicio
1 Ingresa al Editor de Reportes de CONTPAQ i® COMERCIAL. Para esto, ingresa
Ejercicio al menú Reportes opción Editor de Reportes.
2 Ve al menú Archivo opción Abrir y abre el archivo Base_Lab1.
3 Guarda el archivo con el nombre Productos_Lab1.
4 Modifica el reporte de la siguiente forma:
GUARDAR REPORTES
Recuerda que puedes guardar el reporte presionando el icono de la barra de
herramientas.
COMPILAR REPORTES
Recuerda que puedes compilar el reporte presionando el icono de la barra de
herramientas.
EJECUTAR REPORTES
Recuerda que puedes ejecutar el reporte presionando el icono de la barra de
herramientas.
Página
Computación en Acción, S.A. de C.V. Instrucciones de Salida
Derechos Reservados® 2-8
Capítulo 3
Ciclos y Condiciones
Visión General
Introducción En este capítulo verá como hacer ciclos y condicionar la ejecución de instrucciones.
Tema Página
VISIÓN GENERAL 3-1
INSTRUCCIÓN SI 3-2
INSTRUCCIÓN CASO 3-4
INSTRUCCIÓN MIENTRAS 3-5
Ciclos y Condiciones
Página Computación en Acción, S.A. de C.V.
3-1 Derechos Reservados®
Instrucción Si
Instrucción Con esta instrucción podrá condicionar la ejecución de otras instrucciones, de tal manera, que
si la primera condición no se cumple, podrá pasar a otra condición.
Sintaxis Si <condición>
// Instrucciones que se ejecutarán si la condición es verdadera
Sino
// Instrucciones que se ejecutarán si la condición es falsa
FinSi
Parámetro Se refiere a
<condición> El resultado de una comparación, los valores posibles son verdadero o
falso.
Si es verdadero se ejecutan las instrucciones dentro del bloque
comprendido entre Si…Sino.
Si la condición es falsa se ejecutarán las instrucciones comprendidas
dentro del bloque entre Sino… FinSi
Comparadores Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Operadores Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
lógicos
Operador Ejemplo Descripción
Y (a > b) Y (a < c) Compara si “a” es mayor que “b” Y
si “a” es menor que “c”
O (a > b) O (a < c) Compara si “a” es mayor que “b” O
si “a” es menor que “c”
Página
Computación en Acción, S.A. de C.V. Ciclos y Condiciones
Derechos Reservados® 3-2
Instrucción Si, Continuación
Ejemplo:
// Si la condición se cumple se ejecutan las instrucciones de la condición, si no se cumplen
no se ejecutan.
Si vEdad >= 18
Lista ‘Mayor de Edad’
FinSi
Ciclos y Condiciones
Página Computación en Acción, S.A. de C.V.
3-3 Derechos Reservados®
Instrucción Caso
Instrucción Con esta instrucción podrá condicionar la ejecución de instrucciones dependiendo del valor
de una variable.
Caso <Valor1>
// Instrucciones que se ejecutarán si la variable vOpcion = <Valor1>
FinCaso
Caso <Valor2>
// Instrucciones que se ejecutarán si la variable vOpcion = <Valor1>
FinCaso
Caso <ValorN>
// Instrucciones que se ejecutarán si la variable vOpcion = <ValorN>
FinCaso
FinEscoge
Parámetro Se refiere a
vOpcion La variable que se evaluará en los casos.
<Valor1> Caso si la variable vOpcion = Valor1
<Valor2> Caso si la variable vOpcion = Valor2
<ValorN> Caso si la variable vOpcion = ValorN
Escoge vPais
Caso ‘México’
VNacionalidad = ‘mexicano’
FinCaso
Caso ‘Francia’
VNacionalidad = ‘francés’
FinCaso
FinEscoge
Página
Computación en Acción, S.A. de C.V. Ciclos y Condiciones
Derechos Reservados® 3-4
Instrucción Mientras
Introducción Cuando necesite que algunas instrucciones sean ejecutadas hasta que encuentre el dato que
cumpla con una condición dada, podrá utilizar la instrucción Mientras.
Parámetro Se refiere a
<condición> El resultado de una comparación, los valores posibles son verdadero
o falso.
Si es verdadero se ejecutan las instrucciones dentro del ciclo, cuando
la condición es falsa sale del ciclo, y continúa con la ejecución de la
siguiente instrucción.
Comparadores Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Operadores Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
lógicos
Operador Ejemplo Descripción
Y (a > b) Y (a < c) Compara si “a” es mayor que “b” Y
si “a” es menor que “c”
O (a > b) O (a < c) Compara si “a” es mayor que “b” O
si “a” es menor que “c”
vContador = 1
Mientras vContador <= 5
Lista vContador
vContador = vContador + 1
FinMientras
Ciclos y Condiciones
Página Computación en Acción, S.A. de C.V.
3-5 Derechos Reservados®
Instrucción Mientras, Continuación
Continua La instrucción Continua se utiliza dentro de un Mientras combinado con una Condición Si,
si la condición se cumple ya no se ejecuta el resto de las instrucciones dentro del ciclo
Mientras.
Se puede utilizar para discriminar registros y ya no ejecutar el resto de las instrucciones del
ciclo.
Ejemplo En el siguiente ciclo se recorren todos los documentos y se verifica con una condición si el
saldo de los documentos es menor a 0.01, si esta condición es cierta ya no se ejecuta el resto
de instrucciones del ciclo y continua ejecutándose el ciclo desde el inicio.
Mientras tDocumentos->Encontro
// Se verifica para no imprimir documentos saldados.
Si gSaldoDocto < 0.01
tDocumentos.Busca Siguiente
Continua
Finsi
// Resto de instrucciones del ciclo
FinMientras
Página
Computación en Acción, S.A. de C.V. Ciclos y Condiciones
Derechos Reservados® 3-6
Capítulo 4
Acceso a las Bases de Datos
Visión General
Introducción En este capítulo se describe el proceso de conexión a la base de datos de la empresa con el
fin de extraer información almacenada en el sistema.
Tema Página
VISIÓN GENERAL 4-1
CONEXIÓN A LA BASE DE DATOS 4-2
CONSULTAS DE SQL 4-4
LABORATORIO 2 4-7
Introducción La conexión a las bases de datos se realiza de dos formas dependiendo el sistema que se
utilizará.
Sistema Instrucción
CONTPAQ i® CONTABILIDAD UsaEmpresa
CONTPAQ i® BANCOS UsaEmpresa
CONTPAQ i® NÓMINAS Conexion
CONTPAQ i® COMERCIAL Conexion
UsaEmpresa tEmpresa;'contpaqw1.00'
UsaEmpresa tEmpresa;'contpaqw1.00'
gServidor = @parametroConsola('Servidor')
gInstancia = @parametroConsola('Instancia')
gUsuarioSQL = @parametroConsola('NombreUsuario')
gClaveSQL = @parametroConsola('Clave')
gServidor = '//localhost/adROJA'
gInstancia = 'COMPAC'
gUsuarioSQL = 'sa'
gClaveSQL = 'COMPAC'
Introducción La instrucción consulta ejecuta una sentencia de SQL y regersa el valor en una tabla
temporal.
Parámetro Se refiere a
vConsulta Variable donde se guardará la sentencia SELECT de SQL.
‘ConsultaSQL’ Sentencia SELECT de SQL.
tMiConsulta Variable tabla donde se almacenará el resultado de la
consulta.
tEmpresa Variable empresa utilizda en la instrucción Conexion.
Mientras tMiConsulta- Este ciclo repite el grupo de instrucciones comprendidas
>Encontro entre “Mientras y FinMientras” por cada uno de los registros
de la consulta.
FinMientras
tTabla(‘Campo’) Imprime el campo del registro actual.
Al realizar consultas de este tipo, los campos del resultado
de la consulta se escribirán entre apóstrofes.
tMiConsulta.Busca Esta instrucción salta al siguiente registro de la consulta.
Siguiente
Crear la consulta Se recomienda crear primero la consulta en el SQL Server Management Studio, probar que
en el SQL funcione correctamente aquí y después copiar la consulta al reporteador.
Copiar consulta a Después de haber creado la consulta en SQL Server Management Studio para copiarla
reporteador utiliza una variable en reporteador y ve concatenándole cada renglón teniendo en cuenta lo
siguiente:
En la variable
qMiConsulta se Deja un espacio
irá concatenando Copia cada en blanco antes
cada renglón de renglón entre de cerrar el
la consulta apóstrofes apóstrofe
Apóstrofe en Si en la consulta de SQL existe un apóstrofe ‘, en reporteador se deberá escribir como \’.
consultas
Ejemplo: En la siguiente consulta se muestran diferentes casos dependiendo el tipo de
cliente: 1=Cliente, 2=Cliente-Proveedor, 3=Proveedor.
Consulta en SQL:
SELECT CRAZONSOCIAL, CASE WHEN CTIPOCLIENTE=1
THEN 'Cliente'
WHEN CTIPOCLIENTE=2
THEN 'Cliente-Proveedor'
WHEN CTIPOCLIENTE=3
THEN 'Proveedor'
END AS TIPO
FROM admClientes
Consulta en Reporteador:
qProductos = 'SELECT CRAZONSOCIAL, CASE WHEN CTIPOCLIENTE=1 '
qProductos = qProductos & 'THEN \'Cliente\' '
qProductos = qProductos & 'WHEN CTIPOCLIENTE=2 '
qProductos = qProductos & 'THEN \'Cliente-Proveedor\' '
qProductos = qProductos & 'WHEN CTIPOCLIENTE=3 '
qProductos = qProductos & 'THEN \'Proveedor\' '
qProductos = qProductos & 'END AS TIPO '
qProductos = qProductos & 'FROM admClientes '
Introducción En el siguiente laboratorio se creará la conexión a la base de datos y una consulta a la tabla
Productos.
Paso Ejercicio
1 Abre el archivo Base_Lab2 y guardálo como Productos_Lab2.
Ejercicio 2 En la sección 2. Conexión a la BDD haz lo siguiente:
Introducción En este capítulo se describen las instrucciones que permiten pedir datos al usuario.
Tema Página
VISIÓN GENERAL 5-1
INSTRUCCIÓN PARAMETROS 5-2
INSTRUCCIÓN CONTROL 5-4
CONTROL CTRLCODIGO 5-5
CONTROL CTRLCHECKBOX 5-7
CONTROL CTRLCODIGONUMERO 5-9
CONTROL CTRLFECHA 5-11
CONTROL CTRLLISTA 5-13
CONTROL CTRLRADIO 5-15
CONTROL CTRLNUMERO 5-17
CONTROL CTRLOPCION 5-19
CONTROL CTRLREAL 5-21
CONTROL CTRLVACIO 5-23
CONTROL CTRLTEXTO 5-25
PARÁMETRO DEPENDENCIA 5-27
LABORATORIO 3 5-30
Introducción Esta instrucción permite configurar la ventana Filtros que aparecerá antes de ejecutar el
reporte. Toma en cuenta que los filtros:
Sintaxis Parametros
Titulo <Titulo de la ventana de parámetros>
Pagina <Titulo de la pestaña de la página>
Parametro pParametroReceptor = <valor por omisión> Captura
Titulo <Título del parámetro>
Ayuda <Mensaje de ayuda>
Control <Nombre control>
<Parámetros del control>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
<Titulo de la ventana de parámetros> El título que aparecerá en la ventana de filtros.
<Titulo de la pestaña de la página> El título de la pestaña de filtros.
PParametroReceptor Nombre de la variable que recibirá el parámetro
seleccionado por el usuario.
<valor por omisión> El valor que aparece por omisión en la ventana
filtros.
<Título del parámetro> Nombre de la etiqueta que identifica al parámetro.
Parametros
Titulo 'Configuración de Tipos de Cambio '
Pagina 'Principal'
Parametro pTipoCambio = 11 Captura
Titulo 'Tipo de Cambio'
Ayuda 'Seleccione el tipo de cambio'
Control CtrlReal
Decimales 4
FinCaptura
FinPagina
FinParametros
Introducción Esta instrucción permite definir un control para aceptar un dato de entrada, dentro de la
función parámetros.
Introducción Muestra campos de código, respetando la mascarilla de la cuenta, acompañados del botón
<F3> que permite realizar búsquedas.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pCodigo1 = ‘00000000000’ Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlCodigo Mascarilla;’Tabla’;’CampoF3’
Valida <=;pCodigo2; <’Mensaje de error de validación’>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pCodigo1 Esta variable será la que recibirá el código 1 de la cuenta
seleccionada por el usuario
‘00000000000’ Valor por omisión
Valida Instrucción para validar la cuenta seleccionada por el usuario.
PCodigo2 Parámetro contra el que se comparará el parámetro pCodigo1
Mascarilla Mascarilla a mostrar.
‘Tabla’ Nombre de la tabla de dónde se extraerá el código.
‘CampoF3’ Campo a desplegar en la ventana además del código.
Ejemplo
(Continúa) Parametros
Titulo 'Listado de Productos, Paquetes, Servicios'
Pagina '&1 Principal'
FinPagina
FinParametros
Introducción Este control muestra una casilla que puede marcarse o desmarcarse según convenga.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametroReceptor = <booleano> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlCheckBox
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pParametroReceptor Esta variable será la que recibirá el valor seleccionado por el
usuario y puede ser cualquiera de los siguientes:
Parametros
Titulo 'Filtro Parámetros'
Pagina 'Principal'
Parametro pDetalle = false Captura
Titulo 'Imprimir detalle'
Ayuda 'Selecciona si el reporte es detallado o no'
Control CtrlCheckBox
FinCaptura
FinPagina
FinParametros
Introducción Muestra campos de código, con formato numérico, acompañados del botón <F3> que permite
realizar búsquedas.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pNumero1 = <Numero> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlCodigoNumero <Mascarilla>;<Tabla>;<busca por>
Valida <=;pNumero2; <’Mensaje de error de validación’>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pNumero1 Esta variable será la que recibirá el código 1 de la cuenta seleccionada
por el usuario
<Numero> Valor por omisión
Valida Instrucción para validar la entrada seleccionada por el usuario.
PNumero2 Parámetro contra el que se comparará el parámetro pNumero1
<Mascarilla> Mascarilla de la cadena.
<Tabla> Nombre de la tabla a abrir
<Busca por> Nombre del campo por medio del cual se realizará la búsqueda
Columnas 4;2,3,1,3
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pDiarioDel = ' 1' Captura
Titulo 'Diario &inicial'
Ayuda 'Selecciona el diario inicial a imprimir'
Control CtrlCodigoNumero '10';'DiariosEspeciales';'Nombre'
Valida <=;pDiarioAl;'No puede ser mayor que el rango final'
FinCaptura
FinPagina
FinParametros
Introducción Muestra campos con formato fecha, acompañados con un botón de despliegue de un
calendario. Mostrará el formato de la fecha conforme a lo establecido en la Redefinición de
la Empresa.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pFecha1 = ‘aaaammdd’ Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlFecha
Valida <=;pFecha2; <’Mensaje de error de validación’>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pFecha1 Esta variable será la que recibirá la fecha seleccionada por el usuario
‘aaaammdd’ Fecha en formato aaaammdd
Valida Instrucción para validar la entrada seleccionada por el usuario.
PFecha2 Fecha contra la que se compara el parámetro pFecha1
Columnas 4;2,3,1,3
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pFechaIni = '20060101' Captura
Titulo 'Fecha &inicial'
Ayuda 'Selecciona la fecha inicial'
Control CtrlFecha
Valida <=;pFechaFin;'No puede ser mayor que la fecha final'
FinCaptura
FinPagina
FinParametros
Introducción Muestra una lista de selección con los valores especificados en ella.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametro = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlLista
Datos
‘Dato1’;<Valor1>;’Dato2’,<Valor2>;…,’DatoN’,<ValorN>
FinDatos
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pParametro Esta variable será la que recibirá el elemento de la lista seleccionado por el
usuario.
Dato1 Texto del primer valor de la lista
<Valor1> Valor que se asignará a pParametro si se selecciona la opción ‘Dato1’ de la
lista
Dato2 Texto del segundo valor de la lista
<Valor2> Valor que se asignará a pParametro si se selecciona la opción ‘Dato2’ de la
lista
DatoN Texto del N valor de la lista
<ValorN> Valor que se asignará a pParametro si se selecciona la opción ‘DatoN’ de
la lista
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametro = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlRadio
Datos
‘Dato1’;<Valor1>;’Dato2’,<Valor2>;…,’DatoN’,<ValorN>
FinDatos
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pParametro Variable donde se almacenará el valor del dato seleccionado.
Dato1 Texto del primer valor de la lista
<Valor1> Valor que se asignará a pParametro si se selecciona la opción ‘Dato1’
de la lista
Dato2 Texto del segundo valor de la lista
<Valor2> Valor que se asignará a pParametro si se selecciona la opción ‘Dato2’
de la lista
DatoN Texto del N valor de la lista
<ValorN> Valor que se asignará a pParametro si se selecciona la opción ‘DatoN’
de la lista
Columnas 4;2,3,1,3
FinCaptura
FinPagina
FinParametros
Introducción Muestra un campo numérico entero con un control que permite aumentar o disminuir la
cantidad, o bien, capturarla directamente.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pNumero1 = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlNumero
Valida <= ; pNumero2 ; <’Mensaje de error de validación’>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pNumero1 Esta variable será la que recibirá el número seleccionado por el usuario.
Columnas 4;2,3,1,3
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pNivelDel = 1 Captura
Titulo 'Nivel &del'
Ayuda 'Selecciona el nivel inicial'
Control CtrlNumero
Rango 1,10
CambiaAlSalir pNivelAl = pNivelDel
Valida <=;pNivelAl; 'No puede ser mayor que el rango final'
FinCaptura
Introducción Permite seleccionar uno o más elementos del apartado de la izquierda al enviarlos al
apartado de la derecha.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pListaSeleccionada = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlOpcion
Datos
‘Dato1’;<Valor1>;’Dato2’,<Valor2>;…,’DatoN’,<ValorN>
FinDatos
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pListaSeleccionada Variable donde se almacenará la lista de opciones seleccionada.
Dato1 Texto del primer valor de la lista
<Valor1> Valor que se asignará a pParametro si se selecciona la opción
‘Dato1’ de la lista
Dato2 Texto del segundo valor de la lista
<Valor2> Valor que se asignará a pParametro si se selecciona la opción
‘Dato2’ de la lista
DatoN Texto del N valor de la lista
<ValorN> Valor que se asignará a pParametro si se selecciona la opción
‘DatoN’ de la lista
Columnas 4;2,3,1,3
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pTipoPolizas = 0 Captura
Titulo 'Tipos de pólizas'
Ayuda 'Selecciona los tipos de pólizas'
Control CtrlOpcion
Datos
'Diario';0;'Ingresos';1;'Egresos';2;'Orden';3
FinDatos
FinCaptura
FinPagina
FinParametros
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametro = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlReal
Decimales <Número de decimales>
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pParametro Variable donde se almacenará el número real.
<Número de decimales> Número de decimales que tendrá el parámetro
Columnas 1;4
Parametros
Titulo 'Configuración de Tipos de Cambio'
Pagina 'Principal'
Parametro pTipoCambio = 11 Captura
Titulo 'Tipo de Cambio'
Ayuda 'Seleccione el tipo de cambio'
Control CtrlReal
Decimales 4
FinCaptura
FinPagina
FinParametros
Introducción Deja en blanco el espacio destinado a uno de los filtros de la ventana para darle mejor
acomodo a los filtros.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro vacio = 0 Captura
Control CtrlVacio
FinCaptura
FinPagina
FinParametros
Columnas 1;4
Parametros
Titulo 'Configuración de Tipos de Cambio'
Pagina 'Principal'
Parametro pTipoCambio = 11 Captura
Titulo 'Tipo de Cambio'
Ayuda 'Anote el tipo de cambio'
Control CtrlReal
Decimales 4
FinCaptura
FinPagina
FinParametros
Introducción Este control muestra una casilla de texto el cual permite capturar una cadena.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametro = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control CtrlTexto
FinCaptura
FinPagina
FinParametros
Parámetro Se refiere a
pParametro Variable donde se almacenará el valor del dato seleccionado.
<Valor por omisión> Valor que se asignará a pParametro por omisión.
Columnas 4;2,3,1,3
Introducción Este parámetro permite activar o desactivar un control basado en el resultado de la selección
de otro control.
Sintaxis Parametros
Titulo <‘Titulo parametros’>
Pagina <‘Titulo pagina’>
Parametro pParametroPadre = <Valor por omisión> Captura
Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control ControlPadre
Dependencia <ValorFalso>;pControlHijo = False
Dependencia <ValorVerdadero>;pControlHijo = True
FinCaptura
Parámetro Se refiere a
<ValorFalso> Si pParametroPadre es igual a este valor entonces el control hijo
se desactivará.
<ValorVerdadero> Si pParametroPadre es igual a este valor entonces el control hijo
se activará.
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pCuentas = 0 Captura
Titulo 'Cuentas'
Ayuda 'Selecciona las cuentas a desplegar'
Control CtrlRadio
Datos
'Todas';1;'Algunas';2
FinDatos
Dependencia 1;pCodCta1 = False
Dependencia 1;pCodCta2 = False
Dependencia 2;pCodCta1 = True
Dependencia 2;pCodCta2 = True
FinCaptura
Introducción En el siguiente laboratorio generarás una ventana de filtros que permita escoger un rango de
productos del catálogo.
Paso Ejercicio
1 Abre el reporte Base_Lab3 y guardálo como Productos_Lab3.
Ejercicio 2 En la sección 4. Parámetros haz lo siguiente:
Introducción En este capítulo conocerá como hacer llamados a funciones de Reporteador y aprenderá a
crear funciones propias.
Tema Página
VISIÓN GENERAL 6-1
UTILIZACIÓN DE LAS FUNCIONES DEL REPORTEADOR 6-2
CREACIÓN DE FUNCIONES 6-3
INSTRUCCIÓN INCLUYE 6-5
LABORATORIO 4 6-6
Instrucción Reporteador cuenta con una serie de funciones que permiten ejecutar un conjunto de
instrucciones que al final darán un resultado.
Parámetro Se refiere a
variableResultado La variable que almacena el resultado de la
función.
@Funcion El nombre de la función.
Argumento1;argumento2;…argumentoN Cada uno de los argumentos que se envían
a la función.
vNumero = 81
vResultado = @Raiz(vNumero)
Lista vResultado
Ejemplo 2 // El siguiente ejemplo utiliza una función que extrae una subcadena de texto a partir de una
cadena inicial.
Sintaxis:
@substr(texto, posición inicial, número de caracteres a extraer).
argFechaSinFormato = ‘20130619’
vAnio = @substr(argFechaSinFormato;0;4)
Nota: Para una lista de funciones de Reporteador consulta el documento “Instrucciones del
Reporteador de CONTPAQ i®”.
Instrucción Además de las funciones ya incluidas en el Reporteador usted podrá crear nuevas
funciones, en este tema se explica como podrá hacerlo.
FinFunc
Parámetro Se refiere a
NombreFuncion Nombre de la función a crear
argumento1;argumento2;…argumentoN Cada uno de los argumentos que se envían
a la función.
// Esta instrucción hace el llamado a la función pasando como parámetro la fecha sin formato
fFormatoFecha(tCuentas(FechaRegistro))
VARIABLES LOCALES
Es posible declarar variables dentro de una función utilizando la instrucción Local. La
variable solo estará en memoria mientras esté dentro de la función, al terminar la función la
variable se destruye.
Ejemplo:
Deffunc fCuadrado()
Local vCuadrado // Esta variable solo se usará dentro de la función.
vCuadrado = argBase * argBase
retorna vCuadrado
FinFunc
Introducción La instrucción incluye sirve para hacer llamados a librerías de funciones dentro de un
reporte.
Es común utilizar una serie de funciones en distintos reportes. Para esto es posible crear un
archivo con extensión .RPT, con una serie de funciones (al cual llamaremos librería), este
archivo podrá ser incluido en un reporte base, y el reporte base podrá ser uso de las
funciones incluidas dentro de la librería.
El archivo de la librería de funciones deberá estar en la misma carpeta que el archivo del
reporte base.
Parámetro Se refiere a
<NombreLibreria> Nombre del archivo .RPT que contiene las
funciones que se desean incluir en nuestro
reporte.
// Función Hola
Deffunc fHola()
Texto C0;’Hola’
Imprime
FinFunc
// Función Adiós
Deffunc fAdios()
Texto C0;’Adiós’
Imprime
FinFunc
//*****************************************************************************
// Reporte Base
// Elaboró: Marco Antonio Muñoz
columnas 1;4
incluye saluda.rpt
fhola()
Nota: Los sistemas de CONTPAQ i® cuentan con una serie de bibliotecas con funciones
comunes a varios reportes, mismas que pueden utilizarse en reportes propios, solo es
necesario anexarlos con la instrucción Incluye.
Paso Ejercicio
1 Abre el reporte Base_Lab4 y guardálo como Productos_Lab4.
Ejercicio 2 En la sección 6.1 Definir columnas en la instrucción Columnas agrega una nueva
columna al final del reporte de 2 cm.
3 En la sección 6.2 Título del reporte agrega una nuevo título, ahora quedarán así:
CÓDIGO, PRODUCTO, FECHA, PRECIO.
4 En la sección 6.3. Consulta SQL agrega el campo CFECHAALTAPRODUCTO a
la consulta para desplegar este campo.
5 En la sección 7. Desplegar datos despliega el campo de la “Fecha del alta” del
producto antes de desplegar el “Precio”.
6 Guarda, compila y ejecuta el reporte. Observa que la fecha se muestra sin formato.
7 Crea la función fFormatoFecha que dé formato a la fecha dd/mm/aaaa.
8 Utiliza la función fFormatoFecha para mostrar el campo fecha que acabas de
agregar con formato.
9 Guarda, compila y ejecuta el reporte.
Introducción En este capítulo se conocerán las instrucciones para dar formato al reporte.
• Identificará las funciones para cambiar el tipo de letra, alinear texto, aplicar negritas,
generar encabezados, entre otras funciones de formato.
Tema Página
VISIÓN GENERAL 7-1
ALINEACIÓN DEL TEXTO 7-2
FUNCIONES DE FORMATO 7-3
LISTA DE FUNCIONES DE FORMATO 7-4
INSTRUCCIÓN ENCAB 7-5
LABORATORIO 5 7-6
Instrucción La instrucción Texto permite alinear el texto a la izquierda, centrado y derecha, a enseguida
se explica como.
Sintaxis Descripción
Texto C0;’Mensaje’ Alinea el mensaje a la izquierda de la
columna
Texto C0;’^Mensaje’ Centra el mensaje en la columna
Texto C0;’”Mensaje’ Alinea el mensaje a la derecha de la
columna anteponiendo comillas dobles
antes del texto.
Saltalin <NumLineas> Salta líneas hacia abajo.
Sintaxis Descripción
Función <Parámetro> Aplica la función a todas las columnas
[Ca..Cz].Función <Parámetro> Aplica desde la columna Ca hasta la
columna Cz.
[Ca,Cb,Cc].Función <Parámetro> Aplica a la columna Ca, la columna Cb y la
columna Cc.
Parámetro Se refiere a
Función Nombre de la función. Vea Lista de funciones de formato.
[Ca..Cz] Rango de columnas donde se aplicará el formato de la
función.
[Ca,Cb,Cc] Listado de columnas a la que se le aplicará la función
formato.
<Parámetro> El parámetro de la función puede ser cualquiera de los
siguientes:
Parámetro Se refiere a
Vacío Esta función no tendrá parámetros.
Booleano Puede ser: True o False:
Valor Descripción
True Activa el formato.
False Desactiva el formato.
Introducción La instrucción Encab sirve para definir un encabezado en el reporte. El encabezado es una
parte fija que se repetirá al inicio de cada hoja del reporte.
Sintaxis Encab
//Cuerpo del encabezado
FinEncab
Encab
Texto “^Catálogo Clientes”
Imprime
Texto C0;’Código’
Texto C1;’Razón Social’
Imprime
FinEncab
Introducción En el siguiente laboratorio se practicarán las funciones para dar formato al reporte.
Paso Ejercicio
1 Abre el reporte Base_Lab5 y guardálo como Productos_Lab5.
Ejercicio 2 Cambia el tipo de letra a ‘Arial’.
3 En la sección 6.2 Título del reporte define los títulos del reporte dentro de una
sección de encabezado (con las función Encab… FinEncab) e incluye lo siguiente:
• Activa el uso de negritas para los títulos del reporte y de las columnas.
• Ajusta el tamaño de los títulos del reporte en 12 puntos.
• Centra el título del reporte.
• Deja un espacio en blanco entre el título del reporte y el título de las
columnas.
• Agrega una línea de división entre los títulos de las columnas y los datos.
• Desactiva el uso de negritas para los títulos.
4 En la sección 7. Desplegar datos de la consulta ajusta el tamaño a 10 puntos
para desplegar los datos de la consulta.
5 De ser necesario ajusta el tamaño de las columnas.
6 Guarda, compila y ejecuta el reporte.
Tema Página
Tipos de sentencias en SQL A-2
Sentencias básicas A-3
Tipos de Existen dos tipos de sentencias en SQL, las sentencias de acción y las sentencias de
sentencias consulta.
En este taller se verán las sentencias de consulta las cuales se utilizan para la generación de
reportes.
Sentencias de Las sentencias de acción más utilizadas en SQL para dar mantenimiento a las bases de
acción en SQL datos son:
• CREATE – Crea un objeto dentro de la base de datos. Este objeto puede ser una
tabla, función, procedimiento, etcétera.
• ALTER – Permite modificar la estructura de un objeto. Se pueden agregar o quitar
campos a una tabla, modificar el tipo de un campo, agregar o quitar índices a una
tabla.
• DROP – Elimina un objeto de la base de datos. Este objeto puede ser una tabla,
función, procedimiento, etcétera.
• INSERT – Agrega uno o más registros a una sola tabla en una base de datos
relacional.
• UPDATE – Modifica los valores de un conjunto de registros existentes en una tabla.
• DELETE – Borra registros de una tabla.
Sentencias La consulta básica y más utilizada en SQL es la instrucción SELECT la cual, recupera filas o
de consultas registros de la base de datos y habilita la selección de una o varias filas o columnas de una o
en SQL más tablas.
• SELECT FROM
• WHERE
• GROUP BY
• HAVING
• HAVING vs WHERE
Estas sentencias son palabras reservadas y se distinguen con el color azul, si no está bien
capturada la sentencia, esta aparecerá en color negro.
Comentarios En SQL los comentarios se agregan con un doble guion - - antes del texto.
-- Comentarios en consulta
Ejemplos:
-- Declara una variable de tipo entero
DECLARE @lIdMoneda AS INT;
Asignar Para asignar valores a las variables en SQL se utiliza la instrucción SET.
Variables
Sintaxis:
SET @nombre_variable = 'valor';
Ejemplos:
SET @lIdMoneda = '1';
SELECT * FROM La instrucción SELECT FROM se utiliza para seleccionar uno o varios registros de una o más
tablas. El resultado de esta selección se muestra en una tabla temporal, llamada result-set.
Sintaxis:
SELECT * FROM tabla1,tabla2
Ejemplo:
La siguiente consulta muestra todos los registros de la tabla Documentos con todos sus
Campos.
SELECT campo La siguiente consulta extrae solo los campos especificados de las tablas.
FROM
Sintaxis:
SELECT campo1, campo2 FROM tabla1,tabla2
Ejemplo:
El siguiente ejemplo solo selecciona los campos CFOLIO y CTOTAL de la tabla
admDocumentos.
Sintaxis:
SELECT campo1 FROM tabla WHERE campo operador valor
Operadores:
Operador Descripción
= Igual
<> Diferente
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
BETWEEN Entre un rango
LIKE Busca un patrón
IN Para especificar múltiples valores en un campo
AND Operador lógico Y. Permite agregar más de una condición y todas de
deberán cumplir para desplegar el registro.
OR Operador lógico O. Permite agregar más de una condición y mientras una de
estas se cumpla se desplegará el registro.
Ejemplo:
La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es mayor a
2.
AND La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es mayor a
1 Y es menor a 4.
OR La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es 2 O es
4.
IN La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es 1 y 2.
BETWEEN La siguiente consulta extrae los registros de la tabla Documentos cuyo Folio está entre 2 y
10.
Alias La siguiente consulta crea el alias f del campo cFolio y d de la tabla llamada
admDocumentos para reducir el tamaño de la sentencia y facilitar su lectura.
ORDER BY ASC La siguiente consulta ordena los registros por folio en forma ascendente.
ORDER BY DESC La siguiente consulta ordena los registros por folio en forma descendente.
Sintaxis:
SELECT top num_registros FROM tabla
Sentencias Estas sentencias se utilizan para realizar cálculos sobre datos. Las más comunes son:
de cálculo
• AVG() – Regresa el valor promedio
• COUNT() – Regresa el número de filas
• MAX() – Regresa el mayor valor
• MIN() – Regresa el menor valor
• SUM ()– Regresa la suma
Estas sentencias obtienen un resultado matemático y se distinguen con el color rosa fuerte.
Si no está bien capturada la sentencia, esta aparecerá en color negro.
SUM() La siguiente consulta suma el campo CTOTAL de todos los registros de la tabla
Documentos.
GROUP BY Esta instrucción agrupa los registros que comparten una característica o un mismo valor de
acuerdo a la selección indicada.
Instrucción: SELECT (lista de atributos) FROM (lista de tablas) GROUP BY (orden en que
se agruparan la lista de atributos)
Esta sentencia por sí sola no tiene mucha utilidad, por lo que generalmente se utiliza con las
sentencias de cálculo para que esta tenga mayor funcionalidad.
GROUP BY La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la
SUM() tabla Documentos.
Ejemplo:
SELECT CIDCLIENTEPROVEEDOR, SUM(CTOTAL) AS VENTAS_X_CTE FROM
admDocumentos GROUP BY CIDCLIENTEPROVEEDOR
HAVING vs. Ambas instrucciones requieren de una condición y puede resultar confuso saber cuándo
WHERE utilizar una instrucción u otra.
La cláusula WHERE es utilizada para extraer solo aquellos registros que cumplan con un
criterio específico. La sentencia HAVING se utiliza cuando la condición o criterio necesita
realizarse sobre una agrupación de datos o campos; y tiene mayor utilidad cuando se maneja
en conjunto con GROUP BY.
HAVING Esta instrucción especifica una condición de búsqueda para un grupo o agregado y solo se
puede utilizar junto con SELECT.
Sintaxis:
SELECT campo HAVING campo
Normalmente, el HAVING se utiliza dentro de una cláusula GROUP BY. Cuando no se utiliza
dentro de esta cláusula, el HAVING se comporta como una cláusula WHERE.
WHERE La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la
tabla Documentos. Y solo agrupa aquellos documentos cuyo Total sea mayor a 2000.
JOINS Las sentencias JOIN permiten combinar registros de dos o más tablas. Existen varios tipos de
JOIN, dentro de los más utilizados están:
• INNER JOIN o JOIN. Selecciona todos los registros de ambas tablas siempre y
cuando haya coincidencias en ambas tablas.
• LEFT JOIN. Regresa todos los registros de la tabla de la izquierda que coincidan
con los registros de la tabla derecha. El resultado es NULL del lado derecho cuando
no haya coincidencia.
INNER JOIN La siguiente consulta muestra todos los documentos con sus movimientos a través de la
unión de la tabla Documentos y Movimientos tomando el campo común CIDDOCUMENTO
ubicado en ambas tablas.
LEFT JOIN La siguiente consulta muestra todos los documentos aun si no tienen movimientos.
La siguiente consulta muestra todos los documentos del mes de junio del 2013, utiliza la
función CAST para convertir el valor '20130601' del tipo DATETIME.
NULL La restricción IS NOT NULL obliga a que los valores a mostrar en esa columna no sean
NULL.
La siguiente consulta muestra todos los documentos cuyo campo cTextoExtra1 de la tabla
Documentos no es nulo (es decir sí tienen información).
CASE WHEN La expresión CASE WHEN compara una expresión con un conjunto de expresiones para
determinar su resultado.
La siguiente consulta evalúa el valor del campo cTipoCliente e imprime el texto según su
valor (1=Cliente, 2=Cliente-Proveedor, 3=Proveedor).
Tema Página
VISIÓN GENERAL B-1
CAMBIO DE INSTRUCCIONES EN CONTPAQ i® B-2
EJEMPLO. ACTUALIZACIÓN DE UN REPORTE B-4
• Definición de columnas
• Instrucciones de Formato
• Impresión de datos
• Ciclos
• Condiciones
• Funciones
• Variables
Instrucciones de Para hacer filtros, en AdminPAQ se utilizaban las instrucciones PARÁMETRO y ACEPTA
entrada para recibir datos del usuario.
Conexión a la Las instrucciones para la conexión a la Base de Datos cambian y son las que se muestran en
BDD la siguiente tabla.
Nombres de Los nombres de las tablas y los campos cambiaron, por lo que habrá que actualizarlos.
tablas y campos
Texto C0;'^FOLIO'
Texto C1;'^TOTAL' La Búsqueda
Imprime cambia por una
consulta de
// Se crea la consulta SQL
UsaTabla tDoc=tEmpresa['MGW10008']
tDoc.usaindice['IDOCUMEN01']
// Filtros
Parametros
Titulo 'Ventas'
Pagina '&1 Principal'
En la
definición de Parametro pFechaInicial = '20000101' Captura
filtros las Titulo 'Fec&ha inicial'
instrucciones
Ayuda 'Selecciona la fecha inicial de los documentos'
Acepta se
cambiarán por Control CtrlFecha
Parametros CambiaAlSalir pFechaFinal = pFechaInicial
FinCaptura
FinPagina
FinParametros
Reporte en
CONTPAQ i® // Título del reporte
COMERCIAL Texto '^VENTAS POR FECHA' Los títulos del reporte
(Continúa) Imprime NO cambian
Texto C0;'^FOLIO'
La Búsqueda
Texto C1;'^TOTAL'
cambia por una
Imprime consulta de
SQL
// Se crea la consulta
gStrQuery = 'Declare @FechaIni as datetime; '
gStrQuery = gStrQuery & 'Declare @FechaFin as datetime; '
gStrQuery = gStrQuery & 'set @FechaIni = \'' & pFechaInicial &
'\'; '
gStrQuery = gStrQuery & 'set @FechaFin = \'' & pFechaFinal &
'\'; '
gStrQuery = gStrQuery & 'SELECT CFOLIO,CTOTAL FROM
admDocumentos d WHERE CIDDOCUMENTODE=4'
gStrQuery = gStrQuery & 'AND d.cFecha >= @FechaIni AND
d.cFecha <= @FechaFin'
// Se ejecuta la consulta
Consulta tMiConsulta = tEmpresa[gStrQuery]
Tema Página
VISIÓN GENERAL C-1
REPORTES EN EXCEL® C-2
REPORTES SENSIBLES C-7
REPORTES EN CONTPAQ I® NÓMINAS C-12
Reportes en Es posible crear reportes con salida directa a Excel® utilizando VBA (Visual Basic for
Excel Applications). De esta forma podrá:
• Dar formato a celdas (tamaño, color, tipo de letra, etcétera) de Excel® directamente
desde el Reporteador.
• Crear Macros en VBA en un libro de Excel® y mandarlas ejecutar desde código del
Reporteador.
• Hacer uso de las funciones de Excel® como tablas dinámicas, gráficos,
ordenamiento de datos, entre otros, todo directamente con código desde el
Reporteador.
Instrucciones Para crear un reporte en Excel, es necesario utilizar una serie de instrucciones básicas para
OLE crear un libro de Excel. Para el resto de las instrucciones es necesario conocer VBA.
Crear un objeto Para crear un objeto OLE se utiliza la instrucción ObjetoOLE y se puede hacer de dos
OLE formas.
//Ejemplo 1:
Ejemplo 2:
ObjetoOLE excel
excel = ObjetoOLE.crear('Excel.Application')
Métodos y Una vez creado el objeto se podrán utilizar sus métodos y asignarle valores a sus
propiedades propiedades:
// Ejemplos
excel.visible=true
ws.Range('A1').Value='Hola mundo'
Crear un libro El siguiente código crea un libro de Excel y manda el mensaje ‘Hola mundo’ en la celda A1.
nuevo
Columnas 1;1
ObjetoOLE Excel = ObjetoOLE.crear('Excel.Application')
ObjetoOLE wb=Excel.Workbooks.add(-4167)
ObjetoOLE ws=wb.Sheets('Hoja1')
Excel.Visible=true
ws.Range('A1').Value='Hola Mundo'
Ordenación en El siguiente código muestra cómo se ordenan datos en Excel, además se hace uso de la
Excel constante ObjetoOLE.ausente.
// Ejemplo:
constante xlCentrarEnSeleccion 7
constante xlAutomatico -4105
constante xlManual -4135
constante xlInferior -4107
constante xlSubrayadoDoble -4119
constante xlIzquierda -4131
constante xlMediano -4138
constante xlNinguno -4142
constante xlDerecha -4152
constante xlSuperior -4160
constante xlHojaCalculo -4167
constante xlLineaSimple 1
constante xlBordeSuperior 8
constante xlBordeInferior 9
constante xlBordeIzquierda 7
constante xlBordeDerecha 10
constante xlCentro -4108
// Abrir excel
ObjetoOLE Excel = ObjetoOLE.crear('Excel.Application')
// Crear un libro
ObjetoOLE wb=Excel.Workbooks.add(xlHojaCalculo)
// Mostrar Excel
excel.visible=-1
vReng=1
// Ultima Columna
argColFinal='I'
vReng=vReng+1
vReng=vReng+1
vReng=vReng+1
vReng=vReng+1
// Agregar Autofiltro
ws.rows(8).AutoFilter
Introducción El Reporteador tiene la capacidad de crear reportes sensibles al contexto, al hacer clic en un
área del reporte se ejecutará un segundo reporte basado en la información del primero.
DefRegion fFuncionSensible
[CN].RegionInfo vStringParametros
Parámetro Se refiere a
fFuncionSensible Nombre de la función que se ejecutará.
aColumna Número de columna sensible.
aParametros String con los argumentos de la función.
parametro1,…, Parámetros a enviar al reporte destino.
parametroN
Importante: Los parámetros deben ser exactamente los
mismos que se reciben en el reporte destino.
aParametros String fijo requerido por la función.
CN Define la columna sensible al contexto.
vStringParametros String con los parámetros a enviar a la función.
Columna En el reporte fuente, se define la columna del “Folio” como area sensible al contexto, quiere
sensible decir que al hacer clic sobre el folio se ejecutará el reporte destino mostrando los movimientos
de póliza de ese folio.
Importante: Los parámetros que se envían desde el reporte fuente deben ser exactamente
los mismos que se reciben en el reporte destino.
// ********************
// fEjecutaMovimientos
// Se define la función que ejecutará el reporte de movimientos de póliza
//
// Argumento - aColumna: Número de columna
// Argumento - aMovimientos: String que contiene los campos "Ejercicio", "Periodo", "Tipo" y
//"Folio" que se enviarán como parámetro
//al reporte "Sensibles_Movimientos.RTW"
// ********************
// Se abre la empresa
usaempresa tEmpresa;'Contpaq i'
// Se procesa el query
tPolizas.Procesa
[C3].RegionInfo tPolizas(Ejercicio) & ',' & tPolizas(Periodo) & ',' & tPolizas(TipoPol) &
',' & tPolizas(Folio)
// Se abre la empresa
usaempresa tEmpresa;'Contpaq i'
Mientras tMovimientos->Encontro
// Se despliegan los campos del registro actual en pantalla
Texto C0;tMovimientos(Ejercicio)
Texto C1;tMovimientos(Periodo)
Texto C2;tMovimientos(TipoPol)
Texto C3;tMovimientos(Folio)
Si tMovimientos(TipoMovto)=false
Texto C4;tMovimientos(Importe)
Sino
Texto C5;tMovimientos(Importe)
FinSi
Imprime
// Se salta al siguiente registro
tMovimientos.Busca Siguiente
FinMientras
Introducción Los reportes en CONTPAQ i® NÓMINAS con conexión a SQL son prácticamente igual a los
reportes de CONTPAQ i® COMERCIAL, solo cambian las instrucciones de conexión que se
explican a continuación.
Conexión a las La siguiente instrucción establece una conexión a las tablas de la empresa:
tablas de la
empresa Conexion conexionNomipaq = Conexion.crear('jdbc:jtds:sqlserver://' &
@parametroConsola('Servidor') & '/'& @parametroConsola('NombreEmpresa') &';instance='&
@parametroConsola('Instancia'),@parametroConsola('NombreUsuario'),@parametroConsola(
'Clave'))
Conexión a las La siguiente instrucción establece una conexión a las tablas generales:
tablas generales
Conexion conexionNomipaq2 = Conexion.crear('jdbc:jtds:sqlserver://' &
@parametroConsola('Servidor') & '/nomGenerales;instance='&
@parametroConsola('Instancia'),@parametroConsola('NombreUsuario'),@parametroConsola(
'Clave'))
Consulta ConsultaE=conexionNomipaq2['SELECT
e.NombreEmpresa,e.RFC,e.RegistroIMSS,e.FechaConstitucion,e.Homoclave,
e.mascarillacodigo FROM nom10000 e WHERE e.IdEmpresa = \''& idemp &'\'' ]
Nota: Observe que el apóstrofe es caracter reservado tanto en SQL como en reporteador. A
fin de que el apostrofe se tome como caracter literal, se deberá anteponer una diagonal
inversa. Ejemplo \’.
Editor de Para ejecutar el Editor de reportes de CONTPAQ i® NÓMINAS haga doble clic sobre el
reportes archivo run editor.bat ubicado en la siguiente ruta: