Discussion:
Crear Crystal reports
(demasiado antiguo para responder)
Sergio
2005-12-12 11:48:32 UTC
Permalink
Hola a todos:

He probado con el ejemplo de esta pagina :

http://www.elguille.info/colabora/puntoNET/kagueto_crearInforme.htm

Y es para bd Access he probado para Sql Server 2000 y no funciona

Hay algun ejemplo utilizando SQL SERVER

Gracias
Eduardo Alvarado Meza
2005-12-12 12:09:02 UTC
Permalink
Esta dificil de creer, si solo es la conexion lo que deberia de cambiar, se
mas especifico con el error que te resulta. Llegas al menos a poner los
campos en el reporte? O tu problema esta en llamar al reporte? Te sale la
ventana preguntando por el servidor, login y password?
Sergio
2005-12-12 12:26:19 UTC
Permalink
El problema es a la hora de crear el DataSet que no me lo hace bien o cuando
lo llamo desde el Crystal no me lo llama, es decir me dice que esta creado
pero no hay ningun dato
Post by Eduardo Alvarado Meza
Esta dificil de creer, si solo es la conexion lo que deberia de cambiar, se
mas especifico con el error que te resulta. Llegas al menos a poner los
campos en el reporte? O tu problema esta en llamar al reporte? Te sale la
ventana preguntando por el servidor, login y password?
Eduardo Alvarado Meza
2005-12-12 13:20:02 UTC
Permalink
Te hize una demo con un codigo de mi propia creacion, aprecialo, te servira
TODA la vida. trabaja con SQLServer y se supone que utilizas una base de
datos NorthWind.

Si las referencias de crystal te dan problemas, quitalas y vuelvelas a
poner, pueda ser que mi crystal sea mas de la ultima version que el tuyo.

La direccion es:
http://www.IBW.COM.NI/~eduardom/Reports.zip

Ve ya porque dentro de poco la quito.!!
Sergio
2005-12-12 14:56:48 UTC
Permalink
Gracias, pero ya me funciona el problema era que no arrastraba las tablas al
data set
Post by Eduardo Alvarado Meza
Te hize una demo con un codigo de mi propia creacion, aprecialo, te servira
TODA la vida. trabaja con SQLServer y se supone que utilizas una base de
datos NorthWind.
Si las referencias de crystal te dan problemas, quitalas y vuelvelas a
poner, pueda ser que mi crystal sea mas de la ultima version que el tuyo.
http://www.IBW.COM.NI/~eduardom/Reports.zip
Ve ya porque dentro de poco la quito.!!
andrelolu
2005-12-13 14:41:48 UTC
Permalink
Estoy realizando una aplicación windows en .net y necesito hacer un crystal report, tengo 3 tablas en access relacionadas entre si... en el crystal report tengo un combobox y un botón lo que quiero es que cuando escoja un nombre del proyecto que está en el combobox , en el reporte se carguen los datos del proyecto..Ahora lo hace solo para elprimer proyecto ingresado si escojo otro proyecto no me carga en el reporte. Además mi base está protegida por contraseña ya puse el código con el pasw pero siempre que carga el reporte me pide psw...Si sabes otra forma que funcione bien de como cargar los datos y quitar ese mensaje de q me pida la contraseña ayúdame... La programación en el reporte está así, para cuando de click en el botón me cargue los datos..

private void llenar_datosr(





string cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\xxxxx.mdb; Jet OLEDB:Database Password=Admin ;Jet OLEDB:Database Password=1234"



OleDbConnection con = new System.Data.OleDb.OleDbConnection(cadenaConexion)



string consulta="SELECT *FROM [proyecto] where proynom='" + this.comboBox1.SelectedText+"'";





tr

{OleDbCommand cm = new OleDbCommand(consulta, con)

OleDbDataAdapter da = new OleDbDataAdapter(cm)

con.Open()

DataSet dt=new DataSet("proyecto")

OleDbCommandBuilder cb = new OleDbCommandBuilder(da)

da.Fill(dt, "proyecto")

CrystalReport4 rel = new CrystalReport4()

rel.SetDataSource(dt)

this.crystalReportViewer1.ReportSource = rel



catch(Exception ex){MessageBox.Show("Error: " + ex.Message);

finall



if(con.State!=ConnectionState.Closed

con.Close()





Esta función la llamo en el botón… Muchas gracias desde ya por la ayud



--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
Eduardo Alvarado Meza
2005-12-14 03:40:02 UTC
Permalink
No probe tu codigo, pero creo que no hace falta. El hecho que te pregunte la
password de la BD (eso nunca te lo haria el connection) es delator, debido a
que lo estas alimentando de un dataset por lo que tu problema se concentra en
crystal.

Mira, si te pregunta eso es porque cuando creastes el reporte o lo estabas
"diseñando" utilizastes como origen de datos tu BD de Access. Si lo vas a
alimentar de un dataset lo correcto (no deberia darte error pero ni modo) es
lo sig.:
1) Crea un dataset tipado con las estructuras de las tablas y relaciones que
opcupara el reporte.
2)Vuelve a crear el reporte en el diseñador de Crystal, pero cuando lo hagas
no utilizes como el origen de datos tu BD de Access SINO tu dataset tipado en
el proyecto (lo tienes que ver a huevo).
3) Cuando hagas la asignacion en el ReportSource, le asignas el dataset
llenado con la informacion a llenar, pero que sea un dataset TIPADO,
logicamente del mismo tipo que el que creastes.

Asi el documento no saber de la existencia de ninguna BD ni password, sino
solo de tu Dataset .... Suerte en tu proyecto, y creo que no te hace falta el
commandbuilder..
andrelolu
2005-12-15 17:27:30 UTC
Permalink
Hola Eduardo gracias por tu ayuda pues si tendré que crear el dataset de forma manual y agregar esos campos al reporte, lo q si te pido es que me ayudees explicando un poco mas el punto 3 no se a q te refieres con dataset tipado y lleno con la información a llenar?

Gracias x tu ayud

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
andrelolu
2005-12-15 21:42:11 UTC
Permalink
No se que es lo que pasa con mi reporte ya hice la creación del type Dataset se llama Dataset1 y el código está así


private void llenar_datosr(



string cadenaConexion = ConfigurationSettings.AppSettings["conpath"].ToString()
OleDbConnection con = new System.Data.OleDb.OleDbConnection(cadenaConexion);
string consulta="SELECT *FROM [proyecto] where proynom='"+this.comboBox1.SelectedText+"'";



try

OleDbDataAdapter da=new OleDbDataAdapter(consulta,con)
con.Open()
DataSet2 dt=new DataSet2("proyecto")
da.Fill(dt)
CrystalReport4 rel = new CrystalReport4()
rel.SetDataSource(dt)
this.crystalReportViewer1.ReportSource = rel
rel.Refresh()

catch(Exception ex){MessageBox.Show("Error: “ + ex.Message);

finall



if(con.State!=ConnectionState.Closed

con.Close()



pero no se que pasa mando a correr la aplicaciony me sale el erro:
The type or namespace name 'DataSet2' could not be found (are you missing a using directive or an assembly reference?), no se que libreria falta por favor ayúdeme ya tengo todas estas librerias

using System
using System.Drawing
using System.Collections
using System.ComponentModel
using System.Windows.Forms
using System.Data
using System.Data.OleDb
using System.Configuration
using CrystalDecisions.ReportSource
using CrystalDecisions.Windows.Forms
using CrystalDecisions.Shared
using CrystalDecisions.CrystalReports.ViewerObjectModel
using CrystalDecisions.CrystalReports.Engine
using CrystalDecisions.CrystalReports
using System.Data.Common

Gracias por su ayuda.

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
andrelolu
2005-12-15 22:09:35 UTC
Permalink
Sorry en el codigo de arriba es DataSet1 dt=new DataSet1("proyecto"); pero aun así no me funcion

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
andrelolu
2005-12-16 16:48:31 UTC
Permalink
Hola por favor necesito ayuda de nuevo, ya cree el dataset tipado y y le asigne a un nuevo está así



private void llenar_datosr(







string cadenaConexion = ConfigurationSettings.AppSettings["conpath"].ToString()

OleDbConnection con = new System.Data.OleDb.OleDbConnection(cadenaConexion);

string consulta="SELECT *FROM [proyecto] where proynom='" + this.comboBox1.SelectedText+"'";







tr

{ OleDbDataAdapter da=new OleDbDataAdapter(consulta,con)

con.Open()

Dataset1 dt = new Dataset1()

da.Fill(dt)

CrystalReport4 rel = new CrystalReport4()

rel.SetDataSource(dt)

this.crystalReportViewer1.ReportSource = rel

rel.Refresh()



catch(Exception ex){MessageBox.Show("Error: " + ex.Message);

finall



if(con.State!=ConnectionState.Closed

con.Close()









El problema que tengo es que cuando doy clic en el botón para q cargue los datos no carga nada de datos a pesar de q esta función ya estoy llamando en el botón ayúdame no c que pasa… Gracia

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
andrelolu
2005-12-16 16:51:47 UTC
Permalink
Hola por favor necesito ayuda de nuevo, ya cree el dataset tipado y y le asigne a un nuevo está así



private void llenar_datosr(







string cadenaConexion = ConfigurationSettings.AppSettings["conpath"].ToString()

OleDbConnection con = new System.Data.OleDb.OleDbConnection(cadenaConexion);

string consulta="SELECT *FROM [proyecto] where proynom='" + this.comboBox1.SelectedText+"'";







tr

{ OleDbDataAdapter da=new OleDbDataAdapter(consulta,con)

con.Open()

Dataset1 dt = new Dataset1()

da.Fill(dt)

CrystalReport4 rel = new CrystalReport4()

rel.SetDataSource(dt)

this.crystalReportViewer1.ReportSource = rel

rel.Refresh()



catch(Exception ex){MessageBox.Show("Error: " + ex.Message);

finall



if(con.State!=ConnectionState.Closed

con.Close()









El problema que tengo es que cuando doy clic en el botón para q cargue los datos no carga nada de datos a pesar de q esta función ya estoy llamando en el botón ayúdame no c que pasa… Gracia

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
Eduardo Alvarado Meza
2005-12-17 03:57:02 UTC
Permalink
Hola andrelolu, lamento no haberle dado seguimiento a tu problema, pero es
que no he podido conectarme, dejame chequear y lo mas seguro es que te haga
un demo para que lo descargues y lo mires correr, no desespere voy a verlo
ahora mismo..... no vemos
Eduardo Alvarado Meza
2005-12-17 04:43:20 UTC
Permalink
Realmente creo que tu problema esta en tu Fill, y no esta llenando, pero a
como te PROMETI aqui esta el demo que te hize y salgas de ese embrollo ya que
me da pena que aun no hayas logrado solucionar con lo que te dije y mala onda
dejarte colgado. Lamentablemente esta en VB.Net porque no tengo el C#, pero
como todo es igual no creo que tengas fallas.

El URL para que lo bajes:
http://www.ibw.com.ni/~eduardom/CrystalConDataSet.zip

Suerte ..........
andrelolu
2005-12-20 15:38:25 UTC
Permalink
Hola eduardo te cuento que no puedo abrir el archivo me sale que la pagina no está habilitada... te cuento que ahora ya me llena el reporte pero tengo otro problema: Mira mi base tiene 3 tablas relacionadas entre si, para llenarlas tengo u formulario por cada una, pero hay un problema que si yo no lleno una de esas tablas en el formulario pero las otras tablas están llenas, cuando voy a visualizar el reporte me sale como que no he ingresado nada en las tablas sale todo el reporte en blanco ese error no me debería dar porque igual deberían aparecer los datos de las tablas nos e que está mal ayúdame con esto te mando el código d como estoy llenando

private void llenar_datosr(


string cadenaConexion = ConfigurationSettings.AppSettings["conpath"].ToString()
OleDbConnection con = new System.Data.OleDb.OleDbConnection(cadenaConexion);
string consulta2="SELECT *FROM [unidad]"
string consulta="SELECT *FROM [proyecto] where proycod=" + this.comboBox1.SelectedValue.ToString();
string consulta1="SELECT *FROM [resultados] where proycod=" + this.comboBox1.SelectedValue.ToString();
tr

OleDbDataAdapter da=new OleDbDataAdapter(consulta,con)
con.Open()
Dataset1 dt = new Dataset1();
da.SelectCommand.CommandText=consulta2
da.Fill(dt.unidad)
da.SelectCommand.CommandText=consulta
da.Fill(dt.proyecto)
da.SelectCommand.CommandText=consulta1
da.Fill(dt.resultados);
CrystalReport4 rel = new CrystalReport4()
rel.SetDataSource(dt)
this.crystalReportViewer1.ReportSource = rel
rel.Refresh()

catch(Exception ex){MessageBox.Show("Error: " + ex.Message);
finall

if(con.State!=ConnectionState.Closed
con.Close()



No c q es lo que está mal por favor ayúdame con esto.... Xq x lo menos deberían aparecer los datos que he llenado... Gracias..

--
andrelolu

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
trivet
2005-12-21 10:29:04 UTC
Permalink
Sabeis como puedo canviar mediante código la conexión de la base de datos del un reporte del crystal
Tengo una bdd SQLSERVER en dos servidores diferentes, una en local y otra en un server, el reporte lo diseño a partir de las tablas de mi local, luego por código quiero decirle que utilice las tablas i la dirección del otro servidor es posible
Algo así como

m_crReport.Database.LogOnServer("crdb_ado.dll", "", "", "", "", , "cadena"

dim crxDT As CRAXDRT.DatabaseTabl
For Each crxDT In crReport.Database.Table
crxDatabaseTable.SetTableLocation("xxx","xxx","xxx"
nex

--
trivet

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.htm

Enviado desde http://www.softwaremix.net
Samir Saavedra
2005-12-21 14:37:02 UTC
Permalink
Sabeis como puedo canviar mediante código la conexión de la base de datos del un reporte del crystal.
Tengo una bdd SQLSERVER en dos servidores diferentes, una en local y otra en un server, el reporte lo diseño a partir de las tablas de mi local, luego por código quiero decirle que utilice las tablas i la dirección del otro servidor es posible.
m_crReport.Database.LogOnServer("crdb_ado.dll", "", "", "", "", , "cadena")
dim crxDT As CRAXDRT.DatabaseTable
For Each crxDT In crReport.Database.Tables
crxDatabaseTable.SetTableLocation("xxx","xxx","xxx")
next
--
trivet
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-464527.html
Enviado desde http://www.softwaremix.net
de esta forma lo hago
Dim myTable As CrystalDecisions.CrystalReports.Engine.Table
Dim myLogin As CrystalDecisions.Shared.TableLogOnInfo
Dim Reporte As New Reporte1


For Each myTable In Reporte.Database.Tables
myLogin = myTable.LogOnInfo
myLogin.ConnectionInfo.Password = "password"
myLogin.ConnectionInfo.UserID = "usuario"
myLogin.ConnectionInfo.ServerName = "servidor"
myLogin.ConnectionInfo.DatabaseName = "bd"
myTable.ApplyLogOnInfo(myLogin)
Next

Loading...