none
Paso como origen de datos datatable al crystal report y reporte en blanco.

    Pregunta

  • Buenas,

    no se por que me sale el reporte en blanco solo con los campos de cabecera. Tenemos esto:

    Public Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
            Dim rpt As New reporte
            Try
                Dim idEmpresa As Integer
                If RadioButton1.Checked Then
                    idEmpresa = 1
                Else
                    idEmpresa = 2
                End If
    
                ' Obtenemos el objeto DataTable.
                '
                Dim dt As DataTable = Me.GetDataTable(idEmpresa)
    
                DataGridView1.DataSource = dt
    
                Dim formulario As New generar_reporte
                rpt.SetDataSource(dt)
                formulario.CrystalReportViewer1.ReportSource = rpt
                formulario.CrystalReportViewer1.Dock = DockStyle.Fill
    
                Dim frmreport As New Form()
                With frmreport
                    .Controls.Add(formulario.CrystalReportViewer1)
                    .Text = "Generar Reporte"
                    .WindowState = FormWindowState.Maximized
                    .ShowDialog()
                End With
    
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try

    El datatable(dt) esta correcto ya que el grid me lo carga correctamente. Luego le paso este dt al crystal report y no me carga nada.

    Que puede ocurrir?

    Gracias

    viernes, 01 de junio de 2012 10:08

Todas las respuestas

  • Buenas el boton que me genera el reporte tiene este codigo:

    Public Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
            Dim rpt As New reporte
            Try
                Dim fechadesde As String
                Dim idEmpresa As Integer
                Dim fechahasta As String
    
                If RadioButton1.Checked Then
                    idEmpresa = 1
                Else
                    idEmpresa = 2
                End If
    
                If txtdesde.Text = "" Then
                    fechadesde = Convert.ToString("2012/01/01")
                Else
                    fechadesde = txtdesde.Text
                End If
    
                If txthasta.Text = "" Then
                    fechahasta = Convert.ToString("2099/01/01")
                Else
                    fechahasta = txthasta.Text
                End If
               
    
                ' Obtenemos el objeto DataTable.
                '
                Dim dt As DataTable = Me.GetDataTable(idEmpresa, fechadesde, fechahasta)
    
                DataGridView1.DataSource = dt
    
                Dim ds As New DataSet
                ds.Tables.Add(dt)
    
                Dim formulario As New generar_reporte
                rpt.SetDataSource(dt)
                formulario.CrystalReportViewer1.ReportSource = rpt
                formulario.CrystalReportViewer1.Dock = DockStyle.Fill
    
                Dim frmreport As New Form()
                With frmreport
                    .Controls.Add(formulario.CrystalReportViewer1)
                    .Text = "Generar Reporte"
                    .WindowState = FormWindowState.Maximized
                    .ShowDialog()
                End With
    
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try

    Y aqui la funcion que obtiene los datos:

      Private Function GetDataTable(ByVal idEmpresa As Integer, ByVal fechadesde As String, ByVal fechahasta As String) As DataTable
    
            Try
                Using cnn As New MySqlConnection("Server=localhost;Database=grupomontes;Uid=root;Pwd=;")
    
                    Dim cmd As MySqlCommand = cnn.CreateCommand()
    
                    cmd.CommandText = _
                     "SELECT a.Fecha AS fecha, a.Num_Albaran AS Num_Albaran," & _
                     "e.Razon_social_empresa AS Razon_Social_Empresa, c.Razon_Social AS Razon_Social, p.Nombre AS Nombre, a.neto AS Neto " & _
                     "FROM Productos AS p INNER JOIN (Empresas AS e " & _
                     "INNER JOIN (Clientes AS c INNER JOIN Albaranes AS a " & _
                     "ON c.Id_Clientes = a.Id_Cliente) ON e.Id_Empresa = a.Id_Empresa) " & _
                     "ON p.Id_Producto = a.Id_Producto " & _
                     "WHERE e.Id_Empresa=@idEmpresa and a.fecha >= @fechadesde and a.fecha <= @fechahasta;"
    
                    cmd.Parameters.AddWithValue("@idEmpresa", idEmpresa)
                    cmd.Parameters.AddWithValue("@fechadesde", fechadesde)
                    cmd.Parameters.AddWithValue("@fechahasta", fechahasta)
    
    
    
                    Dim da As New MySqlDataAdapter(cmd)
    
                    Dim dt As New DataTable("albaranes")
                    da.Fill(dt)
                    Return dt
    
                End Using
    
            Catch
                ' Devolvemos la excepción al procedimiento llamador
                Throw
    
            End Try
    
        End Function

    Somo me carga los datos que no estan relacionados con otras tablas. El resto de campos me aparecen vacios en el reporte. Los unicos campos no relacionados con ninguna otra tabla son fecha, id_albaran y neto.

    Para razon_social empresa (relacionado con la tabla empresa), razon_social (relacionado con la tabla clientes), nombre (relacionado con la tabla produttos) me aparece esos campos del reporte vacios.

    Que puede ser?

    martes, 05 de junio de 2012 8:42
  • la consulta te trae todos los datos? por que desde alli puede ser el error depura tu codigo
    viernes, 29 de junio de 2012 14:49