Anda di halaman 1dari 17

Hacer Crystal Report con DataSet en Visual Basic.

NET « Jotask8punk’s Weblog Página 1

Jotask8punk’s Weblog

Just another WordPress.com weblog

Hacer Crystal Report con DataSet en Visual Basic.NET

i
28 Votes

Hola amigos, hoy les traigo aquí una forma bien sencilla de hacer reportes con crystal report en Visual Basic, la forma que utilizaré no es la más óptima pero en las diferentes formas que he hecho reportes con
Crystal Reports si es la que más facilidad me ha dado.

Como ya les dije la forma que utilizo no es la más óptima debido a que utilizo métodos algo pesados para traer los datos, espero en el futuro hacer un post más en la que lo haga con procedimientos almacenados o
alguna otra forma más eficaz que la que pondré a continuación.

Lo siguiente sirve en muchos casos para proyectos pequeños de la universidad, a pesar de que utlizaré Visual Studio 2008 esto sirve muy bien para Visual Studio 2005 también, asi que comencemos:

1.- Procederé a crear un proyecto en Visual Basic 2008, con el Framework 2.0, y le pondré de nombre EjemploReporteCrystal, obviamente si ya tienen el proyecto creado no deben de hacerlo.

2.- Después lo que hacemos es insertar un DataSet de nuestra base de datos, si no sabes como hacerlo da clic aquí (http://jotask8punk.wordpress.com/otras-tecnologias/como-crear-un-enlace-con-nuestra-bd-ya-
.

3.- Luego de eso agregamos un nuevo elemento, para esto damos clic derecho en nuestro proyecto –> Agregar –> Nuevo Elemento.

4.- Tendremos un formulario como el siguiente en donde escogeremos la opción de la izquierda, seleccionamos Reporting –> Seleccionamos ahora Crystal Report –> Le ponemos un nombre –> y damos clic en
Adjuntar.

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 2

5.- Ahora lo que veremos será un wizard o ayudante que nos permitirá crear un reporte de manera sencilla, deberán entonces de ver una imagen como la siguiente y darle clic en ok. Dejen las opciones tal como las
tengo en mi imagen.

6.- Lo siguiente es escoger de donde sacaremos los datos que mostraremos, para esto en la siguiente pantalla que se les mostrará que deberá ser como la imagen que coloco abajo, ustedes deberán escoger Datos del
Proyecto –> ADO.NET DataSets –> EjemploReporteCrystal.BD_EjemploProcedimientosDataSet (Este es mi dataset que puse enante, entonces aquí colocan el de ustedes) –> y escogen las tablas que utilizarán en su
reporte, en mi caso escogí 2, ya que utilizaré datos de las 2 tablas –> Presionamos el boton “>” para cada tabla que queramos utilizar en el reporte y una vez hecho esto damos en siguiente.

7.- En la siguiente pantalla veremos como están relacionadas las tablas, no hay practicamente nada que explicar asi que damos clic en siguiente.

8.- Ahora en esta pantalla siguiente si hay que poner asunto, porque es aquí en donde diremos que campos de que tablas y en qué lugar los queremos en nuestro reporte, entonces vemos como tengo mis 2 tablas y
escojo los datos que necesito de las 2, sin preocuparme de como estén relacionadas ni nada por el estilo, como ven en esta parte lo que hago es darle sentido a la forma de presentar mis datos.

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 3

9.- Luego de esto vendrán ciertas opciones como la que utilizaré a continuación que es de agrupar los datos en un cierto orden, y la forma que escogi de agruparlos es por géneros iguales, esto lo hago especificando
en la parte de agrupamiento qué campo es el que quiero agrupar.

10.- Lo que sigue son más opciones como les dije, pero en este momento yo ya le di en finalizar, ya que no necesito hacerle más cosas a mi reporte, por ahora. Luego de dar clic en finalizar tendré una imagen como
la que está abajo, la parte que tengo tachada es una parte que no quiero mostrar en ejecución por tanto para ocultarlas les damos clic derecho en la parte gris y al desplegarse un menú de opciones seleccionamos
ocultar.

11.- Bien ahora regresamos y abrimos nuestro form, y buscamos nuestro origen de datos, si no lo vemos por ahi, damos clic en el menú de Visual Studio en la opción de Datos –> Seleccionamos ver Origenes de
Datos y listo, tendrán que poder ver su dataset con las tablas al lado como en la imagen. Pero bueno lo que debemos hacer con esto es arrastrar esas 2 tablas a mi formulario, y esto para qué es? pues es para
colocar esos controles que ven abajo junto con el dataset que están encerrados en el rectángulo verde, son controles que ya vienen cargados con datos necesarios y que no tendremos que ponerlos nosotros, por
ejemplo ruta de la base de datos o metodos de conexión y desconexión, etc.

12.- Después de poner esas tablas las sacamos junto con la barra que se pone en la parte superior, y deberá quedarnos tener algo como lo que sigue.

13.- Luego de lo que hicimos vamos a la caja de herramientas y buscamos un control llamado CrystalReportViewer, lo arrastramos y colocamos en el formulario, este control será el que nos permita vizualizar
nuestro reporte hecho anteriormente.

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 4

13.- Luego de lo que hicimos vamos a la caja de herramientas y buscamos un control llamado CrystalReportViewer, lo arrastramos y colocamos en el formulario, este control será el que nos permita vizualizar
nuestro reporte hecho anteriormente.

14.- Entonces una vez hecho esto damos doble clic en el borde del form para entrar al metodo load del mismo y poner el codigo que sigue a continuación. Aclarando un poco sobre ese código, lo que hacen las 2
primeras líneas es filtrar los datos de las tablas indistintamente si están relacionadas, las otras 3 líneas sirven para cargar nuestro reporte en el reportviewer que pusimos en el form, para esto cree un objeto llamado
rpt del reporte(), que fue mi reporte que creamos hace rato, y en su propiedad SetDataSource le envie el dataset del proyecto que obviamente ya tiene los datos filtrado gracias a las 2 líneas primeras, por último
mande a cargar este reporte al control del form con su propiedad ReportSource.

15.- Luego de esto si lo ejecutan deberán ver algo como esto.

16.- Ahora abramos el DataSet para crear algo extra, a continuación lo que haremos es crear un método que nos filtree solo los datos de las personas de género masculino. Para esto demos doble clic sobre el dataset
o clic derecho y Open.

17.- Damos clic derecho sobre la tabla en la que crearemos el filtro –> Adjuntar –> Query.

18.- Lo que haremos a las siguientes 2 pantallas es simplemente darles clic en siguiente.

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 5

19.- Luego tendremos esto y lo que haremos es agregar otra tabla para relacionarla con la actual, para esto damos clic derecho en la parte blanca al lado de la tabla y en las opciones que se despliegan seleccionamos
Adjuntar Tabla.

20.- Ya que nuestra Base de Datos solo posee 2 tablas solo podremos escoger 1, que es la tabla TGenero que es la que no tenemos puesta, la seleccionamos y damos clic en Adjuntar y luego en Cerrar.

21.- Como vemos a continuación ya nos aparece la tabla que agregamos relacionada con la primera que teniamos, esto es debido a que ya desde que las creamos hicimos esta relación; lo que sigue el como se ve en
la imagen poner en la parte del medio o directamente en el query que necesitamos de la tabla TGenero el campo nombre_genero y que este nos servirá como filtro, por eso colocamos en la parte de filtro la palabra
=@nombre_genero (mailto:=@nombre_genero) además debemos de sacar este campo de área Select, ya que si lo dejamos ahí no nos mostrará datos en nuestro reporte, o por lo menos eso es lo que me ha sucedido
en la práctica, porque si lo ejecutamos en ese instante con el botón Execue Query si funciona normalmente pero con el Crystal Report encontre esa falla.

22.- Ya al haberle dado clic en OK debe de presentarnos la siguiente imagen en la cual veremos ya hecha nuestra sentencia query de consulta, damos clic en siguiente para continuar.

23.- Ahora le pondremos un nombre tanto en la parte donde dice Fill a DataTable como en Return a DataTable, damos clic en siguiente.
http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11
Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 6

23.- Ahora le pondremos un nombre tanto en la parte donde dice Fill a DataTable como en Return a DataTable, damos clic en siguiente.

24.- Lo que viene es que ejecutará lo que hicimos en el DataSet y guardará los cambios, solo le damos clic en Finalizar.

25.- Ahora en el código modificaremos la línea que hacia el filtro en la tabla TPersona, en mi caso la puse como comentario, y coloqué la que cree recién, pueden ver que después del DataSet le pongo una coma y le
envio un parámetro, esto es debido a que en mi query le puse el @nombre_genero, entonces por cada parámetro así que pongamos en el query que hicimos debemos enviarlo aquí es esa línea después del DataSet
en el orden que nos lo pide la instrucción; en ese código yo puse la opción masculino directamente, si nosotros la colocaramos o escogieramos desde un textbox o un combobox este sería el que pondríamos ahí con
su propiedad text.

26.- Ya lo que queda es ejecutar la aplicación y podremos ver que solo nos filtrará los datos de las personas de género masculino.

Bueno con eso he finalizado este pequeño manual de cómo hacer un Crystal Report en Visual Basic.NET, espero les haya sido de ayuda y ahí me cuentan que tal les fue, hasta, a2.

66 respuestas

26 11 2009
Josue (03:04:14) :

i
Rate This

Hola J, qué hay? está chevere este manual, gracias, sin duda me servirá de mucho, saludos…

Responder
26 11 2009
José Mendoza (03:07:15) :

i
Rate This

Hola, pues la idea es esa de que sirva de algo jeje, cualquier duda hay ayudo en lo que pueda…

Responder
1 11 2011
Maikel (19:39:06) :

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 7

i
Rate This

Bendiciones, varon horita estoy realizando un programa sencillo.. pero me he visto cmplicado en hacerlo. es programa q reguistre empleados y que capture la fechas q los empleados entre a la empresa . y si el
empleado falta mas de 3 veses el sistema los coloque cm observacion u suspenda… hay q realizarlo en visual basic 2008 .. mi nombre es maikel espero tu respuesta este es mi msn maikel_yeshua10@hotmail.com

2 11 2011
José Mendoza (00:59:56) :

i
Rate This

Hola, disculpa pero no entiendo que necesitas… o que respuesta necesitas…

29 12 2009
Jame (06:20:13) :

i
Rate This

Jota… seria mejor que pusieras mas explicito el codigo… aunque con lo que se sabe de programacion pasa super piola el manual…

Responder
10 04 2010
SERGIO (23:33:59) :

i
Rate This

QUE BUEN MANUAL!! ME SACO DE UN APURO DE UN SISTEMA DE FACTURACION QUE ESTOY CREANDO

SALUDOS!! JOSE MENDOZA

Responder
24 04 2010
José Mendoza (01:38:07) :

i
Rate This

hola q weno q t sirviera, en realidad ahora manejo un modelo mas sencillo y más óptimo para hacer eso, pero no he podido postear nada en meses x el poco tiempo q he tenido, espero en unos meses poder
postear otra vez como antes y hacerlo con las nuevas cosas q he aprendido… saludos y a2.

Responder
13 05 2010
Erika Mejia (16:26:59) :

i
Rate This

Hola Jota esta muy bueno este manual explica todo… orita m sirve xq estoy interasada en aprender todo esto graciasss…

Responder
27 05 2010
heiner (16:07:06) :

i
Rate This

Hola Jota, primero te felicito por que el manual esta bastante detallado, lo segundo es para realizarte una consulta, resulta ser que estoy realizando reportes casi de emergencia por medio de datasets pero de
dos bases de datos (Oracle, SqlServer), los datasets trae querys de Oracle y Sql Server , se unen en el dataset y se genera el reporte ademas, al cargar los datasets le paso la información de conexión de la base de
datos, he llegado a nivel de pasar la contraseña y usuario de la base de datos de las tablas del crystal , pero aun me da el siguiente error:

“El informe solicitado requiere información adicional.”

Server Dataset1
Base de datos :
Usuario:
Contraseña:

Código de Ejemplo de asignar la conexion por tablas que estoy realizando.

Dim myTables As Tables = myReportDocument.Database.Tables


For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
If myTable.Name = “tabla1″ Or myTable.Name = “tabla2″ Then
myTableLogonInfo.ConnectionInfo = MyCnxOracle
Else
myTableLogonInfo.ConnectionInfo = MyCnxSqlServer
End If
myTable.ApplyLogOnInfo(myTableLogonInfo)
Next
Saludos y espero que tengas una idea que me pueda ayudar
cualquier cosa te dejo mi correo heinergc@hotmail.com

Responder
http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11
Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 8

Responder
13 09 2010
Cesar Guillen (17:39:23) :

i
Rate This

Hola, excelente manual. Pero estoy teniendo un problema con el crystal report. Lo Detallo a continuacion.

Estoy desarrollando en vb.net 2008 con windows form. He hecho varios reportes con crystal utilizando dataset. en la pc de desarrollo todo funciona de maravilla, todas las conexiones que uso son de trusted_
connection, pero en una pc de pruebas con el ambiente de produccion, al ejecutar el reporte en la aplicacion, el crystal report siempre me pide usuario y contraseña, me muestra una ventana donde sale
“ServerName” mostrando el nombre del datset, otro campo “Database” que va en blanco y por supuesto los campos usuario y contraseña.

Si estoy utilizando un dataset, porque el crystal me pide esta informacion ?


De que forma puedo hacer que no me lo pida ?

En foros he visto la instruccion: Reporte.SetDatabaseLogon(usr, pwd), pero en mi caso al usar dataset y en el llenado del dataset usar trusted_connection, no veo logico que me pida estos datos.

Gracias de antemano.

Responder
14 09 2010
José Mendoza (03:20:58) :

i
Rate This

hola, gracias por leer mi blog, la verdad este post sobre como crear un crystal reports lo cree hace ya un par d años, pero actualmente para aplicaciones que desarrollo utilizo la misma cadena de conexion que
uso para las transacciones de la aplicacion, entonces creo un metodo que usa esta cadena de conexion y lee un procedimieto almacenado de lectura (algo como select id, nombre, apellidos, edad from
CLIENTES), entonces obviamente yo se que me devuelve una tabla y esa consulta la guardo en un datatable que retorno desde mi funcion, creo un dataset tipado (ya no un dataset como lo puse en mi post) y le
doy los mismos nombres y los mismo tipos de datos y en la misma posicion que me devuelve mi procedimiento almacenada, entonces una vez armadas esta cosas lleno mi dataset tipado con el datatable y
mando ese dataset a mi crystal reports que hice en base a mi dataset tipado, de esta forma si tu aplicacion funciona en una makina de produccion pero no los reportes al utilizar la misma cadena de conexion
para los reportes debe d funcionarte.

Jejeje, espero me hayas entendido pero con el trabajo en cima no he tenido muxo tiempo d detallartelo mejor, saludos y espero que lo logres. a2.

Responder
17 01 2011
Luis Carrizo (19:19:48) :

i
Rate This

hola Jose !!! muchísimas gracias por tus aportes!!! Quisiera preguntarte si es que puedes pasarme mas detalles de como utilizar un dataset tipado.

4 10 2010
German Morales (00:52:35) :

i
Rate This

Hola, gracias por el manual, esta bastante practico…


Pero quiero hacerte una consulta.

Estaba tratando de hacer un reporte que presente cierto conjunto de datos entre dos fechas (rangos de fechas), utilizando tu ejemplo con filtros

SELECT visita.tiempo_max, visitante.nombre_visitante, empleado.nombre_empleado, visita.fecha


FROM ((empleado INNER JOIN
empleado_visitante ON empleado.cod_empleado = empleado_visitante.cod_empleado) INNER JOIN
((visita INNER JOIN
visitante_visita ON visita.cod_visita = visitante_visita.cod_visita) INNER JOIN
visitante ON visitante_visita.cod_visitante = visitante.cod_visitante) ON empleado_visitante.cod_visitante = visitante.cod_visitante)
WHERE (visita.fecha BETWEEN visita.fecha AND visita.fecha)

pongo en el campo filter… @fecha

pero tengo el problema de que cuando voy a llenar el tableadapter con el


fillbyfecha (datatable, fecha1,fecha2), no esta definido.

Has hecho algo similar?

de antemano gracias por tu generosa ayuda…

Responder
4 10 2010
José Mendoza (02:15:04) :

i
Rate This

hola creo si he hecho lo q me dics, mmm si estas haciendo el query en el query builder del visual studio debes ponerle en el where de la siguiente manera WHERE (visita.fecha BETWEEN @fecha1 AND @fecha2)
, de esa manera te establecerá que espera los 2 parámetros de fechas, el primero como inicial y el segundo como final, espero eso sea lo q me preguntabas, y gracias x pasarte por mi blog, suerte y a2.

Responder
4 10 2010
German Morales (16:54:49) :

i
Rate This
http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11
Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 9

Rate This

Saludos josé y gracias por responder tan pronto.


Fijate que tomé tu consejo pero le he dado varias modificaciones y todavía no doy.

Efectivamente, estoy usando el querybuilder de vs.net.

Al escribir la consulta de esta forma: WHERE (visita.fecha BETWEEN @fecha1 AND @fecha2)
se genera error porque las @fecha1 y @fecha2 deben de ir asi: WHERE (visita.fecha BETWEEN ‘@fecha1′ AND ‘@fecha2′)
entre comillas simples.
Cuando hago esta variante, la columna donde se especifica el campo que servirá como filtro
(filter), lo escribe como BETWEEN ‘@fecha1′ AND ‘@fecha2′, no se define un único valor.

No sé si el error se deba al especificar no un valor en el filter sino varios…porque en tu ejemplo unicamente utilizas
@nombre_genero.

Después de esto, vuelvo al dataset, a la tabla para modificar sus parametros y aparece sin ellos en la definicion:
fillbyfecha()… y debería generar fillbyfecha(@fecha1,@fecha2).

Muchas gracias José, saludos desde Nicaragua.

Responder
4 10 2010
José Mendoza (18:11:16) :

i
Rate This

hola, acabo de enviarte un mail con un adjunto de ejemplo de un query con rango de fechas, espero te sirva, ahi me cuentas, a2.

Responder
22 03 2011
ana (19:17:28) :

i
Rate This

Hola… oye nose si me puedas ayudar tengo el mismo porblema q plantean con las fechas y me salen los mismo errores q plantean…

Al escribir la consulta de esta forma: WHERE (visita.fecha BETWEEN @fecha1 AND @fecha2)
se genera error porque las @fecha1 y @fecha2 deben de ir asi: WHERE (visita.fecha BETWEEN ‘@fecha1′ AND ‘@fecha2′)
entre comillas simples.
Cuando hago esta variante, la columna donde se especifica el campo que servirá como filtro
(filter), lo escribe como BETWEEN ‘@fecha1′ AND ‘@fecha2′, no se define un único valor…

me puedes ayudar… ya estuve revisando varias cosas y la verdad q no encuentro la solucion….

4 10 2010
German Morales (19:05:29) :

i
Rate This

José, te escribi a tu correo por lo de tu ejemplo

Responder
5 10 2010
JC (23:24:22) :

i
Rate This

Hola, esta bonito el manualito, pero este aplica si alguien quiere trabajar con controles visuales, yo lo programa de forma manual, sin embargo, en un reporte, invoco otro subreporte (especificamente en el
encabezado) y al inyectarle los parametros de la siguiente forma :

string strAppDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);


ReportDocument cryRpt = new ReportDocument();

try
{
cryRpt.Load(strAppDir + “\\RptCorte.rpt”);
cryRptView.ReportSource = cryRpt;
cryRpt.SetParameterValue(“@Opcion”, 1);
cryRpt.SetParameterValue(“@Store_Code_Id”, Convert.ToInt32(GrdSucursales.Rows[GrdSucursales.CurrentRow.Index].Cells[0].Value).ToString());
cryRpt.SetParameterValue(“@Cais”, Convert.ToInt32(GrdCajas.Rows[GrdCajas.CurrentRow.Index].Cells[0].Value).ToString());
cryRpt.SetParameterValue(“@FechaInicial”, dtFechaInicio.Value.Date);
cryRpt.SetParameterValue(“@FechaFinal”, dtFechaFin.Value.Date);
}//try
catch (Exception error)
{
// Let the user know what went wrong.
MessageBox.Show(“ERROR ” + error.Message, “Problema en generar el Reporte : RptCorte.rpt”);
}//try

Capturo sin problema el valor de la opcion, Store_Code_Id, Cais, FechaInicial, FechaFinal, y cuando quiero generar el reporte, me pide de nuevo que introduzca los parametros, pero el chiste es que el usuario no
los este metiendo de forma manual, que puedo hacer ?????

Gracias.

Responder
6 10 2010
José Mendoza (02:41:22) :

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 10

i
Rate This

hola que weno que te haya sido de utilidad mi post, sobre tu problema pues 2 observaciones o por lo menos diferencias que encuentro respecto a como yo escribo el codigo para parametros de reportes, yo no
les pongo el arroba (@), y el ReportSource lo pongo despues de asignar los parametros, aunque kizas eso no influya, pero en resumen yo lo escribo asi:
…..
rpt.SetParameterValue(“OrdenTrabajo”, listaCab(1))
rpt.SetParameterValue(“CodBarco”, listaCab(2))
rpt.SetParameterValue(“NomBarco”, listaCab(3))
rpt.SetParameterValue(“Viaje”, listaCab(4))
visor.ReportSource = rpt

entonces kizas el arroba no es necesario y x eso no te toma en cuenta esos valores y te los vuelve a pedir, espero te haya ayudado, suerte, a2.

Responder
6 10 2010
JC (14:30:00) :

i
Rate This

Gracias por responder.

Te comento que realizando tu observacion, si no agrego el simbolo “@” al final siempre me pide los parametros, pero por el momento solo los de la fecha me pide de nuevo, los otros parametros me los acepta
sin problemas, sera que acaso las fechas se inyectan de otra forma ????

6 10 2010
José Mendoza (16:58:48) :

i
Rate This

hola, mmm weno sobre las fechas igual les kito el @, pero los envio de otra forma, diferente a la tuya, los envio así rpt.SetParameterValue(“FechaInicial”, date.parse(dtFechaInicio.text));.
Yo los envío así siempre y cuando la variable en el crystal este definida como tipo date, porque si no está definida como date simplemente pongo los mismo aumentando el toString() al final, osea así:
rpt.SetParameterValue(“FechaInicial”, date.parse(dtFechaInicio.text).toString());.

Pruebalo y nos cuentas que tal te fue, a2.

Responder
6 10 2010
José Mendoza (21:49:30) :

i
Rate This

hola, puedes decirme que error es o que dice el error???.

Responder
8 10 2010
José Mendoza (03:17:42) :

i
Rate This

hola, disculpa fue mi error, como estas en c# no encontraras date sino datetime, me ekivoke con vb, prueba con datetime.parse…

Responder
9 10 2010
José Mendoza (19:13:24) :

i
Rate This

hola, sabes yo escribo el reportSource despues de asignar todos los parametros, no se si eso te estará afectando en el reporte, intenta ponerlo como en mi ejemplo después que asignast todos los parámetros, si
el arroba, xq asi me funciona…

Responder
11 10 2010
JC (23:17:43) :

i
Rate This

Hola, pues me sigue apareciendo lo mismo, siempre me pide los parametros, pero descubri algo mas, lo fui ejecutando paso a paso, y al llegar al parametro en donde asigno las fechas, el try me tira un error, y
es aca donde me pide los parametros de forma manual, al introducirlos todos me genera el reporte y el catch tira el siguiente error : “ERROR El indice no es valido. (Excepcion de HRESULT: 0x8002000B (DISP_
E_BADINDEX))” y no se si esto puede servir de pista para encontrar la solucion, ya que busco y no encuentro algo que me solucione.

12 10 2010
José Mendoza (02:51:48) :

i
Rate This

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 11

Rate This

una pregunta antes q todo, para estar seguro, el tipo de datos de fecha en el crystal reports si es fecha verdad???, la verdad no se q otra solucion darte tendria q verlo yo mismo para probar y ver q pueda ser, xq
en la forma como yo t dije q lo hacia debe funcionar a menos q alguno d los tipos d datos no este correcto o se pierda… disculpa ya no se m ocurre q mas pueda ser, pero si kieres te ayudo a probarlo, no se q tan
rapida sea la conexion para hacer un escritorio remoto con teamviewer o sharedview, si es q los manejas para ayudarte remotamente…

6 10 2010
JC (20:45:52) :

i
Rate This

pues al adicionar la linea date.parse antes del valor de la fecha, me tira error, debes declarar otra libreria entes ???? , y si quito el simbolo de arroba, tengo que agregar los parametros de nuevo, pero de la
interfaz del usuario.

Responder
9 10 2010
JC (19:02:04) :

i
Rate This

hola de nuevo
pues no me funciona aun, y cuando tu colocas el parametro sin la arroba es cuando manda un valor que quieras que salga en el reporte, y con la arroba es un parametro que inyecto al procedimiento almacenado
que ejecuta el reporte, y como te digo, tengo que ponerlos de nuevo desde la aplicacion.

Responder
7 10 2010
JC (14:45:39) :

i
Rate This

El error que muestra es :


el nombre “date” no existe en el contexto actual

Que crees que pueda ser ????

Responder
9 10 2010
German Morales (13:17:46) :

i
Rate This

Hola José, espero estes bien… te comento que no he podido abrir la BD_EjemploProcedimientos.mdf, recordas, hay un error de apertura , tengo sqlser ver 2000 y 2005 y no abre. sigo con aquello de presentar un
reporte por intervalos de fechas… mas adelante te comento…

Responder
9 10 2010
German Morales (13:22:06) :

i
Rate This

Mi pregunta jose por no poder ver BD_EjemploProcedimientos.mdf, como es que definis en el querybuilder de vs, el filtro del campo fecha porque a como te comenté antes, en tu ejemplo definis el nombre
como @nombre pero al ser dos fechas en mi caso, no se definiria solamente como @fecha en el filter… sino @fecha, @fecha (no puedo poner @fecha1,@fecha2) porque la BD solo tiene el campo llamado fecha y en
el filter , segun ejemplos, solo se puede definir un filter por campo…

Responder
9 10 2010
German Morales (14:24:38) :

i
Rate This

luego de revisar el video , aparece un error: Error in WHERE clause near ‘@’.
Unable to parse query text. mi BD esta en access2007 y el campo fecha es text… sera por eso??? he estado probando y cambiando a tipo de dato datetime, pero nada, ni siquiera puedo ver la ventana donde
indicas los parametros @fecha1 @fecha2… aparece el mensaje ‘faltan parametros’… tengo ademas vb.net 2008 team system

Responder
9 10 2010
German Morales (14:25:03) :

i
Rate This

luego de revisar el video , aparece un error: Error in WHERE clause near ‘@’.
Unable to parse query text. mi BD esta en access2007 y el campo fecha es text… sera por eso??? he estado probando y cambiando a tipo de dato datetime, pero nada, ni siquiera puedo ver la ventana donde
indicas los parametros @fecha1 @fecha2… aparece el mensaje ‘faltan parametros’… tengo ademas vb.net 2008 team system, ya me fije que no indicas parametros a filter…!

Responder
9 10 2010
German Morales (14:36:42) :

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 12

German Morales (14:36:42) :

i
Rate This

Jose, que tipo de dato es fecha en tu BD BD_EjemploProcedimientos.mdf???

Responder
9 10 2010
German Morales (14:47:44) :

i
Rate This

jose… los parametros @fecha1 @fecha2, los que me decis que vs los toma como parametros exigidos, fijate que luego al ejecutar consulta no aparece la ventana donde precisamente vos estableces los parametros
de entrada para la consulta…

Responder
25 11 2010
yerson (02:06:49) :

i
Rate This

Doctor esta bien el manula, mas bien doctor cual sera tu correo para preguntarte algunas dudas que tengo.., saludos

Responder
13 01 2011
Dario (16:47:13) :

i
Rate This

necesito saber como hago para cambiar el sexo de un empleado que se guarda con “M” y lo quiero mostrar en el reporte como masculino por favor respondame lo antes posible

Responder
13 04 2011
Alexander (17:37:53) :

i
Rate This

Hola Dario… puedes editar espero aún te sirva.. puede editar la consulta SQL para ese cometido usando IF algo asi como esto
IF(tabla.sexo=’M',’Masculino’,'Femenino’) as ‘GENERO’

y en el reporte llamar ese campo GENERO

jeje espero te sirva de algo.

Responder
1 03 2011
martin rivas (01:16:07) :

i
Rate This

hola, tengo un situacion con mi sistema que estoy desarrollando por que al momento de ingresar contraseña y usuario quiero en el reporte que me visualeze informacion de la sesion como nombre del usuario,
para saber quien realizo el reporte(crystal report), ficha, espero me puedan ayudar. el programa esta e vb.net 2008

Responder
1 03 2011
José Mendoza (03:04:16) :

i
Rate This

hola Martin, mmm es simple primero q debes de cargar los datos del usuario en variables globales, x lo menos asi lo hago yo, ya sean los datos del usuario de dominio o de la propia aplicacion, no se como los
estes manejando, de ahi en el crystal reports definir variables y cuando abres el crystal reports les envias esos datos a las variables…

Responder
22 03 2011
Alexander (08:40:47) :

i
Rate This

Hola muchachos. Tengo un porblemota todo feo y me siento frustado por que no lo puedo solucionar. les comento, si me pueden ayudar.

Necesito meter un subreporte, use una parte de la tecnica posteada para crear los reportes y me va de maravilla, la unica vaina y problema es que no puedo meter un subreporte. uso procediemientos
almacenados y los reportes por separado funcionan sin problema pero cuando los quiero unir en un solo reporte no me funcionan, no estoy enviando nada de parametros pues ya los genero desde afuera de CR

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 13

Necesito meter un subreporte, use una parte de la tecnica posteada para crear los reportes y me va de maravilla, la unica vaina y problema es que no puedo meter un subreporte. uso procediemientos
almacenados y los reportes por separado funcionan sin problema pero cuando los quiero unir en un solo reporte no me funcionan, no estoy enviando nada de parametros pues ya los genero desde afuera de CR
a puro codigo.
solo quiero meterlos en el reporte general.
que puedo hacer???

necesito su ayuda por favor si alguien tiene idea agradeceria su ayuda.

Responder
22 03 2011
Alexander (09:10:12) :

i
Rate This

JEJE.. bueno muchachos ya encontre la respuesta…. era tan simple… nuuu XD

Responder
8 06 2011
orlandoraul (21:52:55) :

i
Rate This

Chochera necesito tu ayuda con rangos de fechas en el reporte

Responder
8 06 2011
orlandoraul (21:54:21) :

i
Rate This

por favor te lo agradeceria mucho si me ayudas con este gran detalles con los rangos de fecha en los reportes que deseo….
mi correo es rpachas@dm.pe

Gracias..
saludos..

Responder
22 06 2011
Richard Vizcaino (16:24:09) :

i
Rate This

Hola buen dia, les cuento que el manual esta muy bueno, lo probe para ver que tal y me parecio bien, pero tengo un pequeno problema el cual no he podido solucionar todabia, sucede que tengo unos reportes
en crystal report y vb.net y cuando lo pruebo con distintas conexiones de datos me funciona perfecto, la cuestion esta que cuando la pruebo desde otro pc, nada de nada, no logra conectarse al servidor, mientras
que las demas funciones del sistema estan perfectamente y se conectan con el servidor “vizcainor21@hotmail.com”

Responder
22 06 2011
José Mendoza (20:39:02) :

i
Rate This

Hola, si vas a las propiedades del dataset veras que hay dice la cadena de conexion que esta utilizando, lo mas seguro es que diga localhost, por eso no te conecta desde otro computador, cambia la palabra
localhost por el nombre de tu servidor o mejor dicho la ip donde esta alojada la base de datos.

saludos.

Responder
27 07 2011
luis sanchez (06:38:08) :

i
Rate This

hola gracias por ese manual la verdad he buscado mucho y nada me a servido hasta ahora

Responder
10 08 2011
Dany (03:25:13) :

i
Rate This

GRacias, los reportes de crystal reports me salian en blanco con los de visualbasic 10 no podia sacar datos de dos bases de datos y eso ya habia trabajado con los tableadapter y dataset de vb10, gracias a tu
aporte en el paso 15 solucionaste mi problema

Dim rpt_1 As New CrystalReport1


rpt_1.SetDataSource(NucleoDataSet)
CrystalReportViewer1.ReportSource = rpt_1

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 14

Dim rpt_1 As New CrystalReport1


rpt_1.SetDataSource(NucleoDataSet)
CrystalReportViewer1.ReportSource = rpt_1

GRACIAS:::::::::::::::) je je je je

Responder
23 09 2011
Jorge (16:10:24) :

i
Rate This

Estimado amigo: este informe me ha sido de mucha utilidad para mi trabajo, no obstante aun tengo una falla a la que no le encuentro solución. Cuando hago la consulta SQL y el pongo una condicion (p. ej.
CAMPO1 = 1 AND CAMPO2 > 1 ) es cierto que funciona cuando ejecutas el query en el Query Binder, pero luego no aparce nada en el Crystal Report.
Mucho agradeceria si pudieras darme una ayuda con esto. Saludos y gracias de antemano

Responder
24 09 2011
José Mendoza (02:33:50) :

i
Rate This

mmm no entendi muy bien, pero si no me equivoco te ha de faltar enviar los parametros como variables en el metodo… si me pones algo de codigo quizas lo entienda mejor.

Responder
28 09 2011
Jorge (01:42:25) :

i
Rate This

ya descubri el tema…… no se debe poner @nombreparametro en la consulta porque sino no funciona, en lugar de ello hay que colocar ?, es decir campozz = ? … y aasi funciona de 10 !!!! gracias de todas
formas…

Responder
28 09 2011
José Mendoza (02:27:31) :

i
Rate This

???? me parece muy raro, pero si te funciono asi chevere.

Responder
28 09 2011
Jorge (01:45:50) :

i
Rate This

Estimado José: De todas formas estoy muy agradecido porque el ejemplo que das funciona de maravillas. A pesar de ello aún me quedan dudas sobre el punto 11 de tu explicación, dado que es muy comodo y
practico para dos tablas, pero si tienes mas tablas y mas reportes para mostrar, puede transformarse en un embrollo. Hay algún otro mecanismo para ahcer lo mismo.
Gracias, Jorge

Responder
28 09 2011
José Mendoza (02:39:08) :

i
Rate This

Pues bueno, la verdad deje de usar mucho de eso hace tiempo, lamentablemente ahora no tengo tiempo suficiente para mantener el blog, pero no lo quito porque veo que aun sigue sirviendo, como lo hago
ahora, pues de manera rapida utilizo dataset tipados, en que ayudan? pues en mucho con eso puedo utilizarlo para tener reportes de crystal con sql, postgresql o cualquier otro motor de base de datos sin
necesidad de depender de la tecnologia microsoft, la base es hacer un query y ejecutarlo en un metodo, ejemplo (lo siguiente funciona con postgres pero con sql es lo mismo solo cambia un poco):
public DataTable Produccion_Poliza(string where)
{
DataTable t = new DataTable();
BaseDatos miBD = new BaseDatos();
miBD.Conectar();
miBD.ComenzarTransaccion();
miBD.CrearComando(“select p.id_poliza, p.codigo_poliza, c.nombre as nombre_asegurado, p.vigencia_fecha_desde as vigencia_desde, p.vigencia_fecha_hasta as vigencia_hasta, p.num_poliza as numero_
poliza, s.id_ramo, s.nombre as seguro, s.codigo as cod_seguro, cs.nombre as compania_seguro, p.prima_neta as prima_neta, p.porcentaje_comision from ” + c + “TCliente” + c + ” as c inner join ” + c + “TPoliza”
+ c + ” as p on c.id_cliente=p.id_cliente inner join ” + c + “TDetSeguro” + c + ” as ds on ds.id_det_seguro=p.id_det_seguro inner join ” + c + “TSeguro” + c + ” as s on ds.id_seguro=s.id_seguro inner join ” + c +
“TCompaniaSeguro” + c + ” as cs on cs.id_compania=ds.id_compania inner join ” + c + “TRamo” + c + ” as r on r.id_ramo=s.id_ramo ” + where);
Npgsql.NpgsqlDataReader dr = miBD.EjecutarConsulta();
if (dr.FieldCount > 0)
{ t.Load((System.Data.IDataReader)dr); }
miBD.ConfirmarTransaccion();
miBD.Desconectar();
return t;
}

Como ves en el query me halo datos de varias tablas, en una consulta especifica para lo que necesito, acto seguido hago un dataset tipado con un datatable para que reciba el resultado de esto, ejemplo:
Dim mtRPT As New MRPolizas()
Dim miT As New DataTable()
miT = mtRPT.Produccion_Poliza(where)
http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11
Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 15

miT = mtRPT.Produccion_Poliza(where)
Dim ds As New ds_produccion_polizas()
For Each poli As DataRow In miT.Rows
…..
…..
ds.dt_Produccion.Adddt_ProduccionRow(poli.Item(“nombre_asegurado”), CDate(poli.Item(“vigencia_desde”)), CDate(poli.Item(“vigencia_hasta”)), poli.Item(“numero_poliza”), CInt(poli.Item(“id_ramo”)),
poli.Item(“seguro”), poli.Item(“cod_seguro”), poli.Item(“compania_seguro”), CDbl(poli.Item(“prima_neta”)), valorHaber, facturas, valorDebe, fechasfacturas)
Next

Dim rpt As New cr_ProduccionPoliza()


rpt.SetDataSource(ds)
visor.ReportSource = rpt

Aqui en eso ultimo podia obviarme el for each, pero antes de la linea de agregar los datos hago una manipulacion de los datos, por ese motivo lo hago asi y acorte un poco.

Y listo, en base asi lo hago actualmente ya que es mas flexible por asi decirlo.

Saludos, a2.

Responder
28 09 2011
Jorge (18:18:41) :

i
Rate This

Jose: Gracias por la aclaración que me has hecho, pero debo confesar que soy muy novato (en esto) y lo mio es solo un hobby y me llevara tiempo entender de que se trata… de todas formas un millon de
gracias.
Jorge- Argentina

Responder
4 10 2011
Jorge (22:50:18) :

i
Rate This

Jose, soy nuevamente jorge y queria consultarte sobre un tema de pasar los datos a un reporte pero no con data set…. donde te puedo escribir?

Responder
6 10 2011
José Mendoza (02:37:15) :

i
Rate This

hola Jorge, la verdad preferiria que cualquier duda la escribas aqui, y por este medio compartirla con los demas, casi no me gusta dar mi correo personal, asi que pro favor comentalo aqui en el blog.

Responder
6 10 2011
Jorge (22:04:12) :

i
Rate This

hola Jose… genial, entonces ahi va la duda, que es sobre el mismo tema de antes:

1)El reporte en cristal tiene cuatro campos (nombreusuario, codigousuario y nivelusuario) que salen de la Tabla USUARIO y el otro campo es nombreproceso que sale de la Tabla Proceso.

2)Las dos tablas están enlazadas por el campo numero de proceso

3)La instrucción Sql para seleccionar los datos es la siguiente:

” SELECT USUARIO.US_APELLIDO, USUARIO.US_NOMBRE, USUARIO.US_USUARIO, ” & _


” INFOPROC.PRO_NOMBRE, USUARIO.US_OPCIONES, USUARIO.US_NUMERO, USUARIO.US_ESTADO, USUARIO.US_COMPUESTO” & _
” FROM USUARIO INNER JOIN INFOPROC ON USUARIO.US_PROCESO = INFOPROC.PRO_NUMERO ” & _
” WHERE (USUARIO.US_NUMERO > ” + CStr(1) & ” AND USUARIO.US_ESTADO = ” + CStr(1) & “)”

4)Las instrucciones para leer los datos, llenar el dataset y llamar al reporte son estas:

Comando.CommandType = CommandType.Text
Comando.Connection = dbConectarBase
Dim Adaptador As New Data.OleDb.OleDbDataAdapter
Adaptador.SelectCommand = Comando
Adaptador.Fill(TablaDatos, “USUARIO”)
Dim MiReporte As New CrystalReport1
MiReporte.SetDataSource(TablaDatos)
Dim miForma As New Form1()
miForma.CrystalReportViewer1.ReportSource = MiReporte
miForma.Show()

5)El reporte se muestra bien si NO esta incluido el campo nombreproceso


6)Cuando se incluye este campo, en el reporte no se muestra ningún dato.

Podrias orientarme por donde anda la falla??

Mi idea es llenar una Tabla de Datos con los datos seleccionados y pasarlos al reporte, pero parece que se encapricha el muy jodido.

Grcias por tu aporte..

Muy bueno el blog…!!!!

Responder
8 10 2011
José Mendoza (03:27:54) :

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 16

i
Rate This

Hola, una duda la tabla del dataset, asumo es TablaDatos, posee esta columna que agregas? la de nombreproceso? cuando he tenido problemas que no me carga el reporte me ha sucedido que es porque no
escribi bien el query, para eso lo pruebo en el sql a ver si corre sin problemas; o porque en la tabla del dataset no esta la columna o con alguna diferencia en el nombre o tipo de dato diferente.

Puedes ponerle un breakpoint en Dim MiReporte As New CrystalReport1 y revisar si pasa de ahi, ya que si no es porque cuando llega ahi debe haber un problema con la llenada del dataset o de la ejecucion del
query.

Saludos.

Responder
12 10 2011
Jorge (00:50:41) :

i
Rate This

Hola José: Gracias por tu respuesta y te hago los comentarios en forma separada.
- La TablaDatos es la tabla del dataset
- La TablaDatos no tiene la columna nombreproceso (Como se incorpora? y dónde?)
- Corre bien hasta ese breakpoint y continua corriendo bien

Gracias

Responder
3 11 2011
DMR (18:09:33) :

i
Rate This

Definitivamente eres lo maximo.. me a servido de muxo.. gracias..

Responder
9 12 2011
sama (02:15:05) :

i
Rate This

jejejjeje quiero sabes como haces un cristal report en asp.net usando un data set y cual es el codigo para hacer la conexion y extraer las tablas de sqlserver2008

Responder
6 11 2011
Jorge (01:10:19) :

i
Rate This

Jose:

Aún no pude descubrir el error, puedes darme otra idea de como encarar la cuestion. Gracias

Responder
9 12 2011
sama (02:13:22) :

i
Rate This

apuesto a que te refieres que se puede hacer esto con una cadena de conexion con codigo??

Responder
10 01 2012
Alejo (02:35:39) :

i
Rate This

Hola amigo me puedes enviar este proyecto a ver si me guio ?? es q tengo un problema y no logro resolverlo…. Pasa q en el filtro coloco =@MiParametro y cuando le doy ENTER para guardar se guarda como
campo=? me sustituye mi filtro por un ‘?’ te dejo mi correo por fa necesito tu ayuda GRaciass!

Responder

Blog de WordPress.com. Tema: Freshy por Jide.

Seguir

Follow “Jotask8punk's Weblog”

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11


Hacer Crystal Report con DataSet en Visual Basic.NET « Jotask8punk’s Weblog Página 17

Follow “Jotask8punk's Weblog”

Powered by WordPress.com

http://jotask8punk.wordpress.com/vbnet-a-ponerse-en-net/hacer-crystal-report-con-dataset-en-visual-basic-net/ 25/07/2012 19:03:11

Anda mungkin juga menyukai