Foros del Web » Programando para Internet » ASPX (.net) »

Crear Reporte Dinamico con Tablas apartir de BD

Estas en el tema de Crear Reporte Dinamico con Tablas apartir de BD en el foro de ASPX (.net) en Foros del Web. Hola Amigos del Foro tengo una duda a con respecto a como hacer un reporte y espero me puedan ayudar, basicamente lo que quiero hacer ...
  #1 (permalink)  
Antiguo 20/06/2011, 23:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta Crear Reporte Dinamico con Tablas apartir de BD

Hola Amigos del Foro tengo una duda a con respecto a como hacer un reporte y espero me puedan ayudar, basicamente lo que quiero hacer es plasmar un excel que me dieron en un reporte en asp.net.

Comenzare Explicandoles cual es mi dificultad para hacer el proyecto, tengo una tabla de proveedores donde se calculara, subtotales y muchas varias operaciones simples pero en este caso voy a resumir lo que quiero en una tabla simple.

Este seria el codigo;

Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>TABLAS - REPORTE DINAMICOS </title>
    <style type="text/css">
        .style1
        {
            width: 91%;
        }
       
        .style2
        {
            width: 231px;
        }
        .style3
        {
            width: 274px;
        }
       
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <table class="style1">
            <tr>
                <td colspan="3">
                    PRUEBA - DEMO TABLAS PREDIFINIDAS</td>
            </tr>
            <tr>
                <td class="style2">
                    PROVEEDOR</td>
                <td class="style3">
                    &nbsp;</td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td class="style2">
                    DATO 1</td>
                <td class="style3">
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    DATO 2</td>
                <td class="style3">
                    <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    SUB-TOTAL</td>
                <td class="style3">
                    <asp:Label ID="lblsub1" runat="server"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblsub2" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    TOTAL</td>
                <td class="style3">
                    <asp:Label ID="lbltotal1" runat="server"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lbltotal2" runat="server"></asp:Label>
                </td>
            </tr>
        </table>
        
    
    </div>
    </form>
</body>
</html>
Esta sera una tabla que calculara el total por Meses y en ese mes puede haber varios PROVEEDORES, ENTONCES TENDRIA Q CREAR UNA TABLA POR PROVEEDOR, Y LUEGO EL LBLTOTAL SUMAR LOS SUBTOTALES de cada proveedor, no tengo muy clara la idea de como hacer me han dicho q lo haga con el repeater pero EL PROBLEMA ES que los label no se pueden capturar, si me podrian dar la idea se los agradeceria en grande

gracias

  #2 (permalink)  
Antiguo 22/06/2011, 03:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Cita:
Iniciado por moz90 Ver Mensaje
los label no se pueden capturar
Si se puede.
El Repeater tiene su evento más importante, que sería ItemDataBound.
Ese evento se da una vez por cada fila del DataSource.
Busca información sobre ese evento para ver cómo se trabaja.
Pero, básicamente, para referenciar un control del repeater desde ese evento, tendrás que hacer uso de:

Código VB.NET:
Ver original
  1. Dim miLabel As Label = e.Item.FindControl("miLabel")

De esta forma podrías asignar el valor que quieras a este label, en cada iteración.

Código VB.NET:
Ver original
  1. miLabel.Text = "Precio " & e.Item.DataItem("Precio").ToString

Pero volviendo a lo que te interesa, a parte de darle un valor al label en cada iteración, también podrías, por ejemplo, ir sumando en una variable (declarada a nivel de formulario, o una variable global, etc...) esos subtotales que necesitas, para obtener, al final, la suma de SubTotales y poder utilizarla como más te convenga.
Por ejemplo:

Código VB.NET:
Ver original
  1. miVariableGlobal += Ctype(e.Item.DataItem("Precio"), Decimal)

Espero haberte sido de ayuda.
Un saludo.
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 23/06/2011, 10:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

gracias por la rpta, voy a intentar hacer lo que me dijiste y te consulto cualquier cosa.
gracias !!!!
  #4 (permalink)  
Antiguo 28/06/2011, 09:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

hola moNTeZIon gracias por tu aporte estuve haciendo lo que publicaste, acabo de hacer las pruebas con una tablita antes de meterme de lleno a la verdadera tabla que es mas grande, ahora mi problemas es en la ultima parte en el Total para sumar los Subtotales por cada iteracción del repeater, me da el siguiente error:

label5 es el total


Código HTML:
Dim lblsub1 As Label = e.Item.FindControl("lblsub1")
lblsub1.Text = CDbl(label1.Text) + CDbl(label2.Text)

Dim lblsub2 As Label = e.Item.FindControl("lblsub2")
lblsub2.Text = CDbl(label3.Text) + CDbl(label4.Text)

Dim label5 As Label = e.Item.FindControl("label5")
label5.Text += CType(lblsub1.Text, Decimal)
Me sale este error


Referencia a objeto no establecida como instancia de un objeto.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
  #5 (permalink)  
Antiguo 29/06/2011, 01:44
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Primero sería interesante saber cuál de esas lineas te da el error que comerntas.
Y segundo, a priori, veo que estás referenciando al Label de los Totales de la misma forma que lo haces para el resto. Esto me hace sospechar que el Label de los Totales lo tienes ubicado dentro del Repeater, cosa que no tendría mucha lógica.
Dentro del Repeater van los elementos que van a representar a cada línea, así como los cálculos. Pero los totales deberían ir fuera, o si me apuras en el Footer del Repeater.
Ya nos cuentas.
Saludos.
__________________
..:: moNTeZIon ::..
  #6 (permalink)  
