Este mecanismo se usa cuando se requieren listar varios registros almacenados en N2C, en un reporte de tipo especial, que no pueda ser hecho con el “Report writer” estándar de N2C. Aplica también cuando se requieren datos de distintas tablas.
El programa solicitante indica a través de campos de forma, como se explica abajo, qué registros se desean listar y este programa muestra en pantalla el reporte especial construido. Este reporte tiene el Look & Feel de N2C, sin embargo permite adaptar los colores mediante parámetros. Si se desea algo completamente distinto, se debe utilizar el mecanismo 3 y construir el reporte correspondiente, sin embargo se tendrán que programar manualmente varios aspectos tales como el ordenamiento de campos, el conteo de registros, los enlaces y las autorizaciones de acceso.
Este programa verifica que el usuario haya hecho login al sistema y que tiene acceso a todas las tablas que se están utilizando en el reporte.
Nota importante:
A partir de la versión 4.0, el programa de manejor de reportes de Net2Client
tiene un botón de "Mostrar", en "Parámetros Avanzados",
en la parte de abajo, después de los campos de ordenamiento. Cuando se
utiliza esta facilidad, hay un botón de "Generar HTML" que
genera la mayoría de las instrucciones de HTML necesarias para ejecutar
este programa. Se recomienda su utilización, como una forma rápida
de generar nuevos reportes.
PARÁMETROS PRINCIPALES |
|
| Nombre | Uso |
| BD | La base de datos que se está utilizando |
| COKCodigo | El código del Cokie (">Ver anexo V) |
| TablasAListar | La lista de tablas que deben ser leídas, separadas por comas |
| CamposAListar | La lista de campos que se deben listar, separados por comas. Usar los nombres internos (Ej. PERNombre,AR1Linea3...) Opciones adicionales:
Nota: El perfil del usuario debe tener autorizada la modificación o eliminación de registros para la tabla correspondiente. |
| Condiciones | Las condiciones que se deben cumplir para listar registros. En caso de haber varias tablas a las cuales se les está haciendo un "join", deben aparecer aquí esas condiciones. Se debe usar la sintaxis de MySql, por ejemplo usando los "AND" y los "OR" que sean necesarios |
| Ordenamiento | El Orden que se requiere en el reporte (Sort). Si se desea que un campo sea utilizado como ruptura de control (agrupación), poner un asterisco delante. |
| Titulo | Título del reporte. Si no se incluye, el reporte sera desplegado sin barra de titulo. |
| CantAListar | La cantidad de registros a listar por página. Si se omite, se usa el valor por defecto de la aplicación (que viene en la tabla de parámetros) |
| CantExacAListar | La cantidad Exacta de registros a listar.Cuando este parámetro es utilizado, se ignora CantAListar y se utiliza este valor. Igualmente, no se incluyen las facilidades para pdf ni para bajar los datos a Excel. |
| RegistrosALeer |
Si se desean leer unos registros específicos, escriba los números de dichos registros separados por comas. Estos registros corresponden al código de registro en la primera tabla que aparezca en el parámetro "TablasAListar". Si se usa este registro se ignora el parámetro "Condiciones". |
| CamposALeer |
Los campos que normalmente aparecen en el SELECT son construidos directamente a partir de los CamposAListar. Este parámetro permite que no se tomen esos campos, sino los indicados por el usuario. Este es un parámetro delicado ya que listarsup muchas veces añade campos requeridos por alguna condición de seguridad y si no se añaden aquí, se puede producir un error. |
| VerConExtendido |
si el valor es SI y la persona tiene autorización para ver vistas extendidas, se invoca la vista extendida (verextendido.php) en vez de ver, cuando el usuario hace clic sobre el número del registro |
RUPTURAS DE CONTROL |
|
| Totales | Campos para los cuales se desea dar totales, separados por comas. Los campos deben ser numéricos (Tipo Cantidad o Monto). Los campos mencionados aquí, deben estar entre los “CamposAListar”. |
| Promedios |
Forma Abreviada: Indique A si desea totales con promedios, B promedios sin totales o deje en blanco si desea sólo los totales: Forma detallada: Escriba 3 dígitos con posibles valores 0 y 1. 0 Indica no usar, 1 indica usar. La primera posición se refiere a los totales, la segunda a la cantidad de registros y la tercera a los promedios. Por ejemplo, 011 significa que no se desean totales, pero si cantidad de registros y promedios. |
| SoloTotales | Escribir "SI", si se desea que solo aparezcan las líneas de Total. Debe usarse en conjunto con los campos que tienen un asterisco en el parámetro Ordenamiento. |
OPCIONES A INCLUIR |
|
| Imagen | Escribir "SI", si se desea que las imágenes sean mostradas, con cualquier otro valor, aparece un enlace con la palabra "Ver" |
| Calculadora | Escribir "NO" si se desea que se omita la calculadora para saber cuantos registros existen. |
| IndicacionOrden |
Escribir "SI" si desea que se indique el ordenamiento que tiene el reporte (Ej: Ciudad (Ascendente), Edad (Descendente)) y que se muestra debajo del título |
| Tope |
Escribir "SI" si quiere que aparezcan en el tope del reporte, los iconos para obtener copia en excel, en pdf o para preparar cartas. Estos aparecerán siempre y cuando hayan más de 10 registros o no se hayan solicitado al Pie |
| SaltoRapido |
Escribir "SI" si quiere que aparezca, después de la indicación de cuales fueron los registros leídos, unas cajas para ir directamente a un registro y para cambiar la cantidad de registros mostrados por página. |
| Pie | Escribir "NO" si se desea que se omita el panel de opciones para impresión a carta, pdf o excel al final del reporte. |
| Encabezados | Escribir "NO" si se desean omitir los encabezados |
INCLUSIÓN PHP |
|
| InitPHP | Programa de PHP a ser incluido al principio del programa (después del include de PHPCuerpo). Debe estar incluido en el directorio de programas. |
| MidPHP | Programa de PHP a ser incluido justo después de la lectura del registro, después de haber llenado la variable $row con los datos del registro, antes de escribir el registro. Es ejecutado una vez por cada línea del reporte. Debe estar incluido en el directorio de programas. |
| EndPHP | Programa de PHP a ser incluido al final del programa (después del include de PHPCuerpo). Debe estar incluido en el directorio de programas. |
COMO APARECE EL LISTADO |
|
| AjustarFrame | Escribir SI en éste parámetro si desea que el reporte sepa que se está desplegando dentro de un frame interno (iframe) y ajuste la altura del mismo para que pueda desplegar todo el reporte sin utilizar scrollbars ni dejar espacio vacio. |
| Ancho | Especifique el número exacto de pixeles que desea que tenga como ancho la página del reporte. Si se omite este parámetro el ancho de la página será libre y dependerá de la cantidad de conetenido desplegado y de los estilos utilizados. |
| Borde | Utilice este parámetro si desea que la pagina de reporte se despliegue dentro de un borde. Su valor sera interpretado como el número exacto de grosor en pixeles de dicho borde. |
PRESENTACIÓN DEL LISTADO |
|
| HojaEstilos |
Es la hoja de estilos que se desea incluir en el reporte. Debe estar almacenada en el directorio de estilos |
| Esquema |
Número del esquema de colores definido en net2client (ver). Al usuar este parámetro, no hace falta usar ninguno de los 6 parámetros siguientes. |
| Fondo | Cuando NO se usa el parámetro "esquema", color del fondo del título. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| FondoTabla | Cuando NO se usa el parámetro "esquema", color del fondo de la tabla (Marco) . Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| Letras | Cuando NO se usa el parámetro "esquema", color de las letras del título. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| LetrasTabla | Cuando NO se usa el parámetro "esquema", color de las letras de la tabla. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| LetrasRuptura | Cuando NO se usa el parámetro "esquema", color de las letras de la ruptura de control. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| FondoLinea | Cuando NO se usa el parámetro "esquema", color del fondo de las líneas intercaladas. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*) |
| ImagenFlechaAbajo |
URL que reemplaza a la imagen (ordenamiento
ascendente). A veces se requiere modificar cuando se desea un fondo oscuro. Puede usarse ruta relativa desde listarsup. |
| ImagenFlechaArriba |
URL que reemplaza a la imagen (ordenamiento
ascendente). A veces se requiere modificar cuando se desea un fondo oscuro. Puede usarse ruta relativa desde listarsup. |
| ParamSelect |
Parámetros del SELECT que se desean justo después de la cláusula SELECT. Típicamente se usa para el DISTINCT |
| MantenerRetorno |
Escribir "SI" para no alterar el retorno que se tenía previo a la invocación del programa. Este es usado, cuando se invoca listarsup al seleccionar un campo tipo enlace (ex-lupa) |
BOTONES DE ACCIÓN |
|
| ActionBoxType |
Indica que se quiere una columna de acción a la izquierda, delante de todos los campos.
Se debe indicar el tipo de elemento deseado:
|
| ActionBoxProgram |
Es el programa a ser invocado cuando el usuario marca un botón de radio (ActionBoxType=radio)
o cuando el botón de ActionBoxName es utilizado.
|
| ActionBoxName |
Es el texto que se desea que aparezca el botón de acción que se encuentra arriba de la columna de
acción. Ej: Seleccionar. Cuando se trata de una eliminación (ActionBoxProgram=DELETE) se debe omitir\
este parámetro ya que es ignorado.
Nota: El identificador de este botón es botonaccion. |
| ActionBoxColor |
Configuración hexadecimal (Ej. #FFEEFF) del color que se quiere que tome la columna de un registro marcado cuando una caja tipo checkbox es marcada. Si se omite este parámetro, se toma el color de la tabla. Si no se desea cambio de color escribir:NO |
| ActionField |
No usar cuando se está listando una sola tabla. Si hay más de una tabla, indicar el nombre interno del campo que se desea recibir cuando el usuario selecciona un registro. Por ejemplo, si se están listando las tablas PER y AR1, este campo debería ser PERCodigo o AR1Codigo |
CONTROL DE CAMPOS |
|
NombreXXX
|
Encabezado para el campo XXX. Hasta la versión 4.6A, XXX solo podía ser CALnn (Ej: NombreCAL01). A partir de esta versión, XXX puede ser un campo de datos, como PERTel1 o AR1Linea3. En el caso de ser un campo de datos, utiliza lo que se indique aquí, en vez de tomar el nombre del campo. Esto permite sobreescribir el nombre estándar. |
| EvaluarCALXX |
Si tiene el valor "SI", evalúa la expresión especificada en la variable CALXX. Es indispensable cuando se quiere que la variable CAL sea el resultado de una operación aritmética |
| EvaluarVarCALXX | Prepara a Listarsup para que interprete campos calculados dentro de indices de arreglos. Ejemplo: $MM[LOG_[[LOGOper]]] |
| PalabrasMax |
Indique la cantidad máxima de palabras que desean que aparezcan cuando se lista un campo tipo bloque. Las demás serán mostradas cuando el usuario pinche la palabra Más... |
| FormatXXX |
Escribir "NO" para que no se haga el formateo automático del campo XXX. Ejp: FormatCAL02 o FormatPERMonto1 |
CONTROL DEL CONTENIDO DEL LISTADO |
|
| IrExtendido | Si tiene el valor SI, cuando se consiga un solo registro, si existe una vista extendida, se va a la misma directamente |
| MensajeSiNoHay | Mensaje que debe aperecer si no se consigue ningún registro. Si se escribe NO, no parece ningún mensaje, si se omite este parámetro, se escribe el mensaje estándar de Net2Client. |
| TextoListar | Texto que aparece después de listar los registros de una página en el programa listarsup.php |
| Retorno | Si se tiene el valor “NO”, en vez de poner un botón de retorno, pone un botón de cerrar ventana; Si tiene el valor “X” no pone nada (y omite el "powered by Net2Client ) . Si tiene el valor “-2” pone un botón de retorno que regresa dos pantallas atrás |
| BotonANombre BotonBNombre BotonCNombre |
Texto que debe aparecer en el Botón X que se muestra al terminar de listar los registros de una página, después de TextoListar y antes del botón de Regresar |
| BotonADireccion BotonBDireccion BotonCDireccion |
Dirección completa (www…) a donde ir cuando el usuario pulsa el botón X |
VersupA |
Indica que la invocación (en el boton X) debe ser hecha a través del programa versup |
AYUDA PARA EL DEBUGGING |
|
| ECHO | Poner con la palabra ECHO si se desea que aparezca la instrucción MySQL de lectura generada. EJ: <input type=hidden name='ECHO' value='ECHO'> |
(*) Ver la tabla de colores en el Anexo A
LIMITACIÓN: Cuando hay campos modificables, no se puede hacer el envio
de emails.
Normalmente, cuando se pone un código (ej. PERCodigo), el programa muestra
el número y el icono de Edición. Si se desea que aparezca un enlace
a la vista extendida, escribir el nombre interno de la tabla, seguido del texto
“VerExtendido”, ejemplo: PER VerExtendido.
El programa invocado ya tiene disponible dos formas de estilos (CSS), muy similares a la de Net2Client. Cuando el usuario pide imprimir una pantalla, no se van a imprimir los campos de imagen (para que no aparezcan los iconos de ayuda, impresión, etc) a menos que tengan la clase “dp”, de la forma siguiente:
<img class=dp border=0 href=…>
Los campos calculados permiten poner una columna con unos valore específicos, obtenidos de otras columnas. Típicamente son utilizados para poner enlaces o hacer operaciones.
Para utilizar los campos Calculados, en CamposAListar se escribe la variable: CALxx (xx:dos dígitos), y en las variables hidden se debe escribir como en este ejemplo:
<input type='hidden' name='CALxx'
value=\"<a href='versup.php?$COKO"."pedido.htm,[[EVECodigo]]'
target='_parent'>Editar</a>\">
u, alternativamente, a partir la versión 4.4:
<input type='hidden' name='CALxx'
value=\"<a href='versup.php?[[COKO]]pedido.htm,[[EVECodigo]]' target='_parent'>Editar</a>\">
Observaciones
Es posible controlar la apariencia del reporte, utilizando hojas de estilos (parámetro HojaEstilos), y las clases que son incluidas automáticamente en los reportes. En el gráfico siguiente, se muestran algunas de las clases utilizadas en las filas (ROW CLASSES), en las columnas (COLUMN CLASSES, en donde las clases de las columnas corresponden a los nombres internos de los campos impresos ) y en los textos de las líneas de totales.

Es importante mencionar que en este ejemplo lo que se tienen son líneas de totales. Si fueran lineas de conteo de registros, o de promedios, las clases serían las siguientes:
| TotalRow | QuantityRow | AverageRow |
| FinalTotalRow | FinalQuantityRow | FinalAverageRow |
| TotalTextn | QuantityTextn | AverageTextn |
Veamos una aplicación con estas tablas:
Se quiere escribir un programa que muestre un reporte de todos los contactos con la información siguiente:
El reporte debe venir ordenado por nombre de empleado, en forma ascendente.
Como puede observarse, se están requiriendo campos de distintas tablas. Como el programa listarsup.php requiere los nombres internos, lo primero que debe hacer el asesor es buscar los nombres de esos campos. Esto se hace en el módulo de “setup” (http:www.net2client.com/sis/setup/administración.htm) en la opción de “Lista de Campos”.
<html> <body> <form name="invocar" method="POST" action="http://www.net2client.com/<? echo"$COKDirectorio"; ?>/listarsup.php"> <input type='hidden' name='BD' value='00'>
<? echo "<input type='hidden' name='COKCodigo' value='$COKCodigo'>"; ?>
<input type='hidden' name='CamposAListar' value='AR1Nombre,PERNombre,PEREmail1,PERTel1,AGENombre'> <input type='hidden' name='TablasAListar' value='701PER,701AR3,701AGE'> <input type='hidden' name='Condiciones' value="(AR1Codigo=PEREnlace1) AND (AGECodigo=PERCodAgente)"> <input type='hidden' name='Ordenamiento' value='AR1Nombre'> <input type='hidden' name='Titulo' value='CONTACTOS POR EMPRESA'> <input type='hidden' name='Fondo' value='#00CC99'> <input type='hidden' name='Letras' value='white'> <input type='hidden' name='FondoTabla' value='#D5FFEA'> </form> <script language="JavaScript"> document.invocar.submit(); </script> </body> </html>
Enlaces en el mismo capítulo:
Enlaces otros capítulos: