Вы находитесь на странице: 1из 108

MANUAL DE REPORTEADOR

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 21220090119


CONTPAQ i® NÓMINAS 11020090119
CONTPAQ i® COMERCIAL 10020131007
Índice

INTRODUCCIÓN AL CURSO DE REPORTEADOR DE CONTPAQ i® PÁGINA


VISIÓN GENERAL 1

CAPÍTULO 1. INICIO DE UN REPORTE 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

CAPÍTULO 2. INSTRUCCIONES DE SALIDA 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

CAPÍTULO 3. CICLOS Y CONDICIONES PÁGINA


VISIÓN GENERAL 3-1
INSTRUCCIÓN SI 3-2
INSTRUCCIÓN CASO 3-4
INSTRUCCIÓN MIENTRAS 3-5

CAPÍTULO 4. ACCESO A LAS BASES DE DATOS 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

CAPÍTULO 5. INSTRUCCIONES DE ENTRADA 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

Continúa en la siguiente página


Índice, Continuación

CAPÍTULO 5. INSTRUCCIONES DE ENTRADA CONTINÚA PÁGINA


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

CAPÍTULO 6. FUNCIONES 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

CAPÍTULO 7. FORMATO 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

APÉNDICE A SENTENCIAS BÁSICAS EN SQL PARA REPORTES PÁGINA


Tipos de sentencias en SQL A-2
Sentencias básicas A-3

APÉNDICE B ACTUALIZACIÓN DE REPORTES DE ADMINPAQ PÁGINA


VISIÓN GENERAL B-1
CAMBIO DE INSTRUCCIONES EN CONTPAQ i® B-2
EJEMPLO. ACTUALIZACIÓN DE UN REPORTE B-4

APÉNDICE C CASOS ESPECIALES PÁGINA


VISIÓN GENERAL C-1
REPORTES EN EXCEL® C-2
REPORTES SENSIBLES C-7
REPORTES EN CONTPAQ I® NÓMINAS C-12
Introducción al curso de Reporteador de CONTPAQ i®
Visión General

Introducción El Reporteador de CONTPAQ i® es un lenguaje de programación creado por CONTPAQ i®


que fue desarrollado para la creación de nuevos reportes y modificación de los ya existentes
en:

• CONTPAQ i® CONTABILIDAD
• CONTPAQ i® BANCOS
• CONTPAQ i® NÓMINAS
• CONTPAQ i® COMERCIAL

Objetivos Los objetivos de este manual son que el participante:

• Conozca el lenguaje de Reporteador de CONTPAQ i®.


• Tenga los conocimientos necesarios para la modificación de los reportes existentes
dentro de CONTPAQ i® CONTABILIDAD, CONTPAQ i® BANCOS, CONTPAQ i®
NÓMINAS y CONTPAQ i® COMERCIAL.
• Sea capaz de crear un reporte nuevo para extraer la información de CONTPAQ i®
CONTABILIDAD, CONTPAQ i® BANCOS, CONTPAQ i® NÓMINAS y CONTPAQ i®
COMERCIAL a la medida de sus necesidades.

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.

Al término de algunos capítulos se realizará un laboratorio en el cual se irá construyendo un


reporte. Cada laboratorio tiene relación con el anterior de tal forma que al finalizar el curso se
tendrá un reporte terminado.

Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1
Capítulo 1
Inicio de un reporte
Visión General

Introducción En este capítulo se describen los pasos iniciales y las instrucciones principales necesarias
para comenzar con el desarrollo de un reporte.

Objetivos Al término de este capítulo el participante conocerá:

• Algunos conceptos básicos previos al desarrollo de un reporte.


• Cómo abrir el Editor de reportes de CONTPAQ i®.
• Cómo abrir y guardar reportes.
• La forma de compilar y ejecutar reportes.
• Cómo agregar comentarios a un reporte.
• Cómo definir el número y tamaño de columnas para el reporte.
• El manejo de las variables en Reporteador.

En este capítulo Este capítulo contiene los siguientes temas:

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

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-1
Preparación para la creación de un reporte

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?

MiReporte.RTW Línea de error

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-2
Preparación para la creación de un reporte, Continuación

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>

• Los reportes propios se recomienda guardarlos en la carpeta Mis Reportes ubicada


dentro de cada una de las carpetas anteriores.
Al hacer esto los reportes aparecerán automáticamente en el menú Reportes, opción Mis
Reportes.

Nota: Si se generan subcarpetas dentro de la carpeta Mis Reportes las subcarpetas


aparecerán como submenús.

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.

Nota: Estos pasos se verán a detalle a lo largo del curso.

Continúa en la siguiente página

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-3
Preparación para la creación de un reporte, Continuación

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.

A continuación se listan dichas reglas:

• 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.

Estructura de un A continuación se lista un orden sugerido para la estructura de un reporte:


reporte
1. Descripción del reporte. Escribe en comentarios los datos generales del reporte como el
nombre del reporte, fecha de elaboración, quién lo elaboró, etcétera.

2. Conexión a la BDD. Crea la conexión a la base de datos de la empresa.

3. Librerías. Define las librerías de funciones externas a utilizar dentro del reporte.

4. Parámetros. Crea la ventana de filtros del reporte.


4.1 Consulta de SQL para crear parámetros. En ocasiones es necesario crear una
consulta de SQL para crear la ventana de filtros.
4.2 Crear parámetros. Define la ventana de filtros del reporte.

5. Funciones. Crea las definiciones de las funciones a utilizar en el reporte.

6. Cuerpo. Estructura principal del reporte.


6.1 Columnas. Define cuántas columnas tendrá el reporte y sus tamaños.
6.2 Título. Título del reporte, título de cada columna.
6.3 Crear Consulta principal en SQL. Declara la consulta principal en SQL para
extraer la información del reporte.
6.4 Ejecutar la consulta principal de SQL. Se ejecuta la consulta creada en el
punto 6.3.

7 Desplegar datos de la consulta. Despliega en pantalla la información de la consulta.

Nota: Las instrucciones se verán a detalle conforme se avance en el curso.

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-4
Editor de reportes de CONTPAQ i®

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:

• En CONTPAQ i® CONTABILIDAD y CONTPAQ i® COMERCIAL ve al menú


Reportes opción Editor de Reportes.

Funciones del A continuación se describen las funciones el Editor de Reportes:


Editor

Menú Comando Teclas Botón Acción


rápidas
Archivo Nuevo <Ctrl+ N> Crea un nuevo reporte.

Archivo Abrir <Ctrl+O> Abre un reporte existente.

Archivo Guardar <Ctrl+S> Guarda el RPT que se tiene abierto.

Archivo Guardar Como Permite guardar el archivo RPT con un nombre diferente.
Archivo Imprimir Imprime el código fuente.

Archivo Salir Sale del editor de reportes.

Edición Deshacer <Ctrl+Z> Deshace el último cambio generado en el código.


Edición Rehacer <Ctrl+Y> Rehace el último cambio generado en el código.
Edición Cortar <Ctrl+X> Corta el texto previamente seleccionado.

Edición Copiar <Ctrl+C> Copia el texto previamente seleccionado.

Edición Pegar <Ctrl+V> Pega el texto previamente cortado o copiado.

Edición Buscar <Ctrl+F> Buscar un texto dentro del código.


Edición Bookmark <Ctrl+B> Agrega una marca en la línea de código actual.
Edición Next bookmark <F2> Se desplaza a la siguiente marca dentro del código.
Edición Ir a… <Ctrl+L> Permite saltar a una línea de código específica.
Generar Generar archivo Compila el archivo RPT actual (genera el archivo RTW).
RTW
Generar Ejecutar reporte Ejecuta el reporte actual.

Ayuda Acerca del Editor de Muestra información general del Editor de Reportes
Reportes como la versión.

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-5
Comentarios

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
*/

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-6
Instrucción Columnas

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.

Sintaxis COLUMNAS NumColumnas;Ancho1,Ancho2,…,AnchoN

Parámetros A continuación se muestra la descripción de los parámetros:

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

---------- 10 cm ---------- - 2.5 cm - ---- 4 cm -------- 1cm

TAMAÑO DE LAS ÚLTIMAS COLUMNAS


Si no especifica el tamaño de todas las columnas se tomará por omisión el tamaño de la
última.
Ejemplo:
Columnas 5;2,3 // La primera columna será de 2 centímetros el resto será de 3 cms.

TAMAÑO DE COLUMNAS CONTIGUAS


En el caso de tener columnas contiguas del mismo tamaño se podrá utilizar la siguiente
sintaxis
Ejemplo:
Columnas 5;4*2,3 // Las primeras 4 columnas serán de 2 centímetros, la última de 3 cms.

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-7
Variables

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.

Ejemplos A continuación se muestran algunos ejemplos de la utilización de variables:

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.

Dato Nomenclatura Ejemplo


Tabla Anteponer una ‘t’ tProductos
Variables globales Anteponer una ‘g’ gMoneda
Parámetros Anteponer una ‘p’ pIdioma
Función Anteponer una ‘f’ fBuscaProductos
Variables locales Anteponer una ‘l’ lContador
Argumentos Anteponer una ‘a’ aCodigo

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-8
Asignación de valores a una variable

Introducción En Reporteador solo hay un tipo de variable en la que es posible almacenar tanto valores de
texto como valores numéricos.

Es importante hacer la distinción entre un valor de texto y un numérico, ya que al hacer la


comparación ambos tendrán que ser del mismo tipo. En el capítulo Funciones se verán las
funciones de conversión de texto a numérico y viceversa.

Importante: Todos los valores de texto en Reporteador se anotan entre apóstrofes sencillos
(‘).

Sintaxis vNombreVariable = Dato

Parámetros A continuación se muestra la descripción de los parámetros:

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.

Ejemplos A continuación se muestran algunos ejemplos en la asignación de variables:

Tipo de dato Descripción de la variable


Texto vNombreCuenta = 'Activo'

Resultado: La variable vNombreCuenta tendrá almacenado el dato


de texto ‘Activo’
Numérico vTotalPeriodo = 2300

Resultado: La variable vNombreCuenta tendrá almacenado el dato


numérico 2300, con el cuál se podrán realizar operaciones aritméticas
Booleano vImprimeDetalle = True
vImprimeDetalle = False

Resultado: La variable vImprimeDetalle recibe el valor True


(verdadero). También puede asignarse False (falso)
Igualar variables vPeriodoIni = vPeriodoFin

Resultado: A la variable vPeriodoIni se le asigna el mismo valor de la


variable vPeriodoFin

Concatenar Para concatenar cadenas de texto se utiliza &.


cadenas
Ejemplo:
vSaludo = 'Hola'
vSaludo = vSaludo & 'Mundo'

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-9
Inicialización de una variable

Introducción En Reporteador no es necesario hacer la declaración de una variable, sin embargo se


sugiere inicializarlas antes de utilizarlas; la inicialización se hace en vacío o en 0 dependiendo
del uso que le vaya a dar a la misma.

Descripción A continuación se describe la sintaxis para la inicialización de una variable:

Sintaxis Se refiere a
vNombreVariable = 0 Si es valor numérico
vNombreVariable = ' ' Si es valor de texto (espacio entre
apóstrofes)

Ejemplos vNombreProducto = ' '// Se inicializa la variable en vacío ya


//que almacenará un dato tipo texto.

vTotalPeriodo = 0 // Se inicializa la variable en 0 ya que


//almacenará un dato tipo numérico.

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-10
Constantes

Introducción Las constantes se definen para hacer referencia con un nombre a un valor numérico,
facilitando así la programación.

Sintaxis CONSTANTE NombreConstante NumeroConstante

Descripción A continuación se describe la sintaxis para la inicialización de una variable:

Sintaxis Se refiere a
NombreConstante Nombre con el que se identificará la
constante.
NumeroConstante Valor que se asignará a la constante

Ejemplos CONSTANTE PI 3.1416


CONSTANTE MESES 12
CONSTANTE DIAS 7

Inicio de un reporte Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
1-11
Arreglos de datos

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.

Sintaxis vNombreVariable[índice] = Dato

Parámetros A continuación se muestra la descripción de los parámetros:

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.

Ejemplo // Ejemplo de arreglo de datos


// Elaboró: Marco A. Muñoz

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.

vMiVariable[0] = ‘Total’ // Asigna un valor de texto en la casilla 0 de la variable vMiVariable


vMiVariable[1] = ‘Del’ // Asigna un valor de texto en la casilla 1 de la variable vMiVariable
vMiVariable[2] = ‘Periodo’ // Asigna un valor de texto en la casilla 2 de la variable vMiVariable
vMiVariable[3] = 12 // Asigna un valor numérico en la casilla 3 de la variable vMiVariable

En memoria tendrá lo siguiente:

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:

vMiVariable = ‘Total’[c0] // Asigna el texto ‘Total’ en la casilla 0 de la variable.

Computación en Acción, S.A. de C.V. Inicio un reporte


Derechos Reservados®
Página
1-12
Capítulo 2
Instrucciones de Salida
Visión General

Introducción En este capítulo se describen las instrucciones de salida las cuales sirven para mostrar datos
en pantalla.

Objetivos Al término de este capítulo el participante conocerá:

• Cómo desplegar etiquetas y títulos.


• Cómo mostrar los valores almacenados en variables.
• Cómo desplegar el valor de los registros.

Instrucciones de Las instrucciones de salida que se utilizan en Reporteador son:


salida
• Lista
• Texto e Imprime

En este capítulo Este capítulo contiene los siguientes temas:

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

Instrucciones de Salida Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
2-1
Instrucción Lista

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.

Después de llamar a la función Lista automáticamente se da un salto a la siguiente línea en


pantalla.

Sintaxis A continuación se muestra la sintaxis de la instrucción:

Sintaxis Resultado
Lista ‘Dato1’,’Dato2’,’Dato3’ Despliega datos de texto
Lista vMiVariable Despliega los datos almacenados en la
variable vMiVariable

Parámetros A continuación se muestra la descripción de los parámetros:

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

Ejemplo 1 // Ejemplo de instrucción Lista


// Elaboró: Marco A. Muñoz

Columnas 3;2,3,2
Lista 'Código','Nombre','Precio'

0 1 2
Código Nombre Precio

Continúa en la siguiente página

Página
Computación en Acción, S.A. de C.V. Instrucciones de Salida
Derechos Reservados® 2-2
Instrucción Lista, Continuación

Ejemplo 2 // Ejemplo de instrucción Lista


// Elaboró: Marco A. Muñoz

Columnas 3;2,3,2

vMiVariable[0] = 'Código'
vMiVariable[1] = 'Nombre'
vMiVariable[2] = 'Precio'
Lista vMiVariable

0 1 2
Código Nombre Precio

Instrucciones de Salida Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
2-3
Instrucciones Texto e Imprime

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.

Importante: Siempre se deberá utilizar la instrucción Imprime después de un grupo de


instrucciones Texto, ya que esta instrucción es la que muestra la información en pantalla, si
no se incluye esta instrucción no aparecerá nada en pantalla.

Sintaxis 1 Texto C0;’Mensaje en la primera columna’


Texto C1;’Mensaje en la segunda columna’

Texto CN; ’Mensaje en la N columna’
Imprime

Parámetros A continuación se muestra la descripción de los parámetros:

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

Ejemplo 1 // Ejemplo de instrucción Texto e Imprime


// Elaboró: Marco A. Muñoz

Texto C3;12
Texto C1;'Del'
Texto C0;'Total'
Texto C2;'Periodo'
Imprime

0 1 2 3
Total Del Periodo 12

Continúa en la siguiente página

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

Sintaxis 2 Texto <posicionCentímetros>;’Mensaje’


Imprime

Parámetros A continuación se muestra la descripción de los parámetros:

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

Sintaxis 3 Texto ’Mensaje’


Imprime

Parámetros A continuación se muestra la descripción de los parámetros:

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

Alinear texto En la siguiente tabla se muestra cómo alinear el texto:

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.

Instrucciones de Salida Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
2-5
Instrucción Imprime

Introducción Es posible utilizar la instrucción Imprime para mostrar en pantalla los datos de una variable

Sintaxis vVariable[0] = dato0


vVariable[1] = dato1

vVariable[N] = datoN
Imprime vVariable

Ejemplo lRenglon[0] = ‘Código’


lRenglon[1] = ‘Nombre’
lRenglon[2] = ‘Precio’
Imprime lRenglon

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.

Objetivos En el siguiente laboratorio pondrá en práctica:

• El manejo del Editor de reportes.


• Compilación y ejecución de reportes.
• Manejo de las funciones de salida.

A continuación se describen los pasos del laboratorio:

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:

• Cambia la descripción del reporte indicando que será un reporte de


Catálogo Productos.
• Define 3 Columnas de 3, 9 y 3 cm respectivamente.
• Pon el título del reporte “CATÁLOGO PRODUCTOS”.
• Pon los títulos de las columnas: CÓDIGO, PRODUCTO, PRECIO”.
5 Guarda, compila y ejecuta el reporte.

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.

AGREGAR REPORTES EN EL MENÚ DEL SISTEMA


Recuerda que al guardar el reporte en la ruta:
<C:\Compac\Empresas\Reportes\<sistema>\Mis Reportes>
El reporte aparecerá en el menú Reportes opción Mis Reportes dentro del sistema.

Continúa en la siguiente página

Instrucciones de Salida Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
2-7
Laboratorio 1, Continuación

Resultado El reporte deberá quedar como se muestra a continuación:

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.

Objetivos Al término de este capítulo conocerá como:

• Repitan una serie de instrucciones dentro de un ciclo.


• Condicionar la ejecución de instrucciones.

En este capítulo Este capítulo contiene los siguientes temas:

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ámetros A continuación se muestra la descripción de los parámetros:

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:

Comparador Ejemplo Descripción


= a=b Compara si “a” es igual que “b”
!= a != b Compara si “a” es diferente que “b”
! !a Compara si no es “a”
> a>b Compara si “a” es mayor que “b”
< a<b Compara si “a” es menor que “b”
>= a >= b Compara si “a” es mayor o igual que “b”
<= a <= b Compara si “a” es menor o igual que “b”

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”

Continúa en la siguiente página

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 // Ejemplo 1 de una condición.


Si vEdad >= 18
Lista ‘Mayor de edad’
SiNo
Lista ‘Menor de edad’
FinSi

// Ejemplo 2. Es posible prescindir del “Sino” y utilizar únicamente el bloque Si...FinSi


Si vImprime = True
// Imprime datos
FinSi

SOLO CONDICIÓN VERDADERA


Es posible utilizar la instrucción Si...FinSi, excluyendo el bloque Sino.

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.

Sintaxis Escoge vOpcion

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ámetros A continuación se muestra la descripción de los parámetros:

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

Ejemplo // Ejemplo de caso.


// Elaboró: Marco A. Muñoz

Escoge vPais

Caso ‘México’
VNacionalidad = ‘mexicano’
FinCaso