Antiguo 29/06/2011, 20:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Cita:
Iniciado por moNTeZIon Ver Mensaje
Primero sería interesante saber cuál de esas lineas te da el error que comerntas.
Y segundo, a priori, veo que estás referenciando al Label de los Totales de la misma forma que lo haces para el resto. Esto me hace sospechar que el Label de los Totales lo tienes ubicado dentro del Repeater, cosa que no tendría mucha lógica.
Dentro del Repeater van los elementos que van a representar a cada línea, así como los cálculos. Pero los totales deberían ir fuera, o si me apuras en el Footer del Repeater.
Ya nos cuentas.
Saludos.
Hola si disculpa el error que me marca es aqui(es el label del total):

Código HTML:
label5.Text += CType(lblsub1.Text, Decima)l
si los labels de los totales estan en el mismo repeater, ya que necesito mostrar los totales tambien, y este total lo puse en el repeater como dices, a ver si me hechas una mano creo q es un problema con el formato o tipo de dato.
  #7 (permalink)  
Antiguo 30/06/2011, 02:31
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Bien, por lo que comentas, entiendo que ese Total al que te refieres es un Total de Linea, y por este motivo está dentro del repeater.
En un primer momento creí que te referías a un total de todas las líneas. O sea, una vez procesadas todas las líneas, mostrar la suma total.
Pero volviendo a tu ejemplo, entiendo que quieres mostrar, para cada línea del repeater, un "Total de Linea". Entonces si, el label debe estar dentro del repeater como el resto.
Una vez aclarado esto, el "NullReferenceException" te lo da porqué haces:

label5.Text += CType(lblsub1.Text, Decimal)

Creo que no estás haciendo lo que realmente quieres. La primera vez que entra en la línea, qué se supone que hay en label5.Text? Nada.
Por lo tanto no puedes sumar: Nada + CType(lblsub1.Text, Decimal)

En todo caso deberías hacer algo así:

label5.Text = CType(lblsub1.Text, Decimal) + CType(lblsub2.Text, Decimal)

Pero claro, tampoco sé si esa es tu intención, te lo pongo a modo de ejemplo.
Espero haber clarificado un poco más tus dudas.
Saludos.
__________________
..:: moNTeZIon ::..
  #8 (permalink)  
Antiguo 30/06/2011, 09:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Cita:
Iniciado por moNTeZIon Ver Mensaje
Bien, por lo que comentas, entiendo que ese Total al que te refieres es un Total de Linea, y por este motivo está dentro del repeater.
En un primer momento creí que te referías a un total de todas las líneas. O sea, una vez procesadas todas las líneas, mostrar la suma total.
Pero volviendo a tu ejemplo, entiendo que quieres mostrar, para cada línea del repeater, un "Total de Linea". Entonces si, el label debe estar dentro del repeater como el resto.
Una vez aclarado esto, el "NullReferenceException" te lo da porqué haces:

label5.Text += CType(lblsub1.Text, Decimal)

Creo que no estás haciendo lo que realmente quieres. La primera vez que entra en la línea, qué se supone que hay en label5.Text? Nada.
Por lo tanto no puedes sumar: Nada + CType(lblsub1.Text, Decimal)

En todo caso deberías hacer algo así:

label5.Text = CType(lblsub1.Text, Decimal) + CType(lblsub2.Text, Decimal)

Pero claro, tampoco sé si esa es tu intención, te lo pongo a modo de ejemplo.
Espero haber clarificado un poco más tus dudas.
Saludos.
hola si probe la linea que me sugeriste, pero me resulta el mismo error.
Te mando un printscreen para q veas lo q qiero exactamente y para que este mas claro.


aunque me parece que el error es por el total que esta en el FOOTER TEMPLATE, no me deja instanciarlo.

sAludos

Última edición por moz90; 30/06/2011 a las 09:15 Razón: imagen
  #9 (permalink)  
Antiguo 01/07/2011, 01:29
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Bueno, por lo que veo en la imagen, por un lado quieres totales de Linea, y por el otro, un Total en el Footer.
Como te comenté, los totales de Linea ya los estás implementando bien, a falta de corregir el error comentado arriba, del NullReference...
Pero para el Total de abajo, es lógico que no te deje instanciarlo, ese control ya no está "dentro" del repeater, si no "fuera".
Simplemente puedes sacarlo fuera del Footer... Si, fuerqa del repeater completamente, de esa forma podrás instanciarlo desede ccódigo (No desde el evento ItemDatabound).
Si sigues interesado en tenerlo el el footer del repeater, supongo que en el propio ItemDataBound deberás preguntar si se trata de la sección Footer, y en tal caso, si podrás instanciarlo y trabajar con él.
Saludos.
__________________
..:: moNTeZIon ::..
  #10 (permalink)  
Antiguo 12/07/2011, 13:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear Reporte Dinamico con Tablas apartir de BD

Cita:
Iniciado por moNTeZIon Ver Mensaje
Bueno, por lo que veo en la imagen, por un lado quieres totales de Linea, y por el otro, un Total en el Footer.
Como te comenté, los totales de Linea ya los estás implementando bien, a falta de corregir el error comentado arriba, del NullReference...
Pero para el Total de abajo, es lógico que no te deje instanciarlo, ese control ya no está "dentro" del repeater, si no "fuera".
Simplemente puedes sacarlo fuera del Footer... Si, fuerqa del repeater completamente, de esa forma podrás instanciarlo desede ccódigo (No desde el evento ItemDatabound).
Si sigues interesado en tenerlo el el footer del repeater, supongo que en el propio ItemDataBound deberás preguntar si se trata de la sección Footer, y en tal caso, si podrás instanciarlo y trabajar con él.
Saludos.
Amigo sorry mil gracias,ya pude con el problema q tenia gracias !!!

SALUDOS TOTALES

Etiquetas: bd, dinamico, reporte, tablas, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:54.