Subido por Alberto Bermudez

manual-de-reporteador-contpaqi-com (7)

Anuncio
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 © 20052006 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®
VISIÓN GENERAL
PÁGINA
1
CAPÍTULO 1. INICIO DE UN REPORTE
VISIÓN GENERAL
PREPARACIÓN PARA LA CREACIÓN DE UN REPORTE
EDITOR DE REPORTES DE CONTPAQ i®
COMENTARIOS
INSTRUCCIÓN COLUMNAS
VARIABLES
ASIGNACIÓN DE VALORES A UNA VARIABLE
INICIALIZACIÓN DE UNA VARIABLE
CONSTANTES
ARREGLOS DE DATOS
PÁGINA
1-1
1-2
1-5
1-8
1-9
1-10
1-11
1-12
1-13
1-14
CAPÍTULO 2. INSTRUCCIONES DE SALIDA
VISIÓN GENERAL
INSTRUCCIÓN LISTA
INSTRUCCIONES TEXTO E IMPRIME
INSTRUCCIÓN IMPRIME
LABORATORIO 1
PÁGINA
2-1
2-2
2-4
2-6
2-7
CAPÍTULO 3. CICLOS Y CONDICIONES
VISIÓN GENERAL
INSTRUCCIÓN SI
INSTRUCCIÓN CASO
INSTRUCCIÓN MIENTRAS
PÁGINA
3-1
3-2
3-4
3-5
CAPÍTULO 4. ACCESO A LAS BASES DE DATOS
VISIÓN GENERAL
CONEXIÓN A LA BASE DE DATOS
CONSULTAS DE SQL
LABORATORIO 2
PÁGINA
4-1
4-2
4-4
4-7
CAPÍTULO 5. INSTRUCCIONES DE ENTRADA
VISIÓN GENERAL
INSTRUCCIÓN PARAMETROS
INSTRUCCIÓN CONTROL
CONTROL CTRLCODIGO
CONTROL CTRLCHECKBOX
CONTROL CTRLCODIGONUMERO
CONTROL CTRLFECHA
CONTROL CTRLLISTA
PÁGINA
5-1
5-2
5-4
5-5
5-7
5-9
5-11
5-13
Continúa en la siguiente página
Índice, Continuación
CAPÍTULO 5. INSTRUCCIONES DE ENTRADA CONTINÚA
CONTROL CTRLRADIO
CONTROL CTRLNUMERO
CONTROL CTRLOPCION
CONTROL CTRLREAL
CONTROL CTRLVACIO
CONTROL CTRLTEXTO
PARÁMETRO DEPENDENCIA
LABORATORIO 3
PÁGINA
5-15
5-17
5-19
5-21
5-23
5-25
5-27
5-30
CAPÍTULO 6. FUNCIONES
VISIÓN GENERAL
UTILIZACIÓN DE LAS FUNCIONES DEL REPORTEADOR
CREACIÓN DE FUNCIONES
INSTRUCCIÓN INCLUYE
LABORATORIO 4
PÁGINA
6-1
6-2
6-3
6-5
6-6
CAPÍTULO 7. FORMATO
VISIÓN GENERAL
ALINEACIÓN DEL TEXTO
FUNCIONES DE FORMATO
LISTA DE FUNCIONES DE FORMATO
INSTRUCCIÓN ENCAB
LABORATORIO 5
PÁGINA
7-1
7-2
7-3
7-4
7-5
7-6
APÉNDICE A SENTENCIAS BÁSICAS EN SQL PARA REPORTES
Tipos de sentencias en SQL
Sentencias básicas
PÁGINA
A-2
A-3
APÉNDICE B ACTUALIZACIÓN DE REPORTES DE ADMINPAQ
VISIÓN GENERAL
CAMBIO DE INSTRUCCIONES EN CONTPAQ i®
EJEMPLO. ACTUALIZACIÓN DE UN REPORTE
PÁGINA
B-1
B-2
B-4
APÉNDICE C CASOS ESPECIALES
VISIÓN GENERAL
REPORTES EN EXCEL®
REPORTES SENSIBLES
REPORTES EN CONTPAQ I® NÓMINAS
PÁGINA
C-1
C-2
C-7
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:
•
•
•
•
Objetivos
CONTPAQ i® CONTABILIDAD
CONTPAQ i® BANCOS
CONTPAQ i® NÓMINAS
CONTPAQ i® COMERCIAL
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
asistente
Los asistentes al curso de Reporteador deberán tener conocimientos básicos de
programación, bases de datos y sentencias de SQL.
Estructura del
curso
El curso de Reporteador está planeado de tal manera que conforme vaya avanzando en los
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.
Página
1
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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á:
•
•
•
•
•
•
•
En este capítulo
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.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
PREPARACIÓN PARA LA CREACIÓN DE UN REPORTE
EDITOR DE REPORTES DE CONTPAQ i®
COMENTARIOS
INSTRUCCIÓN COLUMNAS
VARIABLES
ASIGNACIÓN DE VALORES A UNA VARIABLE
INICIALIZACIÓN DE UNA VARIABLE
CONSTANTES
ARREGLOS DE DATOS
Inicio de un reporte
Página
1-1
Página
1-1
1-2
1-5
1-8
1-9
1-10
1-11
1-12
1-13
1-14
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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-94B85A0F62BF7796&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
RTW
Cuando trabajes con Reporteador de CONTPAQ i® encontrarás dos tipos de archivos: unos
son extensión .RPT y otros son extensión .RTW
Archivo
.RPT
.RTW
Descripción
También conocidos como archivos fuente, son los que contienen las
instrucciones creadas por el programador. Estos archivos son de tipo
texto.
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.
Derechos Reservados®
Página
1-2
Inicio un reporte
Preparación para la creación de un reporte, Continuación
Ubicación de los
reportes
•
Los reportes existentes (tanto los archivos fuentes .RPT como los ejecutables .RTW)
se ubican en el servidor en las siguientes rutas:
Sistema
CONTPAQ i® CONTABILIDAD
CONTPAQ i® BANCOS
CONTPAQ i® NÓMINAS
CONTPAQ i® COMERCIAL
Ruta
<C:\Compac\Empresas\Reportes\Contpaq>
<C:\Compac\Empresas\Reportes\Bancos>
<C:\Compac\Empresas\Reportes\Nominas>
<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
reportes
Importante: realiza un respaldo de los reportes que hayas desarrollado, copia los archivos
.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
un reporte
Para crear un reporte nuevo es necesario que siga los siguientes pasos:
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.
Desarrolla la consulta de SQL en el Managment Studio.
3
5
Desarrolla el código fuente desde el Editor de reportes incluyendo la consulta
de SQL.
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.
4
Nota: Estos pasos se verán a detalle a lo largo del curso.
Continúa en la siguiente página
Inicio de un reporte
Página
1-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Preparación para la creación de un reporte, Continuación
Reglas en el
orden de las
instrucciones
Cada programador tiene su propia forma de estructurar el código para desarrollar el reporte, sin
embargo hay ciertas reglas que se deben respetar en el orden en que aparecen las
instrucciones en el código fuente.
A continuación se listan dichas reglas:
•
•
•
Estructura de un
reporte
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.
A continuación se lista un orden sugerido para la estructura de un 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.
Derechos Reservados®
Página
1-4
Inicio un reporte
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:
•
Funciones del
Editor
Menú
En CONTPAQ i® CONTABILIDAD y CONTPAQ i® COMERCIAL ve al menú
Reportes opción Editor de Reportes.
A continuación se describen las funciones el Editor de Reportes:
Archivo
Nuevo
Teclas
rápidas
<Ctrl+ N>
Archivo
Abrir
<Ctrl+O>
Abre un reporte existente.
Archivo
Guardar
<Ctrl+S>
Guarda el RPT que se tiene abierto.
Archivo
Archivo
Guardar Como
Imprimir
Permite guardar el archivo RPT con un nombre diferente.
Imprime el código fuente.
Archivo
Salir
Sale del editor de reportes.
Edición
Edición
Edición
Deshacer
Rehacer
Cortar
<Ctrl+Z>
<Ctrl+Y>
<Ctrl+X>
Deshace el último cambio generado en el código.
Rehace el último cambio generado en el código.
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
Edición
Edición
Edición
Generar
Buscar
Bookmark
Next bookmark
Ir a…
Generar archivo
RTW
Ejecutar reporte
<Ctrl+F>
<Ctrl+B>
<F2>
<Ctrl+L>
Buscar un texto dentro del código.
Agrega una marca en la línea de código actual.
Se desplaza a la siguiente marca dentro del código.
Permite saltar a una línea de código específica.
Compila el archivo RPT actual (genera el archivo RTW).
Generar
Ayuda
Comando
Acerca del Editor de
Reportes
Inicio de un reporte
Botón
Acción
Crea un nuevo reporte.
Ejecuta el reporte actual.
Muestra información general del Editor de Reportes
como la versión.
Página
1-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
comentario
La forma de agregar comentarios en Reporteador es insertando dos diagonales // antes del
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
Se puede agregar un
comentario al inicio de una
línea
A la derecha de una línea de
código
Comentar todo un bloque de
instrucciones
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Ejemplo
// Reporte Catálogo Productos
// Elaborado por: Marco Muñoz
// Fecha: 23/Mayo/2013
Texto vTotales // Imprime los totales.
Imprime
/*
Reporte Catálogo de productos
Elaborado por: Marco Antonio Muñoz
Fecha: 23/Mayo/2013
*/
Página
1-6
Inicio un reporte
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
Es el número de columnas del reporte
Ancho de la columna 1 en centímetros
Ancho de la columna 2 en centímetros
Ancho de la columna N en centímetros
NumColumnas
Ancho1
Ancho2
AnchoN
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
Página
1-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Variables
Introducción
Una variable es un espacio en memoria que se designa para almacenar cualquier valor
temporal.
Aplicación de las
variables
Las variables permiten almacenar valores que posteriormente se podrán utilizar para hacer
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
Guardar datos
Cálculos aritméticos
Comparaciones
Ejemplo
vNombreCuenta = 'Activo'
vTotal = vSubtotal + vIVA
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
Tabla
Variables globales
Parámetros
Función
Variables locales
Argumentos
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Nomenclatura
Anteponer una ‘t’
Anteponer una ‘g’
Anteponer una ‘p’
Anteponer una ‘f’
Anteponer una ‘l’
Anteponer una ‘a’
Página
1-8
Ejemplo
tProductos
gMoneda
pIdioma
fBuscaProductos
lContador
aCodigo
Inicio un reporte
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
vNombreVariable
Dato
Ejemplos
Se refiere a
Nombre de la variable
Dato a almacenar, puede ser un dato
numérico, de texto u otra variable.
A continuación se muestran algunos ejemplos en la asignación de variables:
Tipo de dato
Texto
Descripción de la variable
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
cadenas
Para concatenar cadenas de texto se utiliza &.
Ejemplo:
vSaludo = 'Hola'
vSaludo = vSaludo & 'Mundo'
Inicio de un reporte
Página
1-9
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
vNombreVariable = 0
vNombreVariable = ' '
Ejemplos
Se refiere a
Si es valor numérico
Si es valor de texto (espacio entre
apóstrofes)
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.
Derechos Reservados®
Página
1-10
Inicio un reporte
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
NombreConstante
Se refiere a
Nombre con el que se identificará la
constante.
Valor que se asignará a la constante
NumeroConstante
Ejemplos
Inicio de un reporte
CONSTANTE PI 3.1416
CONSTANTE MESES 12
CONSTANTE DIAS 7
Página
1-11
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
vNombreVariable
Índice
Se refiere a
Nombre de la variable
Número del índice, los índices comienzan
en 0
Dato a almacenar, puede ser un dato
numérico, de texto o booleano.
Dato
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:
vMiVariable
0
1
Total
Del
2
Periodo
3
12
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.
Derechos Reservados®
Página
1-12
Inicio un reporte
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á:
•
•
•
Instrucciones de
salida
Las instrucciones de salida que se utilizan en Reporteador son:
•
•
En este capítulo
Cómo desplegar etiquetas y títulos.
Cómo mostrar los valores almacenados en variables.
Cómo desplegar el valor de los registros.
Lista
Texto e Imprime
Este capítulo contiene los siguientes temas:
Tema
Visión General
Instrucción Lista
Instrucciones Texto e Imprime
Instrucción Imprime
Laboratorio 1
Instrucciones de Salida
Página
2-1
Página
2-1
2-2
2-4
2-6
2-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
Lista ‘Dato1’,’Dato2’,’Dato3’
Lista vMiVariable
Parámetros
A continuación se muestra la descripción de los parámetros:
Parámetro
‘Dato1,’Dato2’,’Dato3’
vMiVariable
Ejemplo 1
Resultado
Despliega datos de texto
Despliega los datos almacenados en la
variable vMiVariable
Se refiere a
El texto ‘Dato1’ aparecerá en la primera columna.
‘Dato2’ en la segunda columna.
‘Dato3’ en la tercera columna.
La variable que contiene los datos a desplegar en pantalla
// Ejemplo de instrucción Lista
// Elaboró: Marco A. Muñoz
Columnas 3;2,3,2
Lista 'Código','Nombre','Precio'
0
Código
1
Nombre
2
Precio
Continúa en la siguiente página
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
2-2
Instrucciones de Salida
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
Código
Instrucciones de Salida
1
Nombre
Página
2-3
2
Precio
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
C0
‘Mensaje en la primera columna’
C1
‘Mensaje en la segunda columna’
CN
‘Mensaje en la N columna’
Imprime
Ejemplo 1
Se refiere a
La primera columna
El mensaje que se imprimirá en la primera columna
La segunda columna
El mensaje que se imprimirá en la segunda columna
La columna N
El mensaje que se imprimirá en la N columna
Imprime los datos asignados en las instrucciones
Texto
// 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
Total
1
Del
2
Periodo
3
12
Continúa en la siguiente página
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
2-4
Instrucciones de Salida
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
<posicionCentímetros>
Se refiere a
Posición en centímetros dónde comenzará a
desplegarse el Mensaje
El mensaje que se imprimirá en pantalla
Imprime el mensaje asignado en la instrucción Texto
‘Mensaje’
Imprime
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
El mensaje que se imprimirá en pantalla, abarcará
todas las columnas de ser necesario.
Imprime el mensaje asignado en la instrucción Texto
‘Mensaje’
Imprime
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
Texto C0;'Mensaje'
Texto C0;'^Mensaje'
Texto C0;'"Mensaje'
Instrucciones de Salida
Descripción
Alinea el mensaje a la izquierda de la columna
Centra el mensaje en la columna
Alinea el mensaje a la derecha de la columna
anteponiendo comillas dobles antes del texto.
Página
2-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
Código
Computación en Acción, S.A. de C.V.
Derechos Reservados®
1
Nombre
Página
2-6
2
Precio
Instrucciones de Salida
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
1
Ejercicio
2
3
4
Ejercicio
Ingresa al Editor de Reportes de CONTPAQ i® COMERCIAL. Para esto, ingresa
al menú Reportes opción Editor de Reportes.
Ve al menú Archivo opción Abrir y abre el archivo Base_Lab1.
Guarda el archivo con el nombre Productos_Lab1.
Modifica el reporte de la siguiente forma:
•
5
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”.
Guarda, compila y ejecuta el reporte.
GUARDAR REPORTES
Recuerda que puedes guardar el reporte presionando el icono
herramientas.
de la barra de
COMPILAR REPORTES
Recuerda que puedes compilar el reporte presionando el icono
herramientas.
EJECUTAR REPORTES
Recuerda que puedes ejecutar el reporte presionando el icono
herramientas.
de la barra de
de la barra de
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
Página
2-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Laboratorio 1, Continuación
Resultado
El reporte deberá quedar como se muestra a continuación:
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
2-8
Instrucciones de Salida
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:
•
•
En este capítulo
Repitan una serie de instrucciones dentro de un ciclo.
Condicionar la ejecución de instrucciones.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
INSTRUCCIÓN SI
INSTRUCCIÓN CASO
INSTRUCCIÓN MIENTRAS
Ciclos y Condiciones
Página
3-1
Página
3-1
3-2
3-4
3-5
Computación en Acción, S.A. de C.V.
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
<condición>
Comparadores
Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Comparador
=
!=
!
>
<
>=
<=
Operadores
lógicos
Se refiere a
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
Ejemplo
a=b
a != b
!a
a>b
a<b
a >= b
a <= b
Descripción
Compara si “a” es igual que “b”
Compara si “a” es diferente que “b”
Compara si no es “a”
Compara si “a” es mayor que “b”
Compara si “a” es menor que “b”
Compara si “a” es mayor o igual que “b”
Compara si “a” es menor o igual que “b”
Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Operador
Y
Ejemplo
(a > b) Y (a < c)
O
(a > b) O (a < c)
Descripción
Compara si “a” es mayor que “b” Y
si “a” es menor que “c”
Compara si “a” es mayor que “b” O
si “a” es menor que “c”
Continúa en la siguiente página
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
3-2
Ciclos y Condiciones
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
3-3
Computación en Acción, S.A. de C.V.
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
La variable que se evaluará en los casos.
Caso si la variable vOpcion = Valor1
Caso si la variable vOpcion = Valor2
Caso si la variable vOpcion = ValorN
vOpcion
<Valor1>
<Valor2>
<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
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
3-4
Ciclos y Condiciones
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
<condición>
Comparadores
Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Comparador
=
!=
!
>
<
>=
<=
Operadores
lógicos
Ejemplo
Se refiere a
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.
Ejemplo
a=b
a != b
!a
a>b
a<b
a >= b
a <= b
Descripción
Compara si “a” es igual que “b”
Compara si “a” es diferente que “b”
Compara si no es igual a “a”
Compara si “a” es mayor que “b”
Compara si “a” es menor que “b”
Compara si “a” es mayor o igual que “b”
Compara si “a” es menor o igual que “b”
Los posibles comparadores que es posible utilizar en las condiciones son los siguientes:
Operador
Y
Ejemplo
(a > b) Y (a < c)
O
(a > b) O (a < c)
Descripción
Compara si “a” es mayor que “b” Y
si “a” es menor que “c”
Compara si “a” es mayor que “b” O
si “a” es menor que “c”
// 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
3-5
Computación en Acción, S.A. de C.V.
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
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
3-6
Ciclos y Condiciones
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:
•
•
•
En este capítulo
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.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
CONEXIÓN A LA BASE DE DATOS
CONSULTAS DE SQL
LABORATORIO 2
Acceso a las Bases de Datos
Página
4-1
Página
4-1
4-2
4-4
4-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
CONTPAQ i® CONTABILIDAD
CONTPAQ i® BANCOS
CONTPAQ i® NÓMINAS
CONTPAQ i® COMERCIAL
Instrucción
UsaEmpresa
UsaEmpresa
Conexion
Conexion
Enseguida se muestran ejemplos de conexión en cada sistema:
CONTPAQ i®
CONTABILIDAD
// La siguiente línea establece una conexión a la empresa
//activa de CONTPAQ i® CONTABILIDAD:
UsaEmpresa tEmpresa;'contpaqw1.00'
CONTPAQ i®
BANCOS
// La siguiente línea establece una conexión a la empresa
//activa de CONTPAQ i® BANCOS:
UsaEmpresa tEmpresa;'contpaqw1.00'
CONTPAQ i®
NÓMINAS
// Las siguientes líneas establecen una conexión a la empresa
//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.
Derechos Reservados®
Página
4-2
Acceso a las Bases de Datos
Conexión a la Base de Datos, Continuación
CONTPAQ i®
COMERCIAL
(Sistema)
// El siguiente ejemplo establece una conexión a la base de
//datos de una empresa de CONTPAQ i COMERCIAL.
// Este código se utiliza con los reportes que ya se incluyen
//en el sistema.
gServidor
gInstancia
gUsuarioSQL
gClaveSQL
=
=
=
=
@parametroConsola('Servidor')
@parametroConsola('Instancia')
@parametroConsola('NombreUsuario')
@parametroConsola('Clave')
Conexion tEmpresa = Conexion.crear('jdbc:jtds:sqlserver:' &
gServidor & ';instance=' & gInstancia,gUsuarioSQL,gClaveSQL)
CONTPAQ i®
COMERCIAL
(Editor)
// El siguiente ejemplo establece una conexión a la base de
//datos de una empresa de CONTPAQ i COMERCIAL.
// 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
gInstancia
gUsuarioSQL
gClaveSQL
=
=
=
=
'//localhost/adROJA'
'COMPAC'
'sa'
'COMPAC'
Conexion tEmpresa = Conexion.crear('jdbc:jtds:sqlserver:' &
gServidor & ';instance=' & gInstancia,gUsuarioSQL,gClaveSQL)
Acceso a las Bases de Datos
Página
4-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
vConsulta
‘ConsultaSQL’
tMiConsulta
tEmpresa
Mientras tMiConsulta>Encontro
FinMientras
tTabla(‘Campo’)
tMiConsulta.Busca
Siguiente
Ejemplo
Se refiere a
Variable donde se guardará la sentencia SELECT de SQL.
Sentencia SELECT de SQL.
Variable tabla donde se almacenará el resultado de la
consulta.
Variable empresa utilizda en la instrucción Conexion.
Este ciclo repite el grupo de instrucciones comprendidas
entre “Mientras y FinMientras” por cada uno de los registros
de la consulta.
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.
Esta instrucción salta al siguiente registro de la consulta.
// 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.
Derechos Reservados®
Página
4-4
Acceso a las Bases de Datos
Consultas de SQL, Continuación
Crear la consulta
en el SQL
Se recomienda crear primero la consulta en el SQL Server Management Studio, probar que
funcione correctamente aquí y después copiar la consulta al reporteador.
Copiar consulta a
reporteador
Después de haber creado la consulta en SQL Server Management Studio para copiarla
utiliza una variable en reporteador y ve concatenándole cada renglón teniendo en cuenta lo
siguiente:
•
•
•
•
•
Ejemplo de
copiado de
consulta SQL
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 código en 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
irá concatenando
cada renglón de
la consulta
Copia cada
renglón entre
apóstrofes
Deja un espacio
en blanco antes
de cerrar el
apóstrofe
Continúa en la siguiente página
Acceso a las Bases de Datos
Página
4-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Consultas de SQL, Continuación
Apóstrofe en
consultas
Si en la consulta de SQL existe un apóstrofe ‘, en reporteador se deberá escribir como \’.
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
qProductos
qProductos
qProductos
qProductos
qProductos
qProductos
qProductos
Computación en Acción, S.A. de C.V.
Derechos Reservados®
=
=
=
=
=
=
=
=
'SELECT CRAZONSOCIAL, CASE WHEN CTIPOCLIENTE=1 '
qProductos & 'THEN \'Cliente\' '
qProductos & 'WHEN CTIPOCLIENTE=2 '
qProductos & 'THEN \'Cliente-Proveedor\' '
qProductos & 'WHEN CTIPOCLIENTE=3 '
qProductos & 'THEN \'Proveedor\' '
qProductos & 'END AS TIPO '
qProductos & 'FROM admClientes '
Página
4-6
Acceso a las Bases de Datos
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:
Ejercicio
Paso
1
2
Ejercicio
Abre el archivo Base_Lab2 y guardálo como Productos_Lab2.
En la sección 2. Conexión a la BDD haz lo siguiente:
•
•
3
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.
En la sección 6. Consulta SQL haz lo siguiente:
•
•
4
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.
En la sección 7. Desplegar datos de la consulta haz lo siguiente:
•
•
5
Resultado
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.
Guarda, compila y ejecuta el reporte.
El reporte deberá quedar como se muestra a continuación:
Acceso a las Bases de Datos
Página
4-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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:
•
•
En este capítulo
La forma de crear una ventana de filtros.
Los diferentes controles que se pueden incluir en la ventana de filtros.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
INSTRUCCIÓN PARAMETROS
INSTRUCCIÓN CONTROL
CONTROL CTRLCODIGO
CONTROL CTRLCHECKBOX
CONTROL CTRLCODIGONUMERO
CONTROL CTRLFECHA
CONTROL CTRLLISTA
CONTROL CTRLRADIO
CONTROL CTRLNUMERO
CONTROL CTRLOPCION
CONTROL CTRLREAL
CONTROL CTRLVACIO
CONTROL CTRLTEXTO
PARÁMETRO DEPENDENCIA
LABORATORIO 3
Instrucciones de Entrada
Página
5-1
Página
5-1
5-2
5-4
5-5
5-7
5-9
5-11
5-13
5-15
5-17
5-19
5-21
5-23
5-25
5-27
5-30
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
<Titulo de la ventana de parámetros>
<Titulo de la pestaña de la página>
PParametroReceptor
<valor por omisión>
<Título del parámetro>
Se refiere a
El título que aparecerá en la ventana de filtros.
El título de la pestaña de filtros.
Nombre de la variable que recibirá el parámetro
seleccionado por el usuario.
El valor que aparece por omisión en la ventana
filtros.
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 que aparecerá al posicionarse en el
campo del parámetro.
Control a utilizar para el parámetro (vea
instrucción control).
Parámetros propios del control (vea instrucción
control).
<Mensaje de ayuda>
<Nombre control>
<Parámetros del control>
Continúa en la siguiente página
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
5-2
Instrucciones de Entrada
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
Instrucciones de Entrada
El resultado del ejemplo en pantalla será el siguiente:
Página
5-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
controles
A continuación se muestra la lista de controles:
Nombre del control
CtrlCheckbox
CtrlCodigo
CtrlCodigoNumero
CtrlFecha
CtrlLista
CtrlNumero
CtrlOpcion
CtrlRadio
CtrlReal
CtrlVacio
CtrlTexto
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Descripción del control
Muestra una casilla que puede marcarse o desmarcarse, según
convenga.
Muestra campos de código, respetando la mascarilla de la
cuenta, acompañados del botón <F3> que permite realizar
búsquedas.
Muestra campos de código con formato numérico, acompañados
del botón <F3> que permite realizar búsquedas.
Muestra campos con formato fecha, acompañados con un botón
de despliegue de un calendario.
Muestra una lista de selección con los valores específicos en
ella.
Muestra un campo numérico con un control que permite
aumentar o disminuir la cantidad, o bien, capturarla
directamente.
Permite seleccionar uno o más elementos del apartado de la
izquierda al enviarlos al apartado de la derecha.
Muestra dos o más casillas de opción única.
Permite la captura de un número real. Por omisión muestra 4
decimales.
Deja en blanco el espacio destinado a uno de los filtros de la
ventana para darle un mejor acomodo a los filtros.
Muestra una caja de texto para permitir capturar una cadena de
texto.
Página
5-4
Instrucciones de Entrada
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
pCodigo1
‘00000000000’
Valida
PCodigo2
Mascarilla
‘Tabla’
‘CampoF3’
Ejemplo
Se refiere a
Esta variable será la que recibirá el código 1 de la cuenta
seleccionada por el usuario
Valor por omisión
Instrucción para validar la cuenta seleccionada por el usuario.
Parámetro contra el que se comparará el parámetro pCodigo1
Mascarilla a mostrar.
Nombre de la tabla de dónde se extraerá el código.
Campo a desplegar en la ventana además del código.
// 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
Página
5-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-6
Instrucciones de Entrada
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
pParametroReceptor
Se refiere a
Esta variable será la que recibirá el valor seleccionado por el
usuario y puede ser cualquiera de los siguientes:
Marca
Casilla desmarcada
Casilla marcada
<booleano>
Valor de la variable
0
1
Este dato puede tener los siguientes valores:
Valores posibles
True
False
Resultado
Marca la casilla por omisión
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
Página
5-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-8
Instrucciones de Entrada
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
pNumero1
<Numero>
Valida
PNumero2
<Mascarilla>
<Tabla>
<Busca por>
Se refiere a
Esta variable será la que recibirá el código 1 de la cuenta seleccionada
por el usuario
Valor por omisión
Instrucción para validar la entrada seleccionada por el usuario.
Parámetro contra el que se comparará el parámetro pNumero1
Mascarilla de la cadena.
Nombre de la tabla a abrir
Nombre del campo por medio del cual se realizará la búsqueda
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-9
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-10
Instrucciones de Entrada
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
pFecha1
‘aaaammdd’
Valida
PFecha2
Se refiere a
Esta variable será la que recibirá la fecha seleccionada por el usuario
Fecha en formato aaaammdd
Instrucción para validar la entrada seleccionada por el usuario.
Fecha contra la que se compara el parámetro pFecha1
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-11
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-12
Instrucciones de Entrada
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
pParametro
Dato1
<Valor1>
Dato2
<Valor2>
DatoN
<ValorN>
Se refiere a
Esta variable será la que recibirá el elemento de la lista seleccionado por el
usuario.
Texto del primer valor de la lista
Valor que se asignará a pParametro si se selecciona la opción ‘Dato1’ de la
lista
Texto del segundo valor de la lista
Valor que se asignará a pParametro si se selecciona la opción ‘Dato2’ de la
lista
Texto del N valor de la lista
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
Página
5-13
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-14
Instrucciones de Entrada
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
pParametro
Dato1
<Valor1>
Dato2
<Valor2>
DatoN
<ValorN>
Se refiere a
Variable donde se almacenará el valor del dato seleccionado.
Texto del primer valor de la lista
Valor que se asignará a pParametro si se selecciona la opción ‘Dato1’
de la lista
Texto del segundo valor de la lista
Valor que se asignará a pParametro si se selecciona la opción ‘Dato2’
de la lista
Texto del N valor de la lista
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
Página
5-15
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-16
Instrucciones de Entrada
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
pNumero1
Se refiere a
Esta variable será la que recibirá el número seleccionado por el usuario.
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-17
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-18
Instrucciones de Entrada
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
pListaSeleccionada
Dato1
<Valor1>
Dato2
<Valor2>
DatoN
<ValorN>
Se refiere a
Variable donde se almacenará la lista de opciones seleccionada.
Texto del primer valor de la lista
Valor que se asignará a pParametro si se selecciona la opción
‘Dato1’ de la lista
Texto del segundo valor de la lista
Valor que se asignará a pParametro si se selecciona la opción
‘Dato2’ de la lista
Texto del N valor de la lista
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
Página
5-19
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-20
Instrucciones de Entrada
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
pParametro
<Número de decimales>
Se refiere a
Variable donde se almacenará el número real.
Número de decimales que tendrá el parámetro
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-21
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-22
Instrucciones de Entrada
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
Página
5-23
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-24
Instrucciones de Entrada
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
pParametro
<Valor por omisión>
Se refiere a
Variable donde se almacenará el valor del dato seleccionado.
Valor que se asignará a pParametro por omisión.
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-25
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-26
Instrucciones de Entrada
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
<ValorFalso>
<ValorVerdadero>
Se refiere a
Si pParametroPadre es igual a este valor entonces el control hijo
se desactivará.
Si pParametroPadre es igual a este valor entonces el control hijo
se activará.
Continúa en la siguiente página
Instrucciones de Entrada
Página
5-27
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
5-28
Instrucciones de Entrada
Parámetro Dependencia, Continuación
Resultado
Instrucciones de Entrada
El resultado del ejemplo en pantalla será el siguiente:
Página
5-29
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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:
Ejercicio
Paso
1
2
Ejercicio
Abre el reporte Base_Lab3 y guardálo como Productos_Lab3.
En la sección 4. Parámetros haz lo siguiente:
•
•
3
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.
En la sección 6.3 Consulta SQL haz lo siguiente:
•
•
4
Resultado
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.
Guarda, compila y ejecuta el reporte.
La ventana de los filtros deberá verse como se muestra a continuación:
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
5-30
Instrucciones de Entrada
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 :
•
•
•
En este capítulo
Hacer llamados a las funciones existentes en Reporteador.
Crear sus propias funciones.
Hacer llamados a librerías.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
UTILIZACIÓN DE LAS FUNCIONES DEL REPORTEADOR
CREACIÓN DE FUNCIONES
INSTRUCCIÓN INCLUYE
LABORATORIO 4
Funciones
Página
6-1
Página
6-1
6-2
6-3
6-5
6-6
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
variableResultado
@Funcion
Argumento1;argumento2;…argumentoN
Ejemplo 1
Se refiere a
La variable que almacena el resultado de la
función.
El nombre de la función.
Cada uno de los argumentos que se envían
a la función.
// 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.
Derechos Reservados®
Página
6-2
Funciones
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
NombreFuncion
argumento1;argumento2;…argumentoN
Ejemplo 1
Se refiere a
Nombre de la función a crear
Cada uno de los argumentos que se envían
a la función.
// 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
Página
6-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
6-4
Funciones
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
<NombreLibreria>
Ejemplo
Se refiere a
Nombre del archivo .RPT que contiene las
funciones que se desean incluir en nuestro
reporte.
// 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
Página
6-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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:
Ejercicio
Paso
1
2
3
4
5
6
7
8
9
Resultado
Ejercicio
Abre el reporte Base_Lab4 y guardálo como Productos_Lab4.
En la sección 6.1 Definir columnas en la instrucción Columnas agrega una nueva
columna al final del reporte de 2 cm.
En la sección 6.2 Título del reporte agrega una nuevo título, ahora quedarán así:
CÓDIGO, PRODUCTO, FECHA, PRECIO.
En la sección 6.3. Consulta SQL agrega el campo CFECHAALTAPRODUCTO a
la consulta para desplegar este campo.
En la sección 7. Desplegar datos despliega el campo de la “Fecha del alta” del
producto antes de desplegar el “Precio”.
Guarda, compila y ejecuta el reporte. Observa que la fecha se muestra sin formato.
Crea la función fFormatoFecha que dé formato a la fecha dd/mm/aaaa.
Utiliza la función fFormatoFecha para mostrar el campo fecha que acabas de
agregar con formato.
Guarda, compila y ejecuta el reporte.
El reporte deberá quedar como se muestra a continuación:
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
6-6
Funciones
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:
•
En este capítulo
Identificará las funciones para cambiar el tipo de letra, alinear texto, aplicar negritas,
generar encabezados, entre otras funciones de formato.
Este capítulo contiene los siguientes temas:
Tema
VISIÓN GENERAL
ALINEACIÓN DEL TEXTO
FUNCIONES DE FORMATO
LISTA DE FUNCIONES DE FORMATO
INSTRUCCIÓN ENCAB
LABORATORIO 5
Formato
Página
7-1
Página
7-1
7-2
7-3
7-4
7-5
7-6
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
Texto C0;’Mensaje’
Descripción
Alinea el mensaje a la izquierda de la
columna
Centra el mensaje en la columna
Alinea el mensaje a la derecha de la
columna anteponiendo comillas dobles
antes del texto.
Salta líneas hacia abajo.
Texto C0;’^Mensaje’
Texto C0;’”Mensaje’
Saltalin <NumLineas>
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.
Derechos Reservados®
Página
7-2
Formato
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
Función <Parámetro>
[Ca..Cz].Función <Parámetro>
[Ca,Cb,Cc].Función <Parámetro>
Parámetros
Descripción
Aplica la función a todas las columnas
Aplica desde la columna Ca hasta la
columna Cz.
Aplica a la columna Ca, la columna Cb y la
columna Cc.
A continuación se muestra la descripción de los parámetros:
Parámetro
Función
[Ca..Cz]
[Ca,Cb,Cc]
<Parámetro>
Se refiere a
Nombre de la función. Vea Lista de funciones de formato.
Rango de columnas donde se aplicará el formato de la
función.
Listado de columnas a la que se le aplicará la función
formato.
El parámetro de la función puede ser cualquiera de los
siguientes:
Parámetro
Vacío
Booleano
Se refiere a
Esta función no tendrá parámetros.
Puede ser: True o False:
Valor
True
False
Texto
Número
Formato
Página
7-3
Descripción
Activa el formato.
Desactiva el formato.
Cualquier valor de texto encerrado
entre ‘apóstrofes’.
Cualquier valor numérico.
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Lista de funciones de formato
Introducción
A continuación se listan las funciones de formato.
Función
Absoluto
Sintaxis
[RangoCol].Absoluto Booleano
Ejemplo
[C0..C2].Absoluto true
Altura
[RangoCol].Altura Número
Altura 12
Color
[RangoCol].Color @RGB(R;G;B)
[C0].Color @RGB(255;0;0)
Coma
[RangoCol].Coma
[C3].Coma
Decimales
[RangoCol].Decimales Número
[C1,C3].Decimales 4
Espacio
[RangoCol].Espacio
[C3].Espacio
InvSig
[RangoCol].InvSig Booleano
[C1].InvSig true
Italico
[RangoCol].Italico Booleano
Italico true
Negritas
[RangoCol].Negritas Booleano
Negritas false
SubrayaCol
[RangoCol].Subrayacol
Imprime
subrayacol
imprime
Subrayado
[RangoCol].Subrayado Booleano
[C2..C4].subrayado true
UsaLetra
[RangoCol].UsaLetra ‘Tipo de letra’
UsaLetra 'Arial'
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
7-4
Descripción del Ejemplo
Activa el valor absoluto de la
columna C0 a C2
Ajusta el tamaño de la letra en
12 puntos en todas las
columnas
Muestra el texto de color rojo
en la columna 0.
Divide las cantidades
numéricas con comas cada 3
dígitos en la columna 3.
Las cantidades de las
columnas 1 y 3 tendrán 4
decimales.
Además redondea los
decimales.
Inserta un pequeño espacio
cada 3 dígitos en las
cantidades numéricas en la
columna 3.
Invierte el signo en las
cantidades de la columna 1.
Activa el uso de itálicas en
todas las columnas.
Desactiva el uso de las
negritas en todas las
columnas.
Dibuja una raya horizontal en
ese renglón a lo ancho de
todas las columnas.
Subraya los datos de la
columna 2 a la 4
Aplica el tipo de letra Arial a
todas las columnas.
Formato
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
Página
7-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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:
Ejercicio
Paso
1
2
3
Ejercicio
Abre el reporte Base_Lab5 y guardálo como Productos_Lab5.
Cambia el tipo de letra a ‘Arial’.
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:
•
•
•
•
4
5
6
Resultado
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.
En la sección 7. Desplegar datos de la consulta ajusta el tamaño a 10 puntos
para desplegar los datos de la consulta.
De ser necesario ajusta el tamaño de las columnas.
Guarda, compila y ejecuta el reporte.
El reporte deberá quedar como muestra a continuación:
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
7-6
Formato
Apéndice A
Sentencias básicas en SQL para reportes
Introducción
En este apéndice:
•
•
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.
Este apéndice contiene los siguientes temas:
Tema
Tipos de sentencias en SQL
Sentencias básicas
Sentencias básicas en SQL para reportes
Página
A-1
Página
A-2
A-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Tipos de sentencias en SQL
Tipos de
sentencias
Existen dos tipos de sentencias en SQL, las sentencias de acción y las sentencias de
consulta.
En este taller se verán las sentencias de consulta las cuales se utilizan para la generación de
reportes.
Sentencias de
acción en SQL
Las sentencias de acción más utilizadas en SQL para dar mantenimiento a las bases de
datos son:
•
•
•
•
•
•
Sentencias
de consultas
en SQL
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.
La consulta básica y más utilizada en SQL es la instrucción SELECT la cual, recupera filas o
registros de la base de datos y habilita la selección de una o varias filas o columnas de una o
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.
Derechos Reservados®
Página
A-2
Sentencias básicas en SQL para reportes
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
Variables
En SQL se pueden definir variables con la instrucción DECLARE.
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
Variables
Para asignar valores a las variables en SQL se utiliza la instrucción SET.
Sintaxis:
SET @nombre_variable
=
'valor';
Ejemplos:
SET @lIdMoneda
SELECT * FROM
=
'1';
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
Página
A-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Sentencias básicas, Continuación
SELECT campo
FROM
La siguiente consulta extrae solo los campos especificados de las tablas.
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
=
<>
>
<
>=
<=
BETWEEN
LIKE
IN
AND
OR
Descripción
Igual
Diferente
Mayor que
Menor que
Mayor o igual que
Menor o igual que
Entre un rango
Busca un patrón
Para especificar múltiples valores en un campo
Operador lógico Y. Permite agregar más de una condición y todas de
deberán cumplir para desplegar el registro.
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.
Derechos Reservados®
Página
A-4
Sentencias básicas en SQL para reportes
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
ASC
La siguiente consulta extrae el primer registro de la tabla Documentos.
Ejemplo:
SELECT top 1 * FROM admDocumentos ORDER BY CFOLIO ASC
SELECT TOP 1
DESC
La siguiente consulta extrae el último registro de la tabla Documentos.
Ejemplo:
SELECT top 1 * FROM admDocumentos ORDER BY CFOLIO DESC
Continúa en la siguiente página
Sentencias básicas en SQL para reportes
Página
A-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Sentencias básicas, Continuación
Sentencias
de cálculo
Estas sentencias se utilizan para realizar cálculos sobre datos. Las más comunes son:
•
•
•
•
•
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
SUM()
La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la
tabla Documentos.
Ejemplo:
SELECT CIDCLIENTEPROVEEDOR, SUM(CTOTAL) AS VENTAS_X_CTE FROM
admDocumentos GROUP BY CIDCLIENTEPROVEEDOR
HAVING vs.
WHERE
Ambas instrucciones requieren de una condición y puede resultar confuso saber cuándo
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.
Derechos Reservados®
Página
A-6
Sentencias básicas en SQL para reportes
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
INNER JOIN
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.
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
Página
A-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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.
Derechos Reservados®
Página
A-8
Sentencias básicas en SQL para reportes
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á:
•
•
En este apéndice
Las diferencias entre el Reporteador de AdminPAQ y el Reporteador de
CONTPAQ i® COMERCIAL.
Los conocimientos para actualizar reportes a CONTPAQ i® COMERCIAL.
Este apéndice contiene los siguientes temas:
Tema
VISIÓN GENERAL
CAMBIO DE INSTRUCCIONES EN CONTPAQ i®
EJEMPLO. ACTUALIZACIÓN DE UN REPORTE
Actualización de reportes de AdminPAQ
Página
B-1
Página
B-1
B-2
B-4
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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:
•
•
•
•
•
•
•
Diferencias
Las diferencias entre los reporteadores son:
•
•
•
Instrucciones de
entrada
Definición de columnas
Instrucciones de Formato
Impresión de datos
Ciclos
Condiciones
Funciones
Variables
Las instrucciones de entrada (para crear filtros).
La forma de acceso a las tablas de la empresa.
Las instrucciones de salida a Excel®.
Para hacer filtros, en AdminPAQ se utilizaban las instrucciones PARÁMETRO y ACEPTA
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.
•
•
Conexión a la
BDD
AdminPAQ
PARAMETRO
ACEPTA
•
•
•
CONTPAQ i® COMERCIAL
PARAMETROS
CONTROL
DEPENDENCIA
Las instrucciones para la conexión a la Base de Datos cambian y son las que se muestran en
la siguiente tabla.
Para más información consulta el Capítulo 4. Acceso a las Bases de Datos.
•
•
Nombres de
tablas y campos
AdminPAQ
UsaEmpresa
UsaTabla
•
•
CONTPAQ i® COMERCIAL
CONEXION
CONSULTA
Los nombres de las tablas y los campos cambiaron, por lo que habrá que actualizarlos.
Continúa en la siguiente página
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Página
B-2
Actualización de reportes de AdminPAQ
Cambio de instrucciones en CONTPAQ i®, Continuación
Tabla
comparativa
Las principales ventajas del Reporteador de CONTPAQ i son que:
•
•
•
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
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
Reporteador programable
•
•
•
•
•
•
•
•
Reporteador CONTPAQ i
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Página
B-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
// Fecha: 25/06/2013
La conexión a la BDD SÍ cambia por
la instrucción Conexion
// Conexión a la Base de Datos
UsaEmpresa tEmpresa;'AdminPAQw'
// Filtros
Acepta 'Ventas';'Captura la fecha inicial'; pFechaInicial
Acepta 'Ventas';' Captura la fecha final'; pFechaFinal
// Definición de columnas del reporte
Columnas 2;3,3
// Títulos del reporte
Texto '^VENTAS POR FECHA'
Imprime
En la definición de filtros
las instrucciones Acepta
se cambiarán por
Parametros
La definición de
columnas NO cambia
Los definición de títulos
del reporte NO cambia
Texto C0;'^FOLIO'
Texto C1;'^TOTAL'
Imprime
La Búsqueda
cambia por una
consulta de
SQL
// Se crea la consulta
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.
Derechos Reservados®
Página
B-4
Actualización de reportes de AdminPAQ
Ejemplo. Actualización de un reporte, Continuación
Reporte en
CONTPAQ i®
COMERCIAL
La conexión a
la BDD SÍ
cambia por la
instrucción
Conexion
// Descripción: Reporte de ventas por fecha
// Elaboró: Marco Muñoz
// Fecha: 25/06/2013
// Conexión a la Base de Datos
gServidor
= '//localhost/adROJA'
gInstancia = 'COMPAC'
gUsuarioSQL = 'sa'
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
filtros las
instrucciones
Acepta se
cambiarán por
Parametros
Parametro pFechaInicial = '20000101' Captura
Titulo 'Fec&ha inicial'
Ayuda
'Selecciona la fecha inicial de los documentos'
Control CtrlFecha
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
Columnas 2;3,3
La definición de
columnas NO
cambia
Continúa en la siguiente página
Actualización de reportes de AdminPAQ
Página
B-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Ejemplo. Actualización de un reporte, Continuación
Reporte en
CONTPAQ i®
COMERCIAL
(Continúa)
// Título del reporte
Texto '^VENTAS POR FECHA'
Imprime
Los títulos del reporte
NO cambian
Texto C0;'^FOLIO'
Texto C1;'^TOTAL'
Imprime
La Búsqueda
cambia por una
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.
Derechos Reservados®
Página
B-6
Actualización de reportes de AdminPAQ
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:
•
•
•
•
•
En este apéndice
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
Este apéndice contiene los siguientes temas:
Tema
VISIÓN GENERAL
REPORTES EN EXCEL®
REPORTES SENSIBLES
REPORTES EN CONTPAQ I® NÓMINAS
Casos especiales
Página
C-1
Página
C-1
C-2
C-7
C-12
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Reportes en Excel®
Reportes en
Excel
Es posible crear reportes con salida directa a Excel® utilizando VBA (Visual Basic for
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
OLE
Para crear un reporte en Excel, es necesario utilizar una serie de instrucciones básicas para
crear un libro de Excel. Para el resto de las instrucciones es necesario conocer VBA.
Crear un objeto
OLE
Para crear un objeto OLE se utiliza la instrucción ObjetoOLE y se puede hacer de dos
formas.
//Ejemplo 1:
ObjetoOLE excel = ObjetoOLE.crear('Excel.Application')
Ejemplo 2:
ObjetoOLE excel
excel = ObjetoOLE.crear('Excel.Application')
Métodos y
propiedades
Una vez creado el objeto se podrán utilizar sus métodos y asignarle valores a sus
propiedades:
// Ejemplos
excel.visible=true
ws.Range('A1').Value='Hola mundo'
Constantes
especiales
Existen 3 constantes especiales para el llamado de métodos OLE:
Constante
ObjetoOLE.nulo
ObjetoOLE.vacio
ObjetoOLE.ausente
Descripción
Representa un valor nulo
Representa un valor vacío
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.
Derechos Reservados®
Página
C-2
Casos especiales
Reportes en Excel®, Continuación
Crear un libro
nuevo
El siguiente código crea un libro de Excel y manda el mensaje ‘Hola mundo’ en la celda A1.
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
existente
El siguiente código abre un libro de Excel 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
Excel
El siguiente código muestra cómo se ordenan datos en Excel, además se hace uso de la
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
macro
El siguiente código ejecuta una macro llamada AplicarFormatoColumnas.
// 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
Página
C-3
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Reportes en Excel®, Continuación
Crear un gráfico
en Excel
El siguiente código crea un gráfico 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
encabezado
El siguiente código crea el encabezado de un reporte, con formato:
// 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.
Derechos Reservados®
Página
C-4
Casos especiales
Reportes en Excel®, Continuación
Creación del
encabezado
Continúa
// Establecer ancho de columnas
ws.Columns(1).ColumnWidth = 10
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
Página
C-5
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Reportes en Excel®, Continuación
Creación del
encabezado
// Avanza de renglon
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.
Derechos Reservados®
Página
C-6
Casos especiales
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
fFuncionSensible
aColumna
aParametros
parametro1,…,
parametroN
aParametros
CN
vStringParametros
Se refiere a
Nombre de la función que se ejecutará.
Número de columna sensible.
String con los argumentos de la función.
Parámetros a enviar al reporte destino.
Importante: Los parámetros deben ser exactamente los
mismos que se reciben en el reporte destino.
String fijo requerido por la función.
Define la columna sensible al contexto.
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
sensible
En el reporte fuente, se define la columna del “Folio” como area sensible al contexto, quiere
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
Página
C-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Reportes sensibles, Continuación
Ejemplo reporte
fuente
// Reporte Listado de pólizas "Sensibles_Polizas"
// 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.
Derechos Reservados®
Página
C-8
Casos especiales
Reportes sensibles, Continuación
Ejemplo reporte
fuente
// Se define la región sensible al contexto y la función que se ejecutará
// 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
Página
C-9
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Reportes sensibles, Continuación
Ejemplo reporte
destino
// Reporte de movimientos de póliza
// 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.
Derechos Reservados®
Página
C-10
Casos especiales
Reportes sensibles, Continuación
Ejemplo reporte
destino
// Se define la búsqueda en la tabla Movimientos
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
Página
C-11
Computación en Acción, S.A. de C.V.
Derechos Reservados®
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
Conexion
La instrucción Conexion establece una liga a las bases de datos.
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
tablas de la
empresa
La siguiente instrucción 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('NombreUsuario'),@parametroConsola(
'Clave'))
Nota: La instrucción @parametroConsola envía los parámetros necesarios para el String de
conexión.
Conexión a las
tablas generales
La siguiente instrucción establece una conexión a las 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
reportes
Para ejecutar el Editor de reportes de CONTPAQ i® NÓMINAS haga doble clic sobre el
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.
Derechos Reservados®
Página
C-12
Casos especiales
Descargar