
27/08/2003, 13:58
|
| | Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 2 meses Puntos: 2 | |
Hola... aqui va el codigo que arme para Imprimir algo asi como lo mas parecido a un reporte......
En resumen lo que hago es.... desde una pagina listo una tabla resultante de yna consulta de SQL. A esa tabla, el usuario la puede ordenar como quiera...... Cuendo el usuario presiona en el boton <Imprimir>; llamo una pagina que imprime, pasandole los datos de la consulta mediante URL Dinamica(querystring); como por ejemplo el orden de la tabla(para imprimir en el mismo orden)
#### PRIMERO LA PAGINA QUE IMPRIME #### (supongamos que se llama PRINT.asp)
Código:
<!--#include file="../../Templates/include/head.asp" -->
<% 'Abajo pongo el head.asp
'##############################################################
'## Consulta 2 - Nomina de Afiliados. Filtrado por Localidad y
'## por el Estado del Afiliado (="S")
'## Utilidad: 1) Mostrar nomina de Afiliados por Localidad
'##############################################################
server.ScriptTimeout = 1800
Dim mostrar 'cantidad de registros a mostrar por página
Dim cant_paginas 'cantidad de páginas que recibimos
Dim pagina_actual 'La página que mostramos
Dim registro_mostrado 'Contador utilizado para mostrar las páginas
Dim I 'Variable Loop
mostrar = 30 'Pueden modificar este número para cambiar la cantidad de registros por página
'En que pagina estoy...
'If Request.Querystring("page") = "" Then
' pagina_actual = 1
'Else
' pagina_actual = CInt(Request.Querystring("page"))
'End If
Dim strSQL, objRS, paso
paso = 1
'Traigo orden en que ordeno el usuario en la pagina anterior
order = Request.Querystring("order")
'Si no tiene orden, por default 1
If Len(order) = 0 Then order = 1
If paso = 1 Then
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT a.numero, a.nombre, a.documento, a.cuil, a.domicilio, a.telefono, a.codigo, d.localidad"
strSQL = strSQL & " FROM afili a INNER JOIN dat_post d ON a.codigo = d.codigo"
strSQL = strSQL & " WHERE a.codigo='" & Session("cp") & "' and a.numero <> -1 and a.numero <> -2 and a.estado= 'S'"
strSQL = strSQL & " ORDER BY " & order
objRS.PageSize = mostrar
objRS.CacheSize = mostrar
objRS.Open strSQL, OpenConnection, 3, 1
If Not objRS.EOF Then loc = objRS("localidad")
End If
%>
<html>
<head>
<title>Nómina de Afiliados de <%=request.querystring("loc")%></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" onLoad="MM_callJS('javascript:print()');MM_callJS('javascript:history.back(-1)')">
<div align="left">
<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<%
if paso=1 then
'contamos las páginas que se formaron con la variable mostrar.
cant_paginas = objRS.PageCount
' Si el pedido de página cae afuera del rango,
' lo modificamos para que caiga adentro
If pagina_actual > cant_paginas Then pagina_actual = cant_paginas
If pagina_actual < 1 Then pagina_actual = 1
' Si la cantidad de páginas da 0 es que no hay registros... por eso este IF
If cant_paginas = 0 Then
Response.Write "No hay Registros..."
Else
' Nos movemos a la página elegida
objRS.AbsolutePage = pagina_actual
' Mostramos el dato de que página estamos... %>
</font></p>
</div>
<% do while pagina_actual <= cant_paginas And Not objRS.EOF
registro_mostrado = 0 %>
<br>
<table width="96%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" align="center"> <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> </font>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><img src="../../images/inside_r8_c10.gif" width="323" height="67" align="top"></font></p>
<p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Nómina
de Afiliados de <%=request.querystring("loc")%></strong></font></p></td>
</tr>
</table>
<br>
<table border=1 width="624" cellpadding="0" cellspacing="0" align="center">
<tr>
<th width="51"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Numero</font></th>
<th width="190"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Nombre</font></th>
<th width="79"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Documento</font></th>
<th width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Cuil</font></th>
<th width="192"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Domicilio</font></th>
</tr>
<% registro_mostrado = 0
Do While registro_mostrado < mostrar And Not objRS.EOF %>
<tr>
<td width="51" height="9"> <div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<% =objRS("numero") %>
</font></div></td>
<td width="190" height="9"> <div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<% Trim2 objRS("nombre"), 24,24 %>
</font></div></td>
<td width="79" height="9"> <div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<% =objRS("documento") %>
</font></div></td>
<td width="100" height="9"> <div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<% WriteCuil(objRS("cuil")) %>
</font></div></td>
<td width="192" height="9"> <div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<% trim2 objRS("domicilio"), 24, 24 %>
</font></div></td>
</tr>
<% ' Sumamos 1 a los mostrados
registro_mostrado = registro_mostrado + 1
objRS.movenext
response.flush
loop %>
</table>
<table width="624" height="25" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="73%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nómina
de Afiliados de <%=request.querystring("loc")%> ordenado por <b>
<%
if order=1 then
response.write "Numero"
elseif order=2 then
response.write "Nombre"
elseif order=3 then
response.write "Documento"
elseif order=4 then
response.write "Cuil"
elseif order=5 then
response.write "Domicilio"
end if %>
</b></font></td>
<td width="27%"> <div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Página<b>
<%= pagina_actual %></b> de<b> <%= cant_paginas %></b></font></div></td>
</tr>
</table>
<% '########## Estos espacios crean el salto de pagina.
'########## pero dependen de la marca de la impresora.
'########## En mi caso es una impresora Epson 400.
response.write("<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>")
'########## (habia hecho el salto de pagina con javascript pero no hubo caso....!! No andaba!!... Si ustedes encuentran la solucion a este problema con JS haganmelo saber.. jijiji)
pagina_actual = pagina_actual + 1
Response.Flush()
loop %>
<br>
</body>
</html>
#### Head.asp ####
Código:
<% Response.Buffer = True %>
<%
'##############################################################
'## Funciones Publicas
'## Utilidad: 1) Manejo de Conexion
'##############################################################
'Conexion publica
Dim objConn
'Devuelve una conexion abierta con DSN
Function OpenConnection()
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DSN=sistemB;UID=SA;PWD="
Set OpenConnection = objConn
End Function
'Cierra la conexion, SI esta ABIERTA.
Sub CloseConnection()
If Not objConn Is Nothing Then
objConn.Close
Set objConn = Nothing
End If
End Sub
'Da formato al CUIL y lo escribe...
Sub WriteCuil(cuil)
If IsValid(cuil) Then
p1 = Left(CStr(cuil),2)
p2 = Right(CStr(cuil),9)
p3 = Left(p2,8)
p4 = Right(p2,1)
Response.Write p1 : Response.Write "-" : Response.Write p3 : Response.Write "/" : Response.Write p4
Else
Response.Write(" ")
End If
End Sub
Sub Trim2(str, i, r)
If Len(Trim(str)) >= i Then
Response.Write Left(str, r) & "..."
Else
Response.Write(str)
End If
End Sub
'Chequea si el CUIT pasado es VALIDO
Function IsValid(cuit)
If Not IsNull(cuit) And Len(cuit) > 1 Then
IsValid = True
Else
IsValid = False
End If
End Function
%>
Estudienlo!!! ... espero que sirva !
Cualquier cosa pregunten.! |