Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Yaldabaot en 17 Octubre 2015, 19:52 pm



Título: Consulta dataset tipado, VS.NET 2010 VB.NET
Publicado por: Yaldabaot en 17 Octubre 2015, 19:52 pm
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
  1.  
  2. Public Function llenar_dataset(ByVal fact As Integer) As DataSet
  3.  
  4.  
  5.        Dim cmd2 As OleDb.OleDbCommand = Nothing
  6.        Dim ds As New DS_Tablas
  7.  
  8.  
  9.  
  10.        conn.Open()
  11.  
  12.        cmd = New OleDb.OleDbCommand("SELECT *  FROM tbl_HEADER  WHERE ID_CONSECUTIVO = @Id", conn)
  13.        cmd.Parameters.AddWithValue("Id", fact)
  14.        cmd.ExecuteNonQuery()
  15.  
  16.        Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
  17.  
  18.  
  19.        cmd2 = New OleDb.OleDbCommand("SELECT *  FROM tbl_DETAIL  WHERE COD_FACTURA = @Id_det", conn)
  20.        cmd2.Parameters.AddWithValue("Id_det", fact)
  21.        cmd2.ExecuteNonQuery()
  22.  
  23.  
  24.        Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(cmd2)
  25.  
  26.  
  27.  
  28.        da.Fill(ds, "tbl_HEADER")
  29.        da2.Fill(ds, "tbl_DETAIL")
  30.  
  31.        conn.Close()
  32.  
  33.  
  34.        Return ds
  35.  
  36.    End Function
  37.  
  38.  

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
  1.  
  2. CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
  3.  
  4.                ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))
  5.  
  6.                CrReport.FileName = "CrystalReport1.rpt"
  7.  
  8.                'Ruta del reporte
  9.                str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"
  10.  
  11.                CrReport.Load(str_path_factura)
  12.  
  13.                'Esto es código provisional, simplemente es para saber si el dataset está lleno o no
  14.                If ds.Tables("tbl_HEADER").Rows.Count() = 0 Or ds.Tables("tbl_DETAIL").Rows.Count() Then
  15.  
  16.                    MsgBox("Tablas vacías")
  17.                Else
  18.                    MsgBox("Tu dataset está lleno chico")
  19.  
  20.  
  21.                    MsgBox(ds.Tables("tbl_HEADER").Rows.Count().ToString)
  22.                    MsgBox(ds.Tables("tbl_DETAIL").Rows.Count().ToString)
  23.                End If
  24.  
  25.                CrReport.SetDataSource(ds.Tables(0))
  26.                CrReport.SetDataSource(ds.Tables(1))
  27.  
  28.                'CrReport.PrintToPrinter(False, False, False, False)
  29.  




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

GRACIAS POR LEER


Título: Re: Consulta dataset tipado, VS.NET 2010 VB.NET[SOLUCIONADO]
Publicado por: Yaldabaot en 17 Octubre 2015, 21:01 pm
Ya lo resolví!!, usé esto

Código
  1.  
  2. Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
  3.                ' Asigno el reporte
  4.  
  5.  
  6.                CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
  7.  
  8.                'ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))
  9.  
  10.                CrReport.FileName = "CrystalReport1.rpt"
  11.  
  12.                'Ruta del reporte
  13.                str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"
  14.  
  15.                CrReport.Load(str_path_factura)
  16.                CrReport.SetDataSource(obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text)))
  17.                CrReport.PrintToPrinter(False, False, False, False)
  18.  
  19.