Consulta dataset tipado, VS.NET 2010 VB.NET

Iniciado por Yaldabaot, 17 Octubre 2015, 19:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Yaldabaot

Buenas,

Estoy realizando un crystal report, el crystal report se llena con un dataset, donde es un objeto xsd donde le defino previamente sus datatables, la cuestión es que realizo una consulta y el dataset debería en buena teoría llenarse con la misma, pero resulta que no lo hace sino que queda vacío, como hago para llenar ese dataset desde el código para luego simplemente pasarselo lleno al crystal report y generar la consulta?.


Este es el código que tengo, el cuál recibe como parámetro un entero, este mismo retorna un dataset, el cuál según yo debería llenar al item xsd que definí con el diseñador de visual studio, porque el crystal jala ese datasource de ese dataset y de ahí simplemente debería desplegar los campos

No lo hago desde el wizard poque queda completamente suspeditado a una ruta del archivo de access y bueno para hacer un datasource dinámico es un poco engorroso desde el wizard, entonces simplemente decidí hacerlo desde un dataset y que en tiempo de ejecución lo llene
Código (vbnet) [Seleccionar]


Public Function llenar_dataset(ByVal fact As Integer) As DataSet


       Dim cmd2 As OleDb.OleDbCommand = Nothing
       Dim ds As New DS_Tablas



       conn.Open()

       cmd = New OleDb.OleDbCommand("SELECT *  FROM tbl_HEADER  WHERE ID_CONSECUTIVO = @Id", conn)
       cmd.Parameters.AddWithValue("Id", fact)
       cmd.ExecuteNonQuery()

       Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)

     
       cmd2 = New OleDb.OleDbCommand("SELECT *  FROM tbl_DETAIL  WHERE COD_FACTURA = @Id_det", conn)
       cmd2.Parameters.AddWithValue("Id_det", fact)
       cmd2.ExecuteNonQuery()


       Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(cmd2)



       da.Fill(ds, "tbl_HEADER")
       da2.Fill(ds, "tbl_DETAIL")

       conn.Close()


       Return ds

   End Function



Acá el código que genera el crystal, el cuál la ruta y lo demás lo hace bien, simplemente sale vacío

Código (vbnet) [Seleccionar]


CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()

               ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))

               CrReport.FileName = "CrystalReport1.rpt"

               'Ruta del reporte
               str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"

               CrReport.Load(str_path_factura)

               'Esto es código provisional, simplemente es para saber si el dataset está lleno o no
               If ds.Tables("tbl_HEADER").Rows.Count() = 0 Or ds.Tables("tbl_DETAIL").Rows.Count() Then

                   MsgBox("Tablas vacías")
               Else
                   MsgBox("Tu dataset está lleno chico")


                   MsgBox(ds.Tables("tbl_HEADER").Rows.Count().ToString)
                   MsgBox(ds.Tables("tbl_DETAIL").Rows.Count().ToString)
               End If

               CrReport.SetDataSource(ds.Tables(0))
               CrReport.SetDataSource(ds.Tables(1))

               'CrReport.PrintToPrinter(False, False, False, False)





Pues acá está el código pero le dataset sale vacío y por tanto el reporte igual.

GRACIAS POR LEER
Nunca me contestan -_-

Yaldabaot

Ya lo resolví!!, usé esto

Código (vbnet) [Seleccionar]


Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
                ' Asigno el reporte


                CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()

                'ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))

                CrReport.FileName = "CrystalReport1.rpt"

                'Ruta del reporte
                str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"

                CrReport.Load(str_path_factura)
                CrReport.SetDataSource(obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text)))
                CrReport.PrintToPrinter(False, False, False, False)

Nunca me contestan -_-