none
URGENTE: Como llenar un Reporte en ReportViewer con 4 Select en un mismo Proced Almacenado RRS feed

  • Pregunta

  •  

    Hola tengo un problema que quizas alguien ya lo haya tenido, bueno es el siguiente: Estaba terminando unos reportes con Report Viewer jalando mi data desde un procedimiento almacenado hacia una tabla en mi diseño del reporte, pero en mi procedimiento no solo debo jalar un select sino 4 select al mismo tiempo,dado que necesito hacer una jalada de datos de 4 diferentes circunstancias pero nose como podria hacerse porque solo me muestra en el reporte el primer select, si me podria alguien orientar como podria hacerlo y si se requiere algo de codigo les agradeceria tb me guiaran porque aun soy novato en esto de los reportes.

    Muchas gracias y espero una pronta respuesta.

    domingo, 10 de febrero de 2008 17:45

Respuestas

  • Hola yorengoy muchas gracias por tu ejemplo esta bueno, pero lo que tu haces es alimentar un reporte de un dataset tipificado desde otros dataset...y en mi caso lo que necesitaba era solo alimentar mi reporte desde solo un procedimiento almacenado, pero el cual contenia 4 Selecciones o llamadas de datos, pero de todas maneras tu ejemplo es muy interesante eh.

     

    Bueno investigando un poco en internet, encontre por ahi que para estos casos se podia utilizar Tablas Temporales, pero no lo hice ya que hay algo parecido PERO CON MAYOR TIEMPO DE RESPUESTA son las VARIABLES TIPO TABLA aca les dejo algunos links : variables tipo tabla , estructura variables tipo tabla, ejemplo declaracion variables locales; para que puedan entender mejor que si trabajamos con grandes cantidades de datos seria una mejor opcion trabajar con variables tipo tabla

    Espero esto pueda ayudar a alguien que tenga el mismo percance.

     

    Saludos

    Walter Rojas Aguilar

     

     

    miércoles, 27 de febrero de 2008 16:39