Caso ‘Estados Unidos’


VNacionalidad = ‘estadounidense’
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.

En esta instrucción la condición se evalúa antes de ejecutarse el ciclo.

Sintaxis Mientras <condición>


// instrucciones a repetir mientras la condición sea verdadera
FinMientras

Parámetros A continuación se muestra la descripción de los parámetros:

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:

Comparador Ejemplo Descripción


= a=b Compara si “a” es igual que “b”
!= a != b Compara si “a” es diferente que “b”
! !a Compara si no es igual a “a”
> a>b Compara si “a” es mayor que “b”
< a<b Compara si “a” es menor que “b”
>= a >= b Compara si “a” es mayor o igual que “b”
<= a <= b Compara si “a” es menor o igual que “b”

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”

Ejemplo // Ejemplo de un ciclo mientras.


// Elaboró: Marco A. Muñoz
// Este ejemplo mostrará en pantalla el valor de la variable vContador desde 1 hasta 5

vContador = 1
Mientras vContador <= 5
Lista vContador
vContador = vContador + 1
FinMientras

Continúa en la siguiente página

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.

Sintaxis Mientras <condición 1>


// instrucciones a repetir mientras la condición 1 sea verdadera
Si <condición 2>
// instrucciones a ejecutar si se cumple la condición 2
Continua
FinSi
// instrucciones a repetir mientras la condición 2 sea falsa
FinMientras

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.

Objetivos Al término de este capítulo conocerá como:

• Hacer la conexión a la empresa.


• Abrir una tabla de la base de datos de la empresa.
• Hacer búsquedas de registros en tablas.

En este capítulo Este capítulo contiene los siguientes temas:

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

Acceso a las Bases de Datos Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
4-1
Conexión a la Base de Datos

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

Enseguida se muestran ejemplos de conexión en cada sistema:

CONTPAQ i® // La siguiente línea establece una conexión a la empresa


CONTABILIDAD //activa de CONTPAQ i® CONTABILIDAD:

UsaEmpresa tEmpresa;'contpaqw1.00'

CONTPAQ i® // La siguiente línea establece una conexión a la empresa


BANCOS //activa de CONTPAQ i® BANCOS:

UsaEmpresa tEmpresa;'contpaqw1.00'

CONTPAQ i® // Las siguientes líneas establecen una conexión a la empresa


NÓMINAS //activa de CONTPAQ i® NÓMINAS. Para este sistema se requieren
//2 conexiones: la primera es a las tablas de la empresa y la
//segunda a las tablas generales.

// Se establece una conexión a las tablas de la empresa


