Clculos Es muy habitual que un informe no solo muestre datos de las tablas de la base de datos, sino que tambin muestre clculos realizados con esos datos. Para hacer esos clculos se puede usar la potencia de SQL por un lado. Podemos generar esos clculos directamente en la consulta SQL, con lo cual solo tendremos que mostrar los resultados en el informe como si fueran otros campos. Por otro lado tambin podemos realizar los clculos directamente en el informe. En esta hoa se !er como crear un informe con clculos. "dems se aprendern algunos conceptos nue!os en lo que se refiere a presentaci#n de datos y uso de las zonas del informe. EJERCICIO GUIADO N 1. CREACIN DE UN INFORME CON CLCULOS $. Entra en i%eport. &. 'amos a crear un informe desde cero donde aparezca el listado de ser!icios realizados. (nteresa en principio que aparezca la fecha del ser!icio el tipo del ser!icio y la cantidad cobrada. Para ello acti!e la opci#n Fichero Nuevo Documento. ). "signe el nombre informeservicios al informe. *. (ndique ahora que usar la cone+i#n con la base de datos ,"-E,PS". Para ello puede elegir la ./one+i#n con ,"-E,PS"0 en el desplegable de cone+iones, en la parte superior derecha de la !entana1 2. "hora que hemos elegido la cone+i#n, ahora indicaremos la consulta SQL que nos permita e+traer los datos que queremos mostrar en el informe. Para ello, acti!a la opci#n Datos Consulta de Informe. 3. En la pantalla que aparece debes introducir la siguiente consulta SQL1 select * from servicios order by fecha 4. "cepta la pantalla anterior. 5a podemos empezar a dise6ar el informe. Empezaremos por poner un t7tulo. El t7tulo ser .Listado de Ser!icios0. "grande la letra del t7tulo y cntrelo. 8. "hora a6adiremos los te+tos de la cabecera. En la zona de Encabezado de columna 9column:eader; a6adiremos los siguientes cuadros de te+to esttico1 <. "hora para definir los datos del listado, tendremos que a6adir campos a la zona del detalle 9detail;. =ebes arrastrar los campos fecha, tipo y cantidad1 $>. La zona del detalle es demasiado grande, as7 que reduzca su tama6o arrastrando la l7nea de separaci#n1 $$. 'isualice el listado. (%eport le pedir que guarde antes de !isualizar. ?uarde el listado con el nombre informeservicios en ,is =ocumentos. $&. El listado tendr la siguiente forma1 $). @bser!e como la fecha muestra tambin la hora. "ntes de continuar, cambiaremos el formato de la columna de la fecha para que esto no suceda. Para ello seleccione el campo Fecha1 "rrastra la l7nea del detalle. $*. 'amos a modificar una de las propiedades llamada Patrn. :az clic en el bot#n con tres puntos de esta propiedad1 $2. Esta propiedad permite cambiar la forma en que se presentan nAmeros, fechas y dems tipos de datos en el informe. Elige en la zona de categor7as la categor7a Date 9Becha; y luego escoge el patr#n con forma diaCmesCa6o1 "plica los cambios. $3. 'uel!e a !isualizar tu listado. "hora !ers como las fechas aparecen correctamente. %ecuerda esta propiedad, ya que la usars muchas !eces. Sobre todo con fechas y nAmeros. En el caso de los nAmeros, se puede usar para decidir algunas caracter7sticas como los d7gitos decimales o si mostrar el punto separador de miles. $4. 'amos a meorar el listado a6adiendo dos l7neas. Dna l7nea ustamente debao de la cabecera y otra en la parte del pie de columna 9columnFooter;1 $8. La l7nea de la cabecera separar esta de los datos. Por otro lado, la l7nea del pie de columna aparecer en la parte inferior del listado en todas las pginas. 'isualiza el listado1 $<. La zona del pie de pgina pageFooter es ideal para colocar en ella el nAmero de pgina del listado. 9Eenga en cuenta que el listado puede ser muy largo y tener !arias pginas; Lo que introduzca en la zona pageFooter aparecer en la parte inferior de cada pgina en todas las pginas del listado e+cepto en la Altima pgina. En el caso de la Altima pgina la zona que hace esta funci#n es la zona llamada lastPageFooter 9Altimo pie de pgina; Para que la zona pageFooter afecte a todas las pginas del informe incluyendo la Altima, es necesario ocultar la zona lastPageFooter. 'eamos como se hace esto1 &>. :aga clic con el bot#n derecho del rat#n sobre la zona lastPageFooter y elia Propiedades de banda.
&$. "parecer un cuadro de opciones donde se podr elegir el tama6o de la zona. En nuestro caso indicaremos un cero y aplicaremos. Luego cerraremos el cuadro de opciones. &&. Se podr obser!ar entonces como hemos ocultado la zona lastPageFooter. "l hacer esto, la zona pageFooter tendr control sobre todas las pginas incluyendo la Altima. &). "hora arrastra el elemento especial Pgina de ! desde la librer"a hasta el pie de pgina. @bser!a1 &*. La #ibrer"a contiene una serie de campos especiales que muestran cosas como el nAmero de la pgina o la fecha actual. Elementos que suelen ser muy comunes en los informes. &2. "pro!echa la #ibrer"a para agregar en la parte derecha del pie la fecha actual. "rrastra el elemento Fecha actual a la zona del pie. Entonces !ers como aparece un cuadro donde tendrs que elegir el formato de la fecha. Elige el formato completo. &3. El pie tiene que haber quedado ms o menos as71
&4. "hora !isualice el informe y obser!e la parte inferior 9si cambia el zoom al 2>F podr tener una !ista global del informe;1 'er que en la parte inferior aparece el nAmero de la pgina y la fecha en el formato indicado. &8. Supongamos ahora que nos interesa tener una columna ('" en la que aparezca el $3F de ('" de cada una de las cantidades. =esgraciadamente, este campo no e+iste en la tabla ser!icios, de la que hemos e+tra7do los datos. Sin embargo, es posible crear este campo directamente en la consulta SQL realizando el clculo. "cti!e la opci#n Datos Consulta del Informe para acceder a la consulta que introducimos al principio. &<. /ambie la consulta por la siguiente instrucci#n SELE/E 9respete mayAsculas y minAsculas;1 select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA from servicios order by fecha Esta consulta SELE/E muestra la Becha, Eipo y /antidad de los ser!icios, pero adems, !er que realiza un clculo1 multiplica el campo /antidad por >.$3 y le asigna al resultado del clculo el nombre ('". Es decir, se crea un nue!o campo 9campo calculado$ llamado ('" y creado a partir del producto del campo /antidad por >.$3 select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA from servicios order by fecha Los campos calculados es una caracter7stica del lenguae SQL que apro!echaremos para realizar clculos con los campos de las tablas. /lculo que se realiza -ombre del campo calculado )>. Pulse @G y obser!e la zona de campos. 'er como ha aparecido un nue!o campo llamado ('". Ean solo tiene que agregarlo a la zona de detalle como si fuera un campo ms. )$. Por supuesto, ser7a interesante a6adir un te+to esttico en el encabezado de columnas1 )&. 'isualice el informe resultante1 )). Para hacer otro eemplo de campos calculados, entre en la consulta del informe y modifique la instrucci#n SQL de forma que quede as71 select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA, IVACantidad as Total from servicios order by fecha En este caso, se est a6adiendo otro campo calculado 9en roo; llamado Eotal. Este campo es la suma del ('" y la /antidad. Es decir, es el total con (!a. )*. "l pulsar @G obser!ar en la zona de campos este nue!o campo. "pro!eche esto para agregar una nue!a columna con los totales con i!a1 )2. 'isualice el informe. =ebe tener este aspecto1 )3. :emos aprendido a agregar campos calculados a partir de otros campos, y a6adirlos al listado. "hora aprenderemos a realizar clculos de totales, o clculos resumen. Por eemplo, ser7a interesante calcular la suma de todas las cantidades, todos los ('" y todos los totales ms ('". Estos totales suelen aparecer en la parte final del listado. En la zona llamada %esumen &summar'$ )4. Empezaremos agregando en la zona summar' una l7nea corta1 )8. Para agregar un total 9una suma; se usa el elemento (otal de la #ibrer"a. :aga clic en l y arrstrelo a la zona del resumen. )<. "parecer un cuadro de dilogo donde tendr que indicar el campo que quiere sumar. Elia el campo Cantidad y acepte. *>. "parecer un nue!o recuadro en el resumen. /ol#quelo al mismo ni!el que la columna de la cantidad. *$. :aga el mismo proceso para calcular la suma del ('" y del Eotal. "l final, el dise6o de la zona resumen debe tener el siguiente aspecto1 *&. Los elementos situados en la zona del resumen aparecen al final del listado. 'isualice el informe y obser!e la parte final del listado. *). El informe est terminado. ?urdelo y cirrelo. CONCLUSIN SQL !"#$%! l& c"!&c$'( )! c&#os c&lcul&)os & &"%$" )! o%"os c&#os !( u(& co(sul%& SELECT. Es%& c&"&c%!"*s%$c& !s #u+ ,%$l o" !-!#lo !( !l c&so )! los $(.o"#!s/ +& 0u! (os !"#$%! #os%"&" clculos !( !llos. $R!o"%/ &)!#s/ "oo"c$o(& l& os$1$l$)&) )! "!&l$2&" su#&s %o%&l!s )! c&#os. R!cu!")! %$3( !l uso )! l&s )$s%$(%&s 2o(&s )!l $(.o"#!4 - Title Ttulo4 Us&)o &"& coloc&" !l %*%ulo )!l $(.o"#!. A&"!c! !( l& "$#!"& 5$(& ,($c&#!(%!. - pageHeader 6 Encabezado de pgina4 E( !l s! coloc& &0u!llo 0u! )!1& &&"!c!" !( l& &"%! su!"$o" )! %o)&s l&s 5$(&s. - columnHeader 6 Encabezado de columna4 Us&)o &"& coloc&" l& c&1!c!"& )!l l$s%&)o. - Detail 6 Detalle4 Us&)o &"& coloc&" los )&%os 7c&#os8 - columnFooter Pie de Columna4 E( !l s! coloc& &0u!llo 0u! )!1& &&"!c!" !( l& &"%! $(.!"$o" )!l l$s%&)o !( %o)&s l&s 5$(&s. - pageFooter 6 Pie de pgina: E( !s%& 2o(& s! coloc& &0u!llo 0u! )!1& &&"!c!" !( l& &"%! $(.!"$o" )! %o)&s l&s 5$(&s 7#!(os l& ,l%$#&/ s$ !s% &c%$9&)o !l lastPageFooter8 S! us& &"& coloc&" !l (,#!"o )! 5$(&. - lastPageFooter 6 Ultimo pie de pgina: Es !l $! )! 5$(& )! l& ,l%$#& 5$(&. S$ s! )!s&c%$9&/ !(%o(c!s !s sus%$%u$)o o" !l pageFooter. - Summar 6 !esumen: Us&)o &"& coloc&" clculos )! %o%&l!s. A&"!c! &l .$(&l )!l l$s%&)o.