Todas las respuestas

  • lunes, 11 de febrero de 2008 6:24
    Moderador
  •  

    Hola Fran disculpa otra vez la molestia y mi ignorancia,

    Pero nose si entendi muy bien con lo que me decias sobre alimentar a una lista con mis 4 selects que pertenecen a un solo procedimiento almacenado, uhmm bueno pero intente trabajar con un control lista y tampoco me salio Tongue Tied.

    Por favor si alguna vez has hecho o intentado alimentar una tabla con un proce almacenado , pero el cual tenga internamente 4 Selects al mismo tiempo te agradeceria me mandaraas el codigo o la forma o en todo caso una url donde haya un ejemplo similar

    Muchas gracias por tu ayuda

    lunes, 18 de febrero de 2008 4:09
  • Hola,

     

    Puedes explicarte un poco más. Tal como entiendo al informe, se le pasa una select, procedimiento almacenado, objeto u xml. En cualquiera de ellos, tú eres el que debes de especificarle que es lo que le pasas, ¿ok?. A partir de aquí, ¿que es lo que no sabes hacer?

     

    Un Saludo

     

    lunes, 25 de febrero de 2008 14:38
    Moderador
  • Disculpandome por las molestias ante todo Fran:

     

    En primer lugar este reporte es un Reporte de VENTAS DIARIAS.

     

    OK, es cierto Mi informe ( que contiene una Tabla) recibe o se alimenta de un Procedimiento Almacenado, hasta ahi esta claro.

    Ahora el problema es que El Procedimiento Almacenado que alimenta mi informe tiene internamente 4 SELECTS, ya que son 4 distintas circunstancias que se pueden dar en mis VENTAS DIARIAS, que se van a mostrar en mi Reporte ok.

     

    Pero el problema es que cuando cargo o establezco la carga de datos del informe con el resultado de mi Procedimiento Almacenado solo me muestra los resultados del Primer SELECT , y deberia mostrar los resultados de los 4 SELECTS que estan dentro de mi procedimiento almacenado.

    Ahora mi pregunta es ¿Como hago para poder llenar, jalar o alimentar  el informe con los 4 SELECTS de mi Procedimiento Almacenado? Ya que como te explico el informe me debe mostrar si o si los 4 SELECTS. Por eso te consulto si alguna vez has hecho esto para algun reporte y si me podrias decir como hacerlo o el codigo derrepente de como especificarlo en el codigo dentro del formulario o en todo caso pasarme algunos link donde se de un caso muy similar al mio.

    Muchas gracias y espero tu pronta respuesta .

    lunes, 25 de febrero de 2008 17:54
  • Hola, yo tambien tuve el mismo problema y lo que hice para resolverlo fue lo siguiente:

    1._ Cree la estructura de mi dataset tipificado, sin table adapters ni nada mas, solo la estructura en xml.
    2._ Diseñe mi reporte
    3._ Agregue un control reportviewer a mi webform(O winform no importa) y le señale la ruta del reporte a usar; una vez hecho esto el reportviewer crea unos datasources para tu reporte, aqui se necesita eliminar la coleccion de datasources del reporte porque lo vamos a alimentar con un dataset.
    4. he aqui mi codigo:

     Private Sub CargaReporteInterfaz(ByVal cliente As Short, ByVal clienteSuc As Short, ByVal tipoPeriodo As Byte, ByVal NumeroPeriodo As Short, ByVal Ejercicio As Integer, ByVal TiposNomina As String, ByVal Prestadoras As String, ByVal PrestadorasSuc As String)
            Me.ReportViewer1.LocalReport.DataSources.Clear()
            Me.ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local
            Dim reporteBancaria As LocalReport = Me.ReportViewer1.LocalReport
            Try

                DsBanca = Me.AdaptadorInterfaz.ObtenerReporte(cliente, clienteSuc, tipoPeriodo, NumeroPeriodo, Ejercicio, TiposNomina, Prestadoras, Sucursales)
                reporteBancaria.ReportPath = "Interface\Reporte.rdlc"
                Dim FuenteReporte As New ReportDataSource("DsInterfaz_Prestadoras", DsBanca.BancariaPrestadoras)
                Dim FuenteReporte2 As New ReportDataSource("DsInterfaz_ConceptosGeneral", DsBanca.ConceptosGeneral)
                reporteBancaria.DataSources.Add(FuenteReporte)
                reporteBancaria.DataSources.Add(FuenteReporte2)
                AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf Me.SubreportProcessingEventHandler


            Catch ex As Exception
               
            End Try
        End Sub


    Aqui esta un manejador de eventos para mi subreporte:


    Public Sub SubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
            Dim FuenteReporte5 As New ReportDataSource("DsInterfaz_Empleados", DsBanca.BancariaEmpleados)
            Dim Fuentereporte6 As New ReportDataSource("DsInterfaz_Prestadora", DsBanca.ConceptosPrestadora)

            e.DataSources.Add(FuenteReporte5)
            e.DataSources.Add(Fuentereporte6)

        End Sub
    lunes, 25 de febrero de 2008 19:35
  • Hola yorengoy muchas gracias por tu ejemplo esta bueno, pero lo que tu haces es alimentar un reporte de un dataset tipificado desde otros dataset...y en mi caso lo que necesitaba era solo alimentar mi reporte desde solo un procedimiento almacenado, pero el cual contenia 4 Selecciones o llamadas de datos, pero de todas maneras tu ejemplo es muy interesante eh.

     

    Bueno investigando un poco en internet, encontre por ahi que para estos casos se podia utilizar Tablas Temporales, pero no lo hice ya que hay algo parecido PERO CON MAYOR TIEMPO DE RESPUESTA son las VARIABLES TIPO TABLA aca les dejo algunos links : variables tipo tabla , estructura variables tipo tabla, ejemplo declaracion variables locales; para que puedan entender mejor que si trabajamos con grandes cantidades de datos seria una mejor opcion trabajar con variables tipo tabla

    Espero esto pueda ayudar a alguien que tenga el mismo percance.

     

    Saludos

    Walter Rojas Aguilar

     

     

    miércoles, 27 de febrero de 2008 16:39
  •  

    en mi procedimiento almacenado tengo 4 consultas son selects y en una de ellas uso una variable de tipo tabla y uso esa para cruzar info con otras tablas y asi obtener otras consultas; total que mi procedimiento me regresa 4 tablas y para llenar un dataset uso lo siguiente

     

     

    Dim adaptadorX As New SqlDataAdapter()

    adaptadorX.SelectCommand = NominaReciboSRL(cliente, clienteSuc, tipoPeriodo, FechaInicial, FechaFinal, TiposNomina, Prestadoras, PrestadorasSuc, NumeroPeriodo, Ejercicio, Acumulado)

     

    'Aqui es donde mapeas las tablas a tu dataset

     

    adaptadorX.TableMappings.Add("Table", "NomEmpleados")

    adaptadorX.TableMappings.Add("Table1", "Conceptos")

     

    adaptadorX.Fill(DsRecibitos)

    miércoles, 27 de febrero de 2008 17:27
  • Ok amigo yorengoy uhm ya veo es decir que tu reporte es mucho mas complejo que el que necesitaba hacer yo, dado que aparte de utilizar variables tipo table usas esa para cruzar info con otras, pero como comente en mi caso solo necesitaba poder anidar esos selects y la forma mas practica que encontre fue declarar una variable tipo tabla, almacenar en ella los 4 selects y de ahi llamar a esa variable tipo tabla para llenar mi table_adapter y ya con eso quedo resuelto el problemilla.

    Pero tu ejemplo es muy bueno eh, muchas gracias por tu ayuda.

    Salu2

     

    miércoles, 27 de febrero de 2008 17:47