Conexion conexionNomipaq =
Conexion.crear('jdbc:jtds:sqlserver://' &
@parametroConsola('Servidor') & '/'&
@parametroConsola('NombreEmpresa') &';instance='&
@parametroConsola('Instancia'),@parametroConsola('NombreUsuari
o'),@parametroConsola('Clave'))

// Se establece una conexión a las tablas generales


Conexion conexionNomipaq2 =
Conexion.crear('jdbc:jtds:sqlserver://' &
@parametroConsola('Servidor') & '/nomGenerales;instance='&
@parametroConsola('Instancia'),@parametroConsola('NombreUsuari
o'),@parametroConsola('Clave'))

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Acceso a las Bases de Datos


Derechos Reservados®
Página
4-2
Conexión a la Base de Datos, Continuación

CONTPAQ i® // El siguiente ejemplo establece una conexión a la base de


COMERCIAL //datos de una empresa de CONTPAQ i COMERCIAL.
(Sistema)
// Este código se utiliza con los reportes que ya se incluyen
//en el sistema.

gServidor = @parametroConsola('Servidor')
gInstancia = @parametroConsola('Instancia')
gUsuarioSQL = @parametroConsola('NombreUsuario')
gClaveSQL = @parametroConsola('Clave')

Conexion tEmpresa = Conexion.crear('jdbc:jtds:sqlserver:' &


gServidor & ';instance=' & gInstancia,gUsuarioSQL,gClaveSQL)

CONTPAQ i® // El siguiente ejemplo establece una conexión a la base de


COMERCIAL //datos de una empresa de CONTPAQ i COMERCIAL.
(Editor)
// Este código se utiliza con los reportes que se están
//probando en el Editor de reportes, se pasan los parámetros
//de forma manual: Nombre del servidor, Instancia, Usuario de
//SQL y Contraseña de SQL.

gServidor = '//localhost/adROJA'
gInstancia = 'COMPAC'
gUsuarioSQL = 'sa'
gClaveSQL = 'COMPAC'

Conexion tEmpresa = Conexion.crear('jdbc:jtds:sqlserver:' &


gServidor & ';instance=' & gInstancia,gUsuarioSQL,gClaveSQL)

Acceso a las Bases de Datos Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
4-3
Consultas de SQL

Introducción La instrucción consulta ejecuta una sentencia de SQL y regersa el valor en una tabla
temporal.

Sintaxis vConsulta = ‘ConsultaSQL’


Consulta tMiConsulta = tEmpresa[vConsulta]
Mientras tMiConsulta->Encontro
Lista tTabla(‘Campo’)
tMiConsulta.Busca Siguiente
FinMientras

Parámetros A continuación se muestra la descripción de los parámetros:

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

Ejemplo // Se asigna la consulta de SQL en la variable qProductos


qProductos = 'SELECT cCodigoProducto, cNombreProducto,
cPrecio1 FROM admProductos'

// Se ejecuta la consulta almacenada en la variable qProductos


//el resultado se almacena en tMiConsulta
Consulta tMiConsulta = tEmpresa[qProductos]

// Se despliegan los datos de la consulta, nota que los


//nombres de los campos van entre //apóstrofes
Mientras tMiConsulta->Encontro
// Se despliegan los campos del registro actual en
//pantalla
Lista tMiConsulta('cCodigoProducto'),
tMiConsulta('cNombreProducto'), tMiConsulta('cPrecio1')
// Se salta al siguiente registro
tMiConsulta.Busca Siguiente
FinMientras

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Acceso a las Bases de Datos


Derechos Reservados®
Página
4-4
Consultas de SQL, Continuación

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:

• Crea una variable donde se guardará la consulta.


• Concatena a esta variable cada renglón de la consulta.
• Cada renglón de la consulta deberá ir entre apóstrofes.
• Deja un espacio en blanco al final de cada renglón antes del apóstrofe.
• Si en la consulta de SQL existe un apóstrofe ‘, en reporteador se deberá escribir
como \’.

Ejemplo de Ejemplo de código en SQL:


copiado de
consulta SQL SELECT cCodigoProducto, cNombreProducto,
cPrecio1, cPrecio2, cPrecio3, cPrecio4,
cPrecio5, cPrecio6, cPrecio7, cPrecio8,
cPrecio9, cPrecio10
FROM admProductos

Al copiar el código de SQL a Reporteador quedará así:

qMiConsulta = ‘SELECT cCodigoProducto, cNombreProducto, ‘


qMiConsulta = qMiConsulta & ‘cPrecio1, cPrecio2, cPrecio3, cPrecio4, ‘
qMiConsulta = qMiConsulta & ‘cPrecio5, cPrecio6, cPrecio7, cPrecio8, ‘
qMiConsulta = qMiConsulta & ‘cPrecio9, cPrecio10 ‘
qMiConsulta = qMiConsulta & ‘FROM admProductos ‘

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

Continúa en la siguiente página

Acceso a las Bases de Datos Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
4-5
Consultas de SQL, Continuación

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 '

Computación en Acción, S.A. de C.V. Acceso a las Bases de Datos


Derechos Reservados®
Página
4-6
Laboratorio 2

Introducción En el siguiente laboratorio se creará la conexión a la base de datos y una consulta a la tabla
Productos.

Objetivos En el siguiente laboratorio se pone en práctica como:

• Hacer una conexión a una empresa de CONTPAQ i® COMERCIAL.


• Hacer una consulta de SQL.
• Desplegar cada uno de los registros de la consulta de SQL.

A continuación se muestran los pasos para realizar el laboratorio:

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:

• Quita los comentarios del código que hace la conexión a la BDD.


• Modifica los parámetros (servidor, instancia, usuario, clave) para que
coincidan con los de tu pc.
3 En la sección 6. Consulta SQL haz lo siguiente:

• Quita los comentarios de la línea donde se crea la consulta.


• Modifica la consulta para que extraiga el Código, Nombre y Precio 1 de la
tabla Productos.
4 En la sección 7. Desplegar datos de la consulta haz lo siguiente:

• Quita los comentarios del ciclo Mientras.


• Modifica el código para que despliegue los campos Código, Nombre y
Precio 1 de la tabla Productos.
5 Guarda, compila y ejecuta el reporte.

Resultado El reporte deberá quedar como se muestra a continuación:

Acceso a las Bases de Datos Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
4-7
Capítulo 5
Instrucciones de Entrada
Visión General

Introducción En este capítulo se describen las instrucciones que permiten pedir datos al usuario.

Objetivos Al término de este capítulo conocerás:

• La forma de crear una ventana de filtros.


• Los diferentes controles que se pueden incluir en la ventana de filtros.

En este capítulo Este capítulo contiene los siguientes temas:

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

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-1
Instrucción Parametros

Introducción Esta instrucción permite configurar la ventana Filtros que aparecerá antes de ejecutar el
reporte. Toma en cuenta que los filtros:

• Aparecerán en pares (de dos en dos).


• Pueden acomodarse por hojas que se visualizarán en la ventana como pestañas y
cada pestaña puede tener su propio título.
• Para conservar un acomodo estético se puede utilizar un parámetro vacío cuando
quiera que el filtro aparezca solo.
• Pueden tener mensajes de ayuda que retroalimenten al usuario del reporte.
• Pueden incluir código para validar que la información que captura o selecciona el
usuario cumpla con alguna regla y darle retroalimentación al usuario con un mensaje
de alerta. Por ejemplo, validar cierta información para habilitar, o no, otro filtro.
• En ocasiones se utilizan consultas de SQL para leer el primer y último registro de un
catálogo y mostrarlos por omisión en 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ámetros A continuación se muestra la descripción de los parámetros:

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.

Es posible agregar un acceso rápido si se


antepone un & a una letra del título y accederlo
presionando las teclas <ALT + la letra>.
Ejemplo: &Diario
Se tendrá acceso presionando <ALT + D>
<Mensaje de ayuda> Mensaje que aparecerá al posicionarse en el
campo del parámetro.
<Nombre control> Control a utilizar para el parámetro (vea
instrucción control).
<Parámetros del control> Parámetros propios del control (vea instrucción
control).

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-2
Instrucción Parametros, Continuación

Ejemplo // Ejemplo del uso de la instrucción parámetros


// Elaboró: Marco A. Muñoz
Es posible ampliar el tamaño de
la ventana Parámetros dejando
espacios en el Título del primer
control.

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

Resultado El resultado del ejemplo en pantalla será el siguiente:

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-3
Instrucción Control

Introducción Esta instrucción permite definir un control para aceptar un dato de entrada, dentro de la
función parámetros.

Lista de A continuación se muestra la lista de controles:


controles
Nombre del control Descripción del control
CtrlCheckbox Muestra una casilla que puede marcarse o desmarcarse, según
convenga.
CtrlCodigo Muestra campos de código, respetando la mascarilla de la
cuenta, acompañados del botón <F3> que permite realizar
búsquedas.
CtrlCodigoNumero Muestra campos de código con formato numérico, acompañados
del botón <F3> que permite realizar búsquedas.
CtrlFecha Muestra campos con formato fecha, acompañados con un botón
de despliegue de un calendario.
CtrlLista Muestra una lista de selección con los valores específicos en
ella.
CtrlNumero Muestra un campo numérico con un control que permite
aumentar o disminuir la cantidad, o bien, capturarla
directamente.
CtrlOpcion Permite seleccionar uno o más elementos del apartado de la
izquierda al enviarlos al apartado de la derecha.
CtrlRadio Muestra dos o más casillas de opción única.
CtrlReal Permite la captura de un número real. Por omisión muestra 4
decimales.
CtrlVacio Deja en blanco el espacio destinado a uno de los filtros de la
ventana para darle un mejor acomodo a los filtros.
CtrlTexto Muestra una caja de texto para permitir capturar una cadena de
texto.

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-4
Control CtrlCodigo

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ámetros A continuación se muestra la descripción de los parámetros:

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 // Ejemplo de Control CtrlCodigo


// Elaboró: Marco A. Muñoz

Consulta tDelProducto = tEmpresa ['SELECT cCodigoProducto, cNombreProducto FROM


admProductos WHERE cIdProducto <> 0 ORDER BY cCodigoProducto']

Consulta tAlProducto = tEmpresa ['SELECT cCodigoProducto, cNombreProducto FROM


admProductos WHERE cIdProducto <> 0 ORDER BY cCodigoProducto']

Consulta tAlProductoFinal = tEmpresa ['SELECT TOP 1 cCodigoProducto FROM


admProductos WHERE cIdProducto <> 0 ORDER BY cCodigoProducto DESC']

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-5
Control CtrlCodigo, Continuación

Ejemplo
(Continúa) Parametros
Titulo 'Listado de Productos, Paquetes, Servicios'
Pagina '&1 Principal'

Parametro pProductoInicial = tDelProducto('cCodigoProducto') Captura


Titulo 'Artículo Inicial:'
Ayuda 'Seleccione el Producto, Servicio o Paquete Inicial:'
Control CtrlCodigo '30';'Código';'Nombre del Producto'
Datos
Origen tDelProducto('cNombreProducto');tDelProducto('cCodigoProducto')
FinDatos
Valida <=; pProductoFinal; 'El código del artículo inicial debe ser menor que el final'
FinCaptura

Parametro pProductoFinal = tAlProductoFinal('cCodigoProducto') Captura


Titulo 'Artículo Final:'
Ayuda 'Seleccione el Producto, Servicio o Paquete Final'
Control CtrlCodigo '30';'Código';'Nombre del Producto'
Datos
Origen tAlProducto('cNombreProducto');tAlProducto('cCodigoProducto')
FinDatos
Valida >=; pProductoInicial; 'El código del artículo final debe ser mayor que el inicial'
FinCaptura

FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-6
Control CtrlCheckbox

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ámetros A continuación se lista la descripción de los parámetros:

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:

Marca Valor de la variable


Casilla desmarcada 0
Casilla marcada 1
<booleano> Este dato puede tener los siguientes valores:

Valores posibles Resultado


True Marca la casilla por omisión
False Desmarca la casilla por
omisión

Puede ser un valor booleano regresado por una función.

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-7
Control CtrlCheckbox, Continuación

Ejemplo // Ejemplo del uso del control CtrlCheckBox


// Elaboró: Marco A. Muñoz
Columnas 4;2,3,1,3

Usaempresa tEmpresa;'Contpaq i'

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

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-8
Control CtrlCodigoNumero

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-9
Control CtrlCodigoNumero, Continuación

Ejemplo // Ejemplo de Control CtrlCodigoNumero


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'

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

Parametro pDiarioAl = ' 10' Captura


Titulo 'Diario &final'
Ayuda 'Selecciona el diario final a imprimir'
Control CtrlCodigoNumero '10';'DiariosEspeciales';'Nombre'
Valida >=;pDiarioDel;'No puede ser menor que el rango inicial'
FinCaptura

FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-10
Control CtrlFecha

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-11
Control CtrlFecha, Continuación

Ejemplo // Ejemplo de control de fechas CtrlFecha


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'

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

Parametro pFechaFin = '20061231' Captura


Titulo 'Fecha &final'
Ayuda 'Selecciona la fecha final'
Control CtrlFecha
Valida >=;pFechaIni;'No puede ser menor que la fecha inicial'
FinCaptura

FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-12
Control CtrlLista

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-13
Control CtrlLista, Continuación

Ejemplo // Ejemplo de control lista CtrlLista


// Elaboró: Marco A. Muñoz

UsaEmpresa tEmpresa;'Contpaq i'


UsaTabla tEjercicios = tEmpresa['Ejercicios']
Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pIdEjercicio = 0 Captura
Titulo 'Ejercicio'
Ayuda 'Seleccione el ejercicio'
Default tEmpresa->IdEjercicioActual
Control CtrlLista
Datos
Origen tEjercicios(Ejercicio);tEjercicios(Id)
FinDatos
FinCaptura
FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-14
Control CtrlRadio

Introducción Muestra dos o más casillas de opción única.

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-15
Control CtrlRadio, Continuación

Ejemplo // Ejemplo de control de radio CtrlRadio


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'


Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pOrden = 0 Captura
Titulo 'Ordenar por'
Ayuda 'Selecciona el orden de impresión'
Control CtrlRadio
Datos
'Código de Cuenta';1;'Nombre de Cuenta';2
FinDatos

FinCaptura
FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-16
Control CtrlNumero

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ámetros A continuación se muestra la descripción de los parámetros:

Parámetro Se refiere a
pNumero1 Esta variable será la que recibirá el número seleccionado por el usuario.

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-17
Control CtrlNumero, Continuación

Ejemplo // Ejemplo de control número CtrlNumero


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'

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

Parametro pNivelAl = 1 Captura


Titulo 'Nivel &al'
Ayuda 'Selecciona el nivel final'
Control CtrlNumero
Rango 1,10
Valida >=;pNivelDel; 'No puede ser menor que el rango inicial'
FinCaptura
FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-18
Control CtrlOpcion

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-19
Control CtrlOpcion, Continuación

Ejemplo // Ejemplo de control de opciones CtrlOpcion


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'

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

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-20
Control CtrlReal

Introducción Permite la captura de un número real.

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ámetros A continuación se muestra la descripción de los parámetros:

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-21
Control CtrlReal, Continuación

Ejemplo // Ejemplo de control de reales ctrlReal


// Elaboró: Marco A. Muñoz

Columnas 1;4

UsaEmpresa tEmpresa;'Contpaq i'

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

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-22
Control CtrlVacio

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

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-23
Control CtrlVacio, Continuación

Ejemplo // Ejemplo de control vacío ctrlVacio


// Elaboró: Marco A. Muñoz

Columnas 1;4

UsaEmpresa tEmpresa;'Contpaq i'

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

Parametro vacio = 0 Captura


Control CtrlVacio
FinCaptura

Parametro pTasaInteres = 4 Captura


Titulo 'Tasa de interés'
Ayuda 'Anote la tasa de interés'
Control CtrlReal
Decimales 4
FinCaptura

FinPagina

FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:


Este espacio aparece
gracias al Control
CtrlVacio

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-24
Control CtrlTexto

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ámetros A continuación se muestra la descripción de los parámetros:

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.

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-25
Control CtrlTexto, Continuación

Ejemplo // Ejemplo de control de radio CtrlTexto


// Elaboró: Marco A. Muñoz

Columnas 4;2,3,1,3

usaempresa tEmpresa;'Contpaq i'


Parametros
Titulo 'Titulo Parámetros'
Pagina 'Principal'
Parametro pTexto = 0 Captura
Titulo 'Diario'
Ayuda 'Anote el nombre del diario’
Control CtrlTexto
FinCaptura
FinPagina
FinParametros

Resultado El resultado del ejemplo en pantalla será el siguiente:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-26
Parámetro Dependencia

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

Parametro pParametroHijo = <Valor por omisión> Captura


Titulo <'Titulo de la etiqueta'>
Ayuda <'Información de ayuda'>
Control ControlHijo
FinCaptura
FinPagina
FinParametros

Parámetros A continuación se muestra la descripción de los parámetros:

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á.

Continúa en la siguiente página

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-27
Parámetro Dependencia, Continuación

Ejemplo // Ejemplo de Parámetro dependencia


// Elaboró: Marco A. Muñoz
Columnas 4;2,3,1,3
usaempresa tEmpresa;'Contpaq i'

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

Parametro vacio = 0 Captura


Control CtrlVacio
FinCaptura

Parametro pCodCta1 = '000000000000' Captura


Titulo 'Cuenta &inicial'
Ayuda 'Selecciona la cuenta inicial a imprimir'
Control CtrlCodigo tEmpresa->Estructura;'Cuentas';'Nombre'
Valida <=;pCodCta2;'No puede ser mayor que la cuenta final'
FinCaptura

Parametro pCodCta2 = '000000000000' Captura


Titulo 'Cuenta &final'
Ayuda 'Selecciona la cuenta final a imprimir'
Control CtrlCodigo tEmpresa->Estructura;'Cuentas';'Nombre'
Valida >=;pCodCta1;'No puede ser menor que la cuenta inicial'
FinCaptura
FinPagina
FinParametros

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-28
Parámetro Dependencia, Continuación

Resultado El resultado del ejemplo en pantalla será el siguiente:

Instrucciones de Entrada Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
5-29
Laboratorio 3

Introducción En el siguiente laboratorio generarás una ventana de filtros que permita escoger un rango de
productos del catálogo.

Objetivos En el siguiente laboratorio se pone en práctica:

• Como crear ventanas de parámetros


• Utilizar los controles para filtrar datos

A continuación se muestra la descripción de los pasos a seguir en el laboratorio:

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:

• Quita los comentarios del código de toda la sección 4. Parámetros.


• Modifica la sección 4.1 Consulta parámetros para que lean el producto
inicial y final de la tabla productos.
• Modifca la sección 4.2 Crea los parámetros para leer el código inicial y
final del producto.
3 En la sección 6.3 Consulta SQL haz lo siguiente:

• Quita los comentarios del código de la sección 6.3 Consulta SQL.


• Modifica el código de esta consulta para leer el código, nombre y precio 1
del producto.
4 Guarda, compila y ejecuta el reporte.

Resultado La ventana de los filtros deberá verse como se muestra a continuación:

Computación en Acción, S.A. de C.V. Instrucciones de Entrada


Derechos Reservados®
Página
5-30
Capítulo 6
Funciones
Visión General

Introducción En este capítulo conocerá como hacer llamados a funciones de Reporteador y aprenderá a
crear funciones propias.

Objetivos Al término de este capítulo conocerá como :

• Hacer llamados a las funciones existentes en Reporteador.


• Crear sus propias funciones.
• Hacer llamados a librerías.

En este capítulo Este capítulo contiene los siguientes temas:

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

Funciones Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
6-1
Utilización de las Funciones del Reporteador

Instrucción Reporteador cuenta con una serie de funciones que permiten ejecutar un conjunto de
instrucciones que al final darán un resultado.

Sintaxis variableResultado = @Funcion(argumento1;argumento2;…;argumentoN)

Parámetros A continuación se muestra la descripción de los parámetros:

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.

Ejemplo 1 // Ejemplo de llamado a una función.


// El siguiente ejemplo muestra el llamado a la función raíz, el cuál obtendrá la raíz cuadrada
// de 81
// Elaboró: Marco A. Muñoz

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®”.

Computación en Acción, S.A. de C.V. Funciones


Derechos Reservados®
Página
6-2
Creación de Funciones

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.

Sintaxis Deffunc NombreFuncion(argumento1;argumento2;…;argumentoN)

FinFunc

Parámetros A continuación se muestra la descripción de los parámetros:

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.

Ejemplo 1 // Ejemplo de declaración de una función.


// El siguiente ejemplo muestra la declaración de una función que calcula el cuadrado de un
//número.
// Elaboró: Marco A. Muñoz

// Declaración de la función fCuadrado


DefFunc fCuadrado(argBase)
vCuadrado = argBase * argBase
retorna vCuadrado
FinFunc

// Llamado a la función fCuadrado


vNumero = 5
vResultado = fCuadrado(vNumero)
Lista vResultado

Ejemplo 2 // Función que da formato dd/mm/aaaa a una fecha.


DefFunc fFormatoFecha(argFechaSinFormato)
vAnio = @substr(argFechaSinFormato;0;4)
vMes = @substr(argFechaSinFormato;4;2)
vDia = @substr(argFechaSinFormato;6;2)
vFechaConFormato = vDia & '/' & vMes & '/' & vAnio
retorna vFechaConFormato
FinFunc

// Esta instrucción hace el llamado a la función pasando como parámetro la fecha sin formato
fFormatoFecha(tCuentas(FechaRegistro))

Nota: Para una lista de funciones de Reporteador consulta el documento: “Instrucciones


del Reporteador CONTPAQ i®”.

Continúa en la siguiente página

Funciones Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
6-3
Creación de Funciones, Continuación

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

Computación en Acción, S.A. de C.V. Funciones


Derechos Reservados®
Página
6-4
Instrucción Incluye

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.

Sintaxis Incluye <NombreLibreria>

Parámetros A continuación se muestra la descripción de los parámetros:

Parámetro Se refiere a
<NombreLibreria> Nombre del archivo .RPT que contiene las
funciones que se desean incluir en nuestro
reporte.

Ejemplo // Ejemplo del uso de la función incluye

// Archivo con Librería de funciones de saludos llamado Saluda.rpt

// 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.

Funciones Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
6-5
Laboratorio 4

Introducción En el siguiente laboratorio practicarás el manejo de funciones.


Agregarás una columna nueva con la fecha de alta del producto y generarás una función que
dé formato a las fechas.

A continuación se muestran los pasos a seguir para realizar el laboratorio:

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.

Resultado El reporte deberá quedar como se muestra a continuación:

Computación en Acción, S.A. de C.V. Funciones


Derechos Reservados®
Página
6-6
Capítulo 7
Formato
Visión General

Introducción En este capítulo se conocerán las instrucciones para dar formato al reporte.

Objetivos Al término de este capítulo:

• Identificará las funciones para cambiar el tipo de letra, alinear texto, aplicar negritas,
generar encabezados, entre otras funciones de formato.

En este capítulo Este capítulo contiene los siguientes temas:

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

Formato Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
7-1
Alineación del Texto

Instrucción La instrucción Texto permite alinear el texto a la izquierda, centrado y derecha, a enseguida
se explica como.

Sintaxis A continuación se muestra la descripción de la sintaxis de la instrucción:

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.

Ejemplo // Ejemplo de alineación con la función texto.


// Elaboró: Marco A. Muñoz

Texto C0;’Mensaje a la izquierda’


Imprime

Saltalin 2 // Deja dos líneas en blanco

Texto C0;’^Mensaje centrado’


Imprime

Texto C0;’ “Mensaje a la derecha’


Imprime

Computación en Acción, S.A. de C.V. Formato


Derechos Reservados®
Página
7-2
Funciones de formato

Instrucción Estas funciones cambian el formato del texto.

Sintaxis A continuación se muestra la descripción de la sintaxis de la instrucción:

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ámetros A continuación se muestra la descripción de los parámetros:

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.

Texto Cualquier valor de texto encerrado


entre ‘apóstrofes’.
Número Cualquier valor numérico.

Formato Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
7-3
Lista de funciones de formato

Introducción A continuación se listan las funciones de formato.

Función Sintaxis Ejemplo Descripción del Ejemplo


Absoluto [RangoCol].Absoluto Booleano [C0..C2].Absoluto true Activa el valor absoluto de la
columna C0 a C2
Altura [RangoCol].Altura Número Altura 12 Ajusta el tamaño de la letra en
12 puntos en todas las
columnas
Color [RangoCol].Color @RGB(R;G;B) [C0].Color @RGB(255;0;0) Muestra el texto de color rojo
en la columna 0.
Coma [RangoCol].Coma [C3].Coma Divide las cantidades
numéricas con comas cada 3
dígitos en la columna 3.
Decimales [RangoCol].Decimales Número [C1,C3].Decimales 4 Las cantidades de las
columnas 1 y 3 tendrán 4
decimales.
Además redondea los
decimales.
Espacio [RangoCol].Espacio [C3].Espacio Inserta un pequeño espacio
cada 3 dígitos en las
cantidades numéricas en la
columna 3.
InvSig [RangoCol].InvSig Booleano [C1].InvSig true Invierte el signo en las
cantidades de la columna 1.
Italico [RangoCol].Italico Booleano Italico true Activa el uso de itálicas en
todas las columnas.
Negritas [RangoCol].Negritas Booleano Negritas false Desactiva el uso de las
negritas en todas las
columnas.
SubrayaCol [RangoCol].Subrayacol subrayacol Dibuja una raya horizontal en
Imprime imprime ese renglón a lo ancho de
todas las columnas.
Subrayado [RangoCol].Subrayado Booleano [C2..C4].subrayado true Subraya los datos de la
columna 2 a la 4
UsaLetra [RangoCol].UsaLetra ‘Tipo de letra’ UsaLetra 'Arial' Aplica el tipo de letra Arial a
todas las columnas.

Computación en Acción, S.A. de C.V. Formato


Derechos Reservados®
Página
7-4
Instrucción Encab

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

// Cuerpo del reporte

SupEncab // De esta instrucción en adelante se suprime el encabezado.

Ejemplo // Ejemplo para el uso de encabezados


// Elaboró: Marco Antonio Muñoz

Encab
Texto “^Catálogo Clientes”
Imprime
Texto C0;’Código’
Texto C1;’Razón Social’
Imprime
FinEncab

Formato Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
7-5
Laboratorio 5

Introducción En el siguiente laboratorio se practicarán las funciones para dar formato al reporte.

A continuación se muestran los pasos a seguir para realizar el laboratorio:

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.

Resultado El reporte deberá quedar como muestra a continuación:

Computación en Acción, S.A. de C.V. Formato


Derechos Reservados®
Página
7-6
Apéndice A
Sentencias básicas en SQL para reportes

Introducción En este apéndice:


• Verás cómo realizar consultas en SQL para realizar reportes de los sistemas de
CONTPAQ i®.
• Conocerás la sentencia SELECT con sus diferentes opciones.

En este apéndice Este apéndice contiene los siguientes temas:

Tema Página
Tipos de sentencias en SQL A-2
Sentencias básicas A-3

Sentencias básicas en SQL para reportes Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
A-1
Tipos de sentencias en SQL

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.

Esta instrucción puede utilizarse en varias sintaxis, dependiendo de la información que se


necesita. Las más utilizadas son:

• SELECT FROM
• WHERE
• GROUP BY
• HAVING
• HAVING vs WHERE

Importante: Al final de la sentencia se recomienda agregar un <Enter> para que la misma


pueda ejecutarse correctamente.

Estas sentencias son palabras reservadas y se distinguen con el color azul, si no está bien
capturada la sentencia, esta aparecerá en color negro.

Computación en Acción, S.A. de C.V. Sentencias básicas en SQL para reportes


Derechos Reservados® Página
A-2
Sentencias básicas

Comentarios En SQL los comentarios se agregan con un doble guion - - antes del texto.
-- Comentarios en consulta

O para comentar un bloque se utiliza /* */


/* Consulta de
Documentos de Venta
Agrupado por Cliente
*/

Declarar En SQL se pueden definir variables con la instrucción DECLARE.


Variables
Sintaxis:
DECLARE @nombre_variable AS tipo;

Ejemplos:
-- Declara una variable de tipo entero
DECLARE @lIdMoneda AS INT;

-- Declara una variable de tipo fecha


DECLARE @lFechaIni AS DATETIME;

-- Declara una variable de tipo caracter de 30 caracteres


DECLARE @lDelCliente AS CHAR(30);

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

Al usar * se extraerán todos los campos de la tabla.

Ejemplo:
La siguiente consulta muestra todos los registros de la tabla Documentos con todos sus
Campos.

SELECT * FROM admDocumentos

Continúa en la siguiente página

Sentencias básicas en SQL para reportes Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
A-3
Sentencias básicas, Continuación

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.

SELECT CFOLIO, CTOTAL FROM admDocumentos

WHERE Al utilizar el WHERE se podrán agregar condiciones para filtrar registros.

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.

SELECT * FROM admDocumentos WHERE CFOLIO >2

AND La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es mayor a
1 Y es menor a 4.

SELECT * FROM admDocumentos WHERE CFOLIO >1 AND CFOLIO <4

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Sentencias básicas en SQL para reportes


Derechos Reservados® Página
A-4
Sentencias básicas, Continuación

OR La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es 2 O es
4.

SELECT * FROM admDocumentos WHERE CFOLIO = 2 OR CFOLIO = 4

IN La siguiente consulta extrae solo los registros de la tabla Documentos cuyo Folio es 1 y 2.

SELECT * FROM admDocumentos WHERE CFOLIO IN (1,2)

BETWEEN La siguiente consulta extrae los registros de la tabla Documentos cuyo Folio está entre 2 y
10.

SELECT * FROM admDocumentos WHERE CFOLIO BETWEEN 2 AND 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.

SELECT cFolio AS f FROM admDocumentos AS d

ORDER BY ASC La siguiente consulta ordena los registros por folio en forma ascendente.

SELECT * FROM admDocumentos ORDER BY CFOLIO ASC

ORDER BY DESC La siguiente consulta ordena los registros por folio en forma descendente.

SELECT * FROM admDocumentos ORDER BY CFOLIO DESC

SELECT TOP La instrucción SELECT TOP muestra el número de registros especificado.

Sintaxis:
SELECT top num_registros FROM tabla

SELECT TOP 1 La siguiente consulta extrae el primer registro de la tabla Documentos.


ASC
Ejemplo:
SELECT top 1 * FROM admDocumentos ORDER BY CFOLIO ASC

SELECT TOP 1 La siguiente consulta extrae el último registro de la tabla Documentos.


DESC
Ejemplo:
SELECT top 1 * FROM admDocumentos ORDER BY CFOLIO DESC

Continúa en la siguiente página

Sentencias básicas en SQL para reportes Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
A-5
Sentencias básicas, Continuación

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.

SELECT SUM(CTOTAL) AS TotalDocumentos FROM admDocumentos

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.

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Sentencias básicas en SQL para reportes


Derechos Reservados® Página
A-6
Sentencias básicas, Continuación

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.

La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la


tabla Documentos. Y solo muestra aquellos clientes cuya suma de TODOS sus documentos
sea mayor a 2000.

SELECT CIDCLIENTEPROVEEDOR, SUM(CTOTAL) FROM admDocumentos


GROUP BY CIDCLIENTEPROVEEDOR HAVING SUM(CTOTAL)>2000

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.

SELECT CIDCLIENTEPROVEEDOR, SUM(CTOTAL) AS TotalDoc FROM


admDocumentos WHERE CTOTAL>2000 GROUP BY CIDCLIENTEPROVEEDOR

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.

SELECT * FROM admDocumentos D INNER JOIN admMovimientos M ON


D.CIDDOCUMENTO = M.CIDDOCUMENTO

LEFT JOIN La siguiente consulta muestra todos los documentos aun si no tienen movimientos.

SELECT * FROM admDocumentos D LEFT JOIN admMovimientos M ON


D.CIDDOCUMENTO = M.CIDDOCUMENTO

Continúa en la siguiente página

Sentencias básicas en SQL para reportes Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
A-7
Sentencias básicas, Continuación

CAST La función CAST convierte un valor a un tipo de dato.

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.

SELECT * FROM admDocumentos WHERE CFECHA >= CAST('20130601' AS


DATETIME) AND CFECHA <= CAST('20130630' AS 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).

SELECT * FROM admDocumentos WHERE CTEXTOEXTRA1 IS NOT NULL

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

SELECT CRAZONSOCIAL, CASE WHEN CTIPOCLIENTE=1 THEN 'Cliente'


WHEN CTIPOCLIENTE=2 THEN 'Cliente-Proveedor'
WHEN CTIPOCLIENTE=3 THEN 'Proveedor'
END AS TIPO
FROM admClientes

Computación en Acción, S.A. de C.V. Sentencias básicas en SQL para reportes


Derechos Reservados® Página
A-8
Apéndice B
Actualización de reportes de AdminPAQ
Visión General

Introducción En este apéndice se muestra la forma de actualizar reportes de AdminPAQ a CONTPAQ i®


COMERCIAL.

Objetivos Al término de este apéndice el participante conocerá:

• Las diferencias entre el Reporteador de AdminPAQ y el Reporteador de


CONTPAQ i® COMERCIAL.
• Los conocimientos para actualizar reportes a CONTPAQ i® COMERCIAL.

En este apéndice Este apéndice contiene los siguientes temas:

Tema Página
VISIÓN GENERAL B-1
CAMBIO DE INSTRUCCIONES EN CONTPAQ i® B-2
EJEMPLO. ACTUALIZACIÓN DE UN REPORTE B-4

Actualización de reportes de AdminPAQ Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
B-1
Cambio de instrucciones en CONTPAQ i®

Introducción Los reporteadores utilizados en AdminPAQ y CONTPAQ i® COMERCIAL cuentan con


similitudes y diferencias.

Los reportes que se incluyen en CONTPAQ i® COMERCIAL están desarrollados en el


reporteador de CONTPAQ i® los cuales acceden a bases de datos de SQL. Los reportes que
se hicieron a la medida en AdminPAQ deberán ser actualizados a este nuevo reporteador.

Similitudes Las similitudes entre ambos reporteadores son las siguientes:

• Definición de columnas
• Instrucciones de Formato
• Impresión de datos
• Ciclos
• Condiciones
• Funciones
• Variables

Diferencias Las diferencias entre los reporteadores son:

• Las instrucciones de entrada (para crear filtros).


• La forma de acceso a las tablas de la empresa.
• Las instrucciones de salida a Excel®.

Instrucciones de Para hacer filtros, en AdminPAQ se utilizaban las instrucciones PARÁMETRO y ACEPTA
entrada para recibir datos del usuario.

Ahora se utilizan las instrucciones PARAMETROS, CONTROL, DEPENDENCIA, etcétera,


por lo que deberás sustituir las anteriores por las nuevas, para más información consulta el
Capítulo 5. Instrucciones de Entrada.

AdminPAQ CONTPAQ i® COMERCIAL


• PARAMETRO • PARAMETROS
• ACEPTA • CONTROL
• DEPENDENCIA

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.

Para más información consulta el Capítulo 4. Acceso a las Bases de Datos.

AdminPAQ CONTPAQ i® COMERCIAL


• UsaEmpresa • CONEXION
• UsaTabla • CONSULTA

Nombres de Los nombres de las tablas y los campos cambiaron, por lo que habrá que actualizarlos.
tablas y campos

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Actualización de reportes de AdminPAQ


Derechos Reservados® Página
B-2
Cambio de instrucciones en CONTPAQ i®, Continuación

Tabla Las principales ventajas del Reporteador de CONTPAQ i son que:


comparativa
• Está orientado a bases de datos Cliente/Servidor, es decir, los datos se procesan en
el Servidor y son enviados al cliente (es un Servidor de datos, no de archivos).
• Los parámetros o filtros de los reportes son configurables.
• La salida de los reportes está abierta a otros formatos de archivo, como HTML, XLS
y PDF; además de las salidas acostumbradas: pantalla, impresora o disco.

Consulta la siguiente tabla comparativa:

Características Reporteador programable Reporteador CONTPAQ i


Modelo de tres capas •
Filtros configurables •
Manejo de funciones • •
Salida a TXT • •
Salida a HTML •
Salida a PDF •
Salida a Excel • •
Salida a impresora • •
Salida a disco • •
Salida a pantalla • •
Instrucciones OLE DB • •
Bases de datos local •
Bases de datos •
Cliente/Servidor
Editor de reportes •
Depurador •
Configuración de la hoja •
Manejo de queries de SQL •

Actualización de reportes de AdminPAQ Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
B-3
Ejemplo. Actualización de un reporte

Introducción A continuación se muestra un ejemplo de actualización de un reporte de AdminPAQ a


CONTPAQ i® COMERCIAL.
Primero se muestra el reporte en AdminPAQ y después se muestra el mismo reporte
actualizado a CONTPAQ i® COMERCIAL.

AdminPAQ // Descripción: Reporte de ventas por fecha


// Elaboró: Marco Muñoz La conexión a la BDD SÍ cambia por
// Fecha: 25/06/2013 la instrucción Conexion

// Conexión a la Base de Datos


UsaEmpresa tEmpresa;'AdminPAQw' En la definición de filtros
las instrucciones Acepta
se cambiarán por
// Filtros Parametros
Acepta 'Ventas';'Captura la fecha inicial'; pFechaInicial
Acepta 'Ventas';' Captura la fecha final'; pFechaFinal

// Definición de columnas del reporte La definición de


Columnas 2;3,3 columnas NO cambia

// Títulos del reporte


Texto '^VENTAS POR FECHA' Los definición de títulos
Imprime del reporte NO cambia

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']

Mientras [tDoc.Busca['4'];tDoc ->encontro;tDoc.Busca Siguiente[1]]


Si tDoc(cFecha)>=pFechaInicial Y tDoc(cFecha)<=pFechaFinal
Lista tDoc(cFolio), tDoc(cTotal)
FinSi
FinMientras

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Actualización de reportes de AdminPAQ


Derechos Reservados® Página
B-4
Ejemplo. Actualización de un reporte, Continuación

Reporte en // Descripción: Reporte de ventas por fecha


CONTPAQ i® // Elaboró: Marco Muñoz
COMERCIAL // Fecha: 25/06/2013

La conexión a // Conexión a la Base de Datos


la BDD SÍ gServidor = '//localhost/adROJA'
cambia por la gInstancia = 'COMPAC'
instrucción gUsuarioSQL = 'sa'
Conexion
gClaveSQL = 'Compac2008'
Conexion tEmpresa = Conexion.crear('jdbc:jtds:sqlserver:' &
gServidor & ';instance=' & gInstancia,gUsuarioSQL,gClaveSQL)

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

Parametro pFechaFinal = '20200101' Captura


Titulo 'Fecha fi&nal'
Ayuda 'Selecciona la fecha final de los documentos'
Control CtrlFecha
Valida >=; pFechaInicial; 'La fecha final no puede ser
menor a la inicial'
FinCaptura

FinPagina
FinParametros

// Definición de columnas del reporte La definición de


columnas NO
Columnas 2;3,3 cambia

Continúa en la siguiente página

Actualización de reportes de AdminPAQ Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
B-5
Ejemplo. Actualización de un reporte, Continuación

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]

// Se despliegan los datos de la consulta, nota que los


//nombres de los campos van entre //apóstrofes
Mientras tMiConsulta->Encontro
// Se despliegan los campos del registro actual en
//pantalla
Lista tMiConsulta('CFOLIO'), tMiConsulta('CTOTAL')
// Se salta al siguiente registro
tMiConsulta.Busca Siguiente
FinMientras

Computación en Acción, S.A. de C.V. Actualización de reportes de AdminPAQ


Derechos Reservados® Página
B-6
Apéndice C
Casos especiales
Visión General

Introducción En este apéndice se muestran instrucciones extras a la programación común de un reporte.


Casos como la programación de reportes con Excel®, creación de consultas con SQL y
generación de reportes sensibles al contexto.

Objetivos Al término de este apéndice el participante conocerá cómo crear:

• Un reporte con salida directa a Excel® utilizando VBA


• Reportes sensibles al contexto
• Consultas utilizando sentencias de SQL
• Un reporte en CONTPAQ i® NÓMINAS
• Conexiones entre tablas de la base de datos

En este apéndice Este apéndice contiene los siguientes temas:

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

Casos especiales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-1
Reportes en Excel®

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:

ObjetoOLE excel = ObjetoOLE.crear('Excel.Application')

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'

Constantes Existen 3 constantes especiales para el llamado de métodos OLE:


especiales
Constante Descripción
ObjetoOLE.nulo Representa un valor nulo
ObjetoOLE.vacio Representa un valor vacío
ObjetoOLE.ausente Representa un valor ausente. Útil cuando el
objeto OLE destino usa valores por defecto

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-2
Reportes en Excel®, Continuación

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'

Abrir un libro El siguiente código abre un libro de Excel existente.


existente
Columnas 1;1
ObjetoOLE Excel = ObjetoOLE.crear('Excel.Application')
ObjetoOLE wb=Excel.Workbooks.Open('C:/MiLibro.xls')
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:

// Declaración de constantes de Excel


constante xlAscending 1
// Inicializar variables
ObjetoOLE excel = ObjetoOLE.crear('Excel.Application')
ObjetoOLE wb=excel.Workbooks.open('c:/testOle.xls')
ObjetoOLE ws=wb.Sheets('Hoja1')
//Muestra Excel
excel.Visible=true
// Ordenar de B3 a D16
ws.Range('B3:D16').Select
excel.Selection.Sort(ws.Range('B3');xlAscending;ws.Range('C3');ObjetoOLE.ausente;xlAscen
ding;ws.Range('D3');xlAscending)

Ejecutar una El siguiente código ejecuta una macro llamada AplicarFormatoColumnas.


macro
// Inicializar objetos
ObjetoOLE excel = ObjetoOLE.crear('Excel.Application')
ObjetoOLE wb=excel.Workbooks.open('c:/testOle.xls')
// Hacer visible Excel
excel.Visible=true
// Ejecutar Macro
excel.Run('AplicarFormatoColumnas')

Continúa en la siguiente página

Casos espeicales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-3
Reportes en Excel®, Continuación

Crear un gráfico El siguiente código crea un gráfico en Excel


en Excel
// Inicializar objetos
ObjetoOLE excel = ObjetoOLE.crear('Excel.Application')
ObjetoOLE wb=excel.Workbooks.open('c:/testOle.xls')
wb.Charts.Add
wb.ActiveChart.ChartType = 4
wb.ActiveChart.SetSourceData(wb.Sheets('Hoja2').Range('C4:C13');2)
wb.ActiveChart.Location(2;'Hoja2')
wb.ActiveChart.HasTitle = False
wb.ActiveChart.Axes(1;1).HasTitle = False
wb.ActiveChart.Axes(2;1).HasTitle = False
// Mostrar Excel
excel.Visible=true

Creación del El siguiente código crea el encabezado de un reporte, con formato:


encabezado
// Constantes de Excel

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)

// Crear una hoja


ObjetoOLE ws=wb.WorkSheets(1)

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-4
Reportes en Excel®, Continuación

Creación del // Establecer ancho de columnas


encabezado ws.Columns(1).ColumnWidth = 10
Continúa ws.Columns(2).ColumnWidth = 24
ws.Columns(3).ColumnWidth = 10
ws.Columns(4).ColumnWidth = 14
ws.Columns(5).ColumnWidth = 14
ws.Columns(6).ColumnWidth = 20

// Mostrar Excel
excel.visible=-1

vReng=1

// Ultima Columna
argColFinal='I'

// Pone el nombre del sistema


ws.Range('A' & vReng).Font.Color = @RGB(255;0;0)
ws.Range('A' & vReng).Font.Size = 10
ws.Range('A' & vReng).Value = 'CONTPAQ i CONTABILIDAD'

vReng=vReng+1

// Pone el nombre de la empresa


ws.Range('A' & vReng).Font.Size = 14
ws.Range('A' & vReng).Font.FontStyle = 'Negrita'

// Lo centra en las columnas B a la R


ws.Range('A' & vReng & ':' & argColFinal & vReng).HorizontalAlignment =
xlCentrarEnSeleccion
ws.Range('A' & vReng ).Value = 'Gran Empresa'

vReng=vReng+1

// Pone el titulo del reporte en EXCEL


ws.Range('A' & vReng).Font.Size = 12
ws.Range('A' & vReng).Font.FontStyle = 'Negrita'
ws.Range('A' & vReng ).Value = 'Listado de Pólizas'

// Lo centra en las columnas A a la S


ws.Range('A' & vReng & ':' & argColFinal & vReng).HorizontalAlignment =
xlCentrarEnSeleccion

vReng=vReng+1

ws.Range('A' & vReng).Font.Size = 12


ws.Range('A' & vReng).Font.FontStyle = 'Negrita'

// Lo centra en las columnas A a la S


ws.Range('A' & vReng & ':' & argColFinal & vReng).HorizontalAlignment =
xlCentrarEnSeleccion

Continúa en la siguiente página

Casos espeicales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-5
Reportes en Excel®, Continuación

Creación del // Avanza de renglon


encabezado vReng = vReng + 4
Continúa
// Pone el titulo de cada columna en EXCEL
ws.Range('A' & vReng & ':' & argColFinal & vReng).Borders(xlInferior).LineStyle =
xlLineaSimple
ws.Range('A' & vReng & ':' & argColFinal & vReng).Borders(xlSuperior).LineStyle =
xlLineaSimple
ws.Range('A' & vReng & ':' & argColFinal & vReng).Borders(xlIzquierda).LineStyle =
xlLineaSimple
ws.Range('A' & vReng & ':' & argColFinal & vReng).Borders(xlDerecha).LineStyle =
xlLineaSimple
ws.Range('A' & vReng & ':' & argColFinal & vReng).Interior.ColorIndex = 55
ws.Range('A' & vReng & ':' & argColFinal & vReng).Font.FontStyle = 'Negrita'
ws.Range('A' & vReng & ':' & argColFinal & vReng).Font.Color = @RGB(255;255;255)

ws.Range('A' & vReng).Value='Cuenta'


ws.Range('B' & vReng).Value='Nombre'
ws.Range('C' & vReng).Value='Tipo'
ws.Range('D' & vReng).Value='Periodo'
ws.Range('E' & vReng).Value='Ejercicio'
ws.Range('F' & vReng).Value='Concepto'
ws.Range('G' & vReng).Value='Fecha'
ws.Range('H' & vReng).Value='Cargos'
ws.Range('I' & vReng).Value='Abonos'

vReng=vReng+1

// Agregar Autofiltro
ws.rows(8).AutoFilter

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-6
Reportes sensibles

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.

Sintaxis DefFunc fFuncionSensible(aColumna; aArgumentos)


Ejecuta 'REPORTE_DESTINO.RTW'; parametro1, parametroN; aParametros
FinFunc

DefRegion fFuncionSensible

[CN].RegionInfo vStringParametros

Parámetros A continuación se muestra la descripción de los parámetros:

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.

Ejemplo El siguiente ejemplo muestra el reporte fuente Sensibles_Polizas.RTW que despliega un


listado de pólizas, y el reporte destino Sensibles_Movimientos.RTW que despliega los
movimientos de las pólizas.

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.

Parámetros Se enviarán 4 campos como parámetros: "Ejercicio", "Periodo", "Tipo" y "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.

Continúa en la siguiente página

Casos espeicales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-7
Reportes sensibles, Continuación

Ejemplo reporte // Reporte Listado de pólizas "Sensibles_Polizas"


fuente // incluye un área sensible que ejecuta los movimientos de póliza
// se mandan como parametros: Ejercicio, Periodo, TipoPol y Folio
// Elaboró: Marco A. Muñoz
// Fecha: 18 / Dic / 2008

// Se definen las columnas del reporte


Columnas 7;3

// ********************
// 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"
// ********************

DefFunc fEjecutaMovimientos(aColumna; aMovimientos)


Ejecuta 'SENSIBLES_MOVIMIENTOS2.RTW';
@Escoge(aMovimientos;0),@Escoge(aMovimientos;1),@Escoge(aMovimientos;2),@Escoge(
aMovimientos;3); aMovimientos
FinFunc

// Se abre la empresa
usaempresa tEmpresa;'Contpaq i'

// Se abre la tabla Pólizas


usatabla tPolizas = tEmpresa['Polizas']

// Se despliega el título del reporte


Texto '^L I S T A D O D E P O L I Z A S'
Imprime

// Se despliegan los títulos de las columnas


Lista 'EJERCICIO','PERIODO','TIPO','FOLIO','CARGOS','ABONOS','ID'

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-8
Reportes sensibles, Continuación

Ejemplo reporte // Se define la región sensible al contexto y la función que se ejecutará


fuente // al hacer doble clic sobre un registro
DefRegion fEjecutaMovimientos

// Se agregan los campos del query


tPolizas.Agregacolumna ['Ejercicio']
tPolizas.Agregacolumna ['Periodo']
tPolizas.Agregacolumna ['TipoPol']
tPolizas.Agregacolumna ['Folio']
tPolizas.Agregacolumna ['Cargos']
tPolizas.Agregacolumna ['Abonos']
tPolizas.Agregacolumna ['Fecha']
tPolizas.Agregacolumna ['Id']

// Se procesa el query
tPolizas.Procesa

// Se recorre toda la tabla Pólizas


Mientras tPolizas->Encontro

// Se define la columna C3 que se marcará como área sensible al contexto, al hacer


// doble clic sobre el registro de esta columna
// se mandarán los campos "Ejercicio", "Periodo", "TipoPol" y "Folio" como
//parámetros a la función fEjecutaMovimientos

[C3].RegionInfo tPolizas(Ejercicio) & ',' & tPolizas(Periodo) & ',' & tPolizas(TipoPol) &
',' & tPolizas(Folio)

// Se despliegan los campos del registro actual en pantalla


Lista
tPolizas(Ejercicio),tPolizas(Periodo),tPolizas(TipoPol),tPolizas(Folio),tPolizas(Cargos),tPolizas
(Abonos),tPolizas(Id)

// Se salta al siguiente registro


tPolizas.Busca Siguiente
FinMientras

Continúa en la siguiente página

Casos espeicales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-9
Reportes sensibles, Continuación

Ejemplo reporte // Reporte de movimientos de póliza


destino // Elaboró: Marco A. Muñoz
// Fecha: 18 / Dic / 2008

// Se definen las columnas del reporte


Columnas 6;3

// Se abre la empresa
usaempresa tEmpresa;'Contpaq i'

// Se abre la tabla de Movimientos


usatabla tMovimientos = tEmpresa['MovimientosPoliza']

// Se despliega el título del reporte


Texto '^L I S T A D O D E M O V I M I E N T O S'
Imprime

// Se despliegan los títulos de las columnas


Lista 'EJERCICIO','PERIODO','TIPO','FOLIO','CARGOS','ABONOS'//,'ID'

// Se definen los filtros del reporte


Parametros
Titulo 'Filtros del reporte'
Pagina 'Principal'
Parametro pEjercicio = 2008 Captura
Titulo 'Ejercicio'
Ayuda 'Capture el Ejercicio'
Control CtrlNumero
FinCaptura

Parametro pPeriodo = 1 Captura


Titulo 'Periodo'
Ayuda 'Capture el Periodo'
Control CtrlNumero
FinCaptura

Parametro pTipoPol = 1 Captura


Titulo 'Tipo Póliza'
Ayuda 'Capture el Tipo de Póliza'
Control CtrlNumero
FinCaptura

Parametro pFolio = 1 Captura


Titulo 'Folio'
Ayuda 'Capture el Folio'
Control CtrlNumero
FinCaptura
FinPagina
FinParametros

Continúa en la siguiente página

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-10
Reportes sensibles, Continuación

Ejemplo reporte // Se define la búsqueda en la tabla Movimientos


destino tMovimientos.Agregacolumna ['Ejercicio']
tMovimientos.Agregacolumna ['Periodo']
tMovimientos.Agregacolumna ['TipoPol']
tMovimientos.Agregacolumna ['Folio']
tMovimientos.Agregacolumna ['TipoMovto']
tMovimientos.Agregacolumna ['Importe']
tMovimientos.Agregacolumna ['Fecha']
tMovimientos.Agregacondicion [tMovimientos(Ejercicio) = pEjercicio]
tMovimientos.Agregacondicion [tMovimientos(Periodo) = pPeriodo]
tMovimientos.Agregacondicion [tMovimientos(TipoPol) = pTipoPol]
tMovimientos.Agregacondicion [tMovimientos(Folio) = pFolio]
tMovimientos.Procesa

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

Casos espeicales Computación en Acción, S.A. de C.V.


Página Derechos Reservados®
C-11
Reportes en CONTPAQ i® NÓMINAS

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.

Instrucción La instrucción Conexion establece una liga a las bases de datos.


Conexion
Para el caso de CONTPAQ i® NÓMINAS se establecen dos conexiones:
• A las tablas generales.
• Y a las tablas dentro de la empresa.

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

Nota: La instrucción @parametroConsola envía los parámetros necesarios para el String de


conexión.

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

Consultas Para extraer información de las tablas se utiliza la instrucción Consulta.

// El siguiente código extrae información de la empresa a partir de las tablas generales.


idemp= @parametroConsola('IdEmpresa')

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 \’.

Referencia: Para más información sobre reportes de CONTPAQ i® NÓMINAS, consulte el


reporte AltaIMSS.RPT ubicado en <C:\Compac\Empresas\Reportes\NOMINAS>

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:

<C:\Archivos de programa\Compac\Nominas\reporteador i>

Computación en Acción, S.A. de C.V. Casos especiales


Derechos Reservados® Página
C-12

Вам также может понравиться