Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Pasar datos de datagridview a Crystal reports

1,382 views
Skip to first unread message

Enla

unread,
Apr 7, 2009, 2:57:18 PM4/7/09
to
Buenas noches:

Quisiera saber como puedo pasar, en vez de una sentencia sql, el contenido
de un datagridview a un CrystalReport

Gracias


J. Carlos Herrero

unread,
Apr 8, 2009, 4:55:39 AM4/8/09
to

"Enla" <en...@yahoo.es> escribió en el mensaje
news:OdR8uK7t...@TK2MSFTNGP04.phx.gbl...
Hola:
El contenido de un datagridview es un datatable
Tienes que pasar el datatable al fichero RPT

rdInforme es un ReportDocument
loDataTable es un Datatable que carga el datagridview
crvInforme es un CrystalReportViewer

Tienes que escribir la siguientes sentencias:

Me.rdInforme.Load(PATH DE TU FICHERO RPT)
Me.rdInforme.SetDataSource(loDataTable)
Me.crvInforme.ReportSource = Me.rdInforme

Espero que se entienda y que te sirva
Un saludo desde Bilbo
Carlos


Enla

unread,
Apr 8, 2009, 5:33:45 AM4/8/09
to
Y como le asigno al loDataTable que es del DatagridView

Gracias

"J. Carlos Herrero" <jcherrerom@NO_SPAMmtin.es> escribió en el mensaje
news:Ou1yLfCu...@TK2MSFTNGP04.phx.gbl...

J. Carlos Herrero

unread,
Apr 8, 2009, 6:48:22 AM4/8/09
to

"Enla" <en...@yahoo.es> escribió en el mensaje
news:%23ZLpf0C...@TK2MSFTNGP04.phx.gbl...

>Y como le asigno al loDataTable que es del DatagridView
>
> Gracias
>
Hola:
En el siguiente ejemplo, se carga 1 DataSet que contiene
1 DataTable que se llama TUDATATABLE

Private Sub lP_ActualizaGrid()
Using loConexion As New SqlConnection(TUCADENACONEXION)
Try
Dim loDataSet As New DataSet
Dim loDataAdapter As New SqlDataAdapter(TUQUERY, loConexion)
loDataAdapter.Fill(loDataSet, "TUDATATABLE")
'enlazar el dataset con el DataGridView
'en DataSource se asigna el dataset
'en DataMember el nombre de la tabla del dataset que se
mostrara en el DataGridView1
Me.DataGridView1.DataSource = loDataSet
Me.DataGridView1.DataMember = "TUDATATABLE"
Catch ex As Exception
MessageBox.Show(ex.Message, "lP_ActualizaGrid",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Using
End Sub

Enla

unread,
Apr 8, 2009, 11:59:50 AM4/8/09
to
tal y como me dices no me funciona.

Te explico como lo tengo dise�ado.

Tengo un formulario Busqueda que hace una busqueda en la base de datos y
abre el Formulario ResultadoBusqueda que es donde tengo el dataGridView, que
desde aqui llamo al Listado.

Desde el formulario Busqueda le paso los datos al DatagridView

Como tengo muchos botones le paso la instruccion sql a CargarDatos.
La cadena_conexione suna variable global con los datos de la conexion a labd
MySql

Private oDataAdapterSub As MySqlDataAdapter
Private oDataSub As DataSet
Dim oResultadoBusqueda As New frmResultadoBusqueda
Dim sql As String
Dim HayDatos As Boolean = False

'PROGRAMACION DE LOS BOTONES

Public Sub CargarDatos(ByVal Sql As String)
Dim miConexion As New MySqlConnection(cadena_conexion)
oDataAdapterSub = New MySqlDataAdapter(Sql, miConexion)
Me.oDataSub = New DataSet
miConexion.Open()
Me.oDataAdapterSub.Fill(oDataSub, "datos")
miConexion.Close()
If (Me.oDataSub.Tables("gestioncv").Rows.Count) = 0 Then
MsgBox("No se han encontrado registros con estos datos",
MsgBoxStyle.Information, "No hay datos")
oDataAdapterSub = Nothing
oDataSub = Nothing
HayDatos = False
Else
oResultadoBusqueda.dtBusqueda.DataSource = Me.oDataSub
oResultadoBusqueda.dtBusqueda.DataMember = "datos"
' Doy el estilo personalizado al DataGridView
' Muestro solo las columas que me interesan, las demas las
pongo invisibles, ya que no me interesan
oDataAdapterSub = Nothing
oDataSub = Nothing
Me.ShowInTaskbar = False
oResultadoBusqueda.ShowDialog()
End If
End Sub

En el formulario ResultadoBusqueda llamo asi al formualrio, he tenido que
crear un dataset a pelo, es decir, al crear un conjunto de datos no me
dejaba arrastrar la tabla datos, por lo cual he tenido que dise�arlo
poniendo los campos que me interesaban (puede que aqui este el fallo),
necesito crear el conjunto de datos para dise�ar el reporte

Private Sub cmdImprimir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdImprimir.Click
Dim loDataTable As DataTable
loDataTable = Me.dtBusqueda.DataSource
Dim mi_rptSocios As New rptListado 'reporte
mi_rptSocios.SetDataSource(Me.dtBusqueda.DataSource)
Dim miReporte As New frmReporte 'Formulario
miReporte.crvInforme.ReportSource = mi_rptSocios
miReporte.Text = "Listado"
miReporte.Show()
End Sub


Gracias y perdon por las molestias

"J. Carlos Herrero" <jcherrerom@NO_SPAMmtin.es> escribi� en el mensaje
news:uonyKeDu...@TK2MSFTNGP05.phx.gbl...
>
> "Enla" <en...@yahoo.es> escribi� en el mensaje

Enla

unread,
Apr 8, 2009, 3:35:07 PM4/8/09
to
Ya lo he solucionado lo he hecho de otra forma

Lo que hago es crear un conjunto de datos , sin arrastrar ninguna tabla,
luego creo un DataTable y hay le pongo los campos.

Despues hago esto:

Private Sub cmdImprimir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdImprimir.Click

Dim MyDataSet As New dtReporte 'Conjunto de datos
Dim MyDataTable As New dtReporte.dtDatosDataTable 'EL dataTable del
conjunto de datos
Dim mi_rptSocios As New rptListado 'Documento cristal reports
Dim miReporte As New frmReportes 'Formulario visor
Dim filas As Integer = Me.dtBusqueda.Rows.Count - 1
Dim i As Integer = 0
For i = 0 To filas - 1
'Paso los datos al dataset
MyDataTable.Rows.Add(Me.dtBusqueda.Rows(i).Cells("dni").Value,
Me.dtBusqueda.Rows(i).Cells("nombre").Value,
Me.dtBusqueda.Rows(i).Cells("apellidos").Value,
Me.dtBusqueda.Rows(i).Cells("direccion").Value,
Me.dtBusqueda.Rows(i).Cells("poblacion").Value,
Me.dtBusqueda.Rows(i).Cells("cp").Value,
Me.dtBusqueda.Rows(i).Cells("telefono1").Value,
Me.dtBusqueda.Rows(i).Cells("telefono2").Value,
Me.dtBusqueda.Rows(i).Cells("email").Value)
Next (i)
MyDataSet.Tables("dtDatos").Merge(MyDataTable)
mi_rptSocios.SetDataSource(MyDataSet)
miReporte.crvInformes.ReportSource = mi_rptSocios


miReporte.Text = "Listado"
miReporte.Show()
End Sub

"Enla" <en...@yahoo.es> escribió en el mensaje

news:%23l4CPMG...@TK2MSFTNGP05.phx.gbl...


> tal y como me dices no me funciona.
>

> Te explico como lo tengo diseñado.

> dejaba arrastrar la tabla datos, por lo cual he tenido que diseñarlo

> poniendo los campos que me interesaban (puede que aqui este el fallo),

> necesito crear el conjunto de datos para diseñar el reporte


>
> Private Sub cmdImprimir_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles cmdImprimir.Click
> Dim loDataTable As DataTable
> loDataTable = Me.dtBusqueda.DataSource
> Dim mi_rptSocios As New rptListado 'reporte
> mi_rptSocios.SetDataSource(Me.dtBusqueda.DataSource)
> Dim miReporte As New frmReporte 'Formulario
> miReporte.crvInforme.ReportSource = mi_rptSocios
> miReporte.Text = "Listado"
> miReporte.Show()
> End Sub
>
>
> Gracias y perdon por las molestias
>

> "J. Carlos Herrero" <jcherrerom@NO_SPAMmtin.es> escribió en el mensaje
> news:uonyKeDu...@TK2MSFTNGP05.phx.gbl...
>>
>> "Enla" <en...@yahoo.es> escribió en el mensaje

djma...@gmail.com

unread,
Mar 26, 2013, 11:43:00 AM3/26/13
to
amigo trato de hacer todo lo q dicen pero al compilar me manda el siguiente error:
No se puede cargar el archivo o ensamblado 'file:///C:\Archivos de programa\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll' ni una de sus dependencias. El sistema no puede hallar el archivo especificado.

que es.. escuche que puede ser el framework..
si saben porfa necesito su ayuda
gracias
0 new messages