SetDataSource de Crystal

13/04/2005 - 16:45 por Jonathan Prieto | Informe spam
Buenas tardes, mi error es el siguiente:

Tengo un informe de Crystal en un proyecto de vb.net. La conexión la cree
contra la tabla de una bd. A la vez tengo un DataSet que cargo con esa misma
tabla, que lo muestro en un DataGrid. Mi idea es realizar cambios en el
DataGrid (que a la vez los está haciendo en el DataSet) y sin actualizar la
BD, mostrarle los datos del DataSet en el informe, y lo que he hecho es
justo antes de lanzar el informe asignarle el DataSource:

Informe.SetDataSource(dataSetOrigen.Tables("TablaNiveles"))

En teoría una cosa tan fácil como ésta debería funcionar perfectamente, de
hecho no me da ningún error, pero el informe muestra siempre los datos que
hay actualmente en la tabla de la BD no en la tabla del DataSet.

Alguna idea?
Gracias
Jonathan Prieto

Preguntas similare

Leer las respuestas

#1 J. Carlos Herrrero
13/04/2005 - 20:29 | Informe spam
Hola:

Cuando creas el fichero con extension rpt
el Origen de Datos tiene que ser un DataSet (Ejemplo: DataSet1.xsd)
Este es el codigo que uso en un form que es comun
para cualquier fichero rpt

Private Sub frmResultado_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim lsQuery As String
lsQuery = Global.msQuery & " " & Global.msWhere
Try
loSqlConnection = New SqlConnection(Global.msCadenaConexion)
loSqlDataAdapter = New SqlDataAdapter(lsQuery, loSqlConnection)
loDataSet = New DataSet
loSqlDataAdapter.Fill(loDataSet, Global.msTabla)
Me.rdInforme.Load(Global.msPath) 'Donde esta el rpt
Me.rdInforme.SetDataSource(loDataSet)
Me.crvInforme.ReportSource = Me.rdInforme
Catch Exp As Exception
MsgBox(Exp.Message, MsgBoxStyle.Critical, "frmResultado_Load")
End Try
End Sub

rdInforme-Es un ReportDocument
crvInforme-Es un CrystalReportViewer

Otra forma es con SelectionFormula

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"Jonathan Prieto" escribió en el mensaje
news:
Buenas tardes, mi error es el siguiente:

Tengo un informe de Crystal en un proyecto de vb.net. La conexión la cree
contra la tabla de una bd. A la vez tengo un DataSet que cargo con esa
misma
tabla, que lo muestro en un DataGrid. Mi idea es realizar cambios en el
DataGrid (que a la vez los está haciendo en el DataSet) y sin actualizar
la
BD, mostrarle los datos del DataSet en el informe, y lo que he hecho es
justo antes de lanzar el informe asignarle el DataSource:

Informe.SetDataSource(dataSetOrigen.Tables("TablaNiveles"))

En teoría una cosa tan fácil como ésta debería funcionar perfectamente, de
hecho no me da ningún error, pero el informe muestra siempre los datos que
hay actualmente en la tabla de la BD no en la tabla del DataSet.

Alguna idea?
Gracias
Jonathan Prieto


Respuesta Responder a este mensaje
#2 Jonathan Prieto
14/04/2005 - 09:33 | Informe spam
Gracias Carlos

No se puede crear un informe en el que el origen de datos sea una tabla de
la BD, y luego pasarle los datos de un DataSet?

Según te he entendido, si un informe quiero que me muestre datos de un
DataSet, tengo que crearlo con un origen de datos xsd, que es la estructura
del DataSet, no puedo crearlo desde una tabla de BD y luego pasarle un
DataSet. Mi problema es que el DataSet no tiene tipo, me creo la Conexion,
el DataAdapter y el DataSet y sus tablas por código. Yo cuando creo el
informe con su origen de datos una tabla, es para tener todos sus campos en
él nada más.


"J. Carlos Herrrero" escribió en el mensaje
news:
Hola:

Cuando creas el fichero con extension rpt
el Origen de Datos tiene que ser un DataSet (Ejemplo: DataSet1.xsd)
Este es el codigo que uso en un form que es comun
para cualquier fichero rpt

Private Sub frmResultado_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim lsQuery As String
lsQuery = Global.msQuery & " " & Global.msWhere
Try
loSqlConnection = New SqlConnection(Global.msCadenaConexion)
loSqlDataAdapter = New SqlDataAdapter(lsQuery, loSqlConnection)
loDataSet = New DataSet
loSqlDataAdapter.Fill(loDataSet, Global.msTabla)
Me.rdInforme.Load(Global.msPath) 'Donde esta el rpt
Me.rdInforme.SetDataSource(loDataSet)
Me.crvInforme.ReportSource = Me.rdInforme
Catch Exp As Exception
MsgBox(Exp.Message, MsgBoxStyle.Critical, "frmResultado_Load")
End Try
End Sub

rdInforme-Es un ReportDocument
crvInforme-Es un CrystalReportViewer

Otra forma es con SelectionFormula

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"Jonathan Prieto" escribió en el mensaje
news:
> Buenas tardes, mi error es el siguiente:
>
> Tengo un informe de Crystal en un proyecto de vb.net. La conexión la


cree
> contra la tabla de una bd. A la vez tengo un DataSet que cargo con esa
> misma
> tabla, que lo muestro en un DataGrid. Mi idea es realizar cambios en el
> DataGrid (que a la vez los está haciendo en el DataSet) y sin actualizar
> la
> BD, mostrarle los datos del DataSet en el informe, y lo que he hecho es
> justo antes de lanzar el informe asignarle el DataSource:
>
> Informe.SetDataSource(dataSetOrigen.Tables("TablaNiveles"))
>
> En teoría una cosa tan fácil como ésta debería funcionar perfectamente,


de
> hecho no me da ningún error, pero el informe muestra siempre los datos


que
> hay actualmente en la tabla de la BD no en la tabla del DataSet.
>
> Alguna idea?
> Gracias
> Jonathan Prieto
>
>


Respuesta Responder a este mensaje
#3 Jonathan Prieto
15/04/2005 - 13:15 | Informe spam
Gracias Carlos por tu ejemplo, pero lamentablemente ha llegado demasiado
tarde, al final los informes tiran directamente de la tabla de la BD, había
prisa

Pero de todas formas el ejemplo que me has pasado me servirá para crear un
informe la próxima vez!!

Gracias
Jonathan Prieto



"J. Carlos Herrrero" escribió en el mensaje
news:%
Hola:
Te adjunto un ejemplo

En el veras que en el fichero CrystalReport1.rpt
el origen de datos es Dataset1.xsd que es la tabla authors
de la base de datos pubs (sqlserver)

Para poder cargar un dataset a un fichero rpt
el origen de datos tiene que ser un dataset

Espero que se entienda
Un saludo desde Bilbo:
Carlos

"Jonathan Prieto" escribió en el mensaje
news:
> Gracias Carlos
>
> No se puede crear un informe en el que el origen de datos sea una tabla


de
> la BD, y luego pasarle los datos de un DataSet?
>
> Según te he entendido, si un informe quiero que me muestre datos de un
> DataSet, tengo que crearlo con un origen de datos xsd, que es la
> estructura
> del DataSet, no puedo crearlo desde una tabla de BD y luego pasarle un
> DataSet. Mi problema es que el DataSet no tiene tipo, me creo la


Conexion,
> el DataAdapter y el DataSet y sus tablas por código. Yo cuando creo el
> informe con su origen de datos una tabla, es para tener todos sus campos
> en
> él nada más.
>
>



Respuesta Responder a este mensaje
#4 J. Carlos Herrrero
15/04/2005 - 20:38 | Informe spam
Hola Jonathan:
Gracias a ti por responder

Un saludo desde Bilbo:
Carlos

"Jonathan Prieto" escribió en el mensaje
news:%23Mcg%
Gracias Carlos por tu ejemplo, pero lamentablemente ha llegado demasiado
tarde, al final los informes tiran directamente de la tabla de la BD,
había
prisa

Pero de todas formas el ejemplo que me has pasado me servirá para crear un
informe la próxima vez!!

Gracias
Jonathan Prieto



"J. Carlos Herrrero" escribió en el
mensaje
news:%
Hola:
Te adjunto un ejemplo

En el veras que en el fichero CrystalReport1.rpt
el origen de datos es Dataset1.xsd que es la tabla authors
de la base de datos pubs (sqlserver)

Para poder cargar un dataset a un fichero rpt
el origen de datos tiene que ser un dataset

Espero que se entienda
Un saludo desde Bilbo:
Carlos

"Jonathan Prieto" escribió en el mensaje
news:
> Gracias Carlos
>
> No se puede crear un informe en el que el origen de datos sea una tabla


de
> la BD, y luego pasarle los datos de un DataSet?
>
> Según te he entendido, si un informe quiero que me muestre datos de un
> DataSet, tengo que crearlo con un origen de datos xsd, que es la
> estructura
> del DataSet, no puedo crearlo desde una tabla de BD y luego pasarle un
> DataSet. Mi problema es que el DataSet no tiene tipo, me creo la


Conexion,
> el DataAdapter y el DataSet y sus tablas por código. Yo cuando creo el
> informe con su origen de datos una tabla, es para tener todos sus
> campos
> en
> él nada más.
>
>







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida