Introducción
Un problema frecuente cuando se usa Crystal Reports es el pasaje de información por medio de parámetros al reporte.
El uso de parámetros es un aspecto importante para la creación de reportes, y suele suceder que no es tan intuitiva, ni directa la forma en como se debe programar esta funcionalidad.
Definición del parámetro en Crystal
En este ejemplo se usara el parámetro como filtro de los datos del reporte, por lo tanto se creara en el mismo momento en que se define la información.
Para esto se usara la opción “DataBase Expert”:
En el cuadro de dialogo que se despliega, se deber crear una nueva conexión a la base de datos Access usada en el reporte:
Haciendo uso en este cuadro, no directamente la tabla mostrada, sino la opción “Add Command”, la cual permitirá definir una consulta personalizada.
Es por eso que desplegara el cuadro:
Y se definirá un parámetro mediante la opción de la derecha.
Solo queda definir la consulta, haciendo uso del parámetro:
Seguramente cuando se acepte el dialogo, mostrara el mensaje pidiendo el ingreso de un valor al parámetro creado, se puede ingresar un valor cualquiera, o simplemente aceptar.
En cualquier momento la consulta escrita podrá ser modificada.
Luego de arrastrar los campos al diseñador del Crystal, podría visualizarse algo como lo siguiente:
En el “Field Explorer” se puede inspeccionar tanto los campos de la consulta, como los parámetros definidos para el reporte.
Pasaje de parámetros desde código
Al momento de ejecutar la aplicación será necesario pasarle al reporte desde el código el filtro que se ha definido, sino se hace seguramente el propio Crystal desplegara un cuadro pidiendo el ingreso de un valor.
En el siguiente código se muestra como llevar a cabo esta operación:
private void Form1_Load(object sender, EventArgs e) { // // Creo el parametro y asigno el nombre // ParameterField param = new ParameterField(); param.ParameterFieldName = "CargoParam"; // // creo el valor que se asignara al parametro // ParameterDiscreteValue discreteValue = new ParameterDiscreteValue(); discreteValue.Value = "Developer"; param.CurrentValues.Add(discreteValue); // // Asigno el paramametro a la coleccion // ParameterFields paramFiels = new ParameterFields(); paramFiels.Add(param); // // Asigno la coleccion de parametros al Crystal Viewer // crystalReportViewer1.ParameterFieldInfo = paramFiels; // // Creo la instancia del reporte // crListado report = new crListado(); // // Cambio el path de la base de datos // string rutadb = Path.Combine(Application.StartupPath, "TestDb.mdb"); report.DataSourceConnections[0].SetConnection("", rutadb, false); // // Asigno el reporte a visor // crystalReportViewer1.ReportSource = report; }
[C#]
|
[VB.NET]
|
¡Hola Leandro! He tenido un problema con la creación de parametros desde que he instalado a Crystal 2010 hace 2 semanas. Ocurre que anteriormente el hacia la insercion de los parametros automaticamente y ahora no lo hace.
ResponderEliminarSolo logré exito despues de ver su matéria y la asignacion del formato obligatório '{?param}'.
Gracias por su ayuda!
Wagner Graciano
gracianow@msn.com
hola Wagner
ResponderEliminarMe alegro que haya resultado de utilidad el articulo.
saludos
Hola Leandro.. ya estoy un poco cansada tratando de hacer un reporte, sobre todo porque es muy 'sencillo', pero no veo la data.. estoy llenando un dataset con un dataadapter, y pasando ese array al form donde esta un reportviewer que a su vez tiene un report con un dataset asociado, me muestra las lineas vacias, no me muestra los datos.. El ds tiene datos lo comprobe asi:
ResponderEliminarint a= ds.Tables[0].Rows.Count;
ds.Tables[0].Rows[0].ItemArray;
Aqui agrego el dataset con datos al del reporte:
dt_SobresDataTableBindingSource.DataSource = a.Tables[0];
Yo no especifico los nombres de las columnas en ninguno de los ds sera eso? hice una prueba y no me muestra ni las lineas vacias!
Muchas Gracias!
hola Pierina
ResponderEliminarEl que los nombres de los campos no coincidan puede ser uan de las causas del problema, por eso recomiendo que uses dataset tipados cuando trabajes con reportes asi evitas este tipo de problemas
El dataset tipado sirve para definir la estructura de campos del reporte y al mismo tiempo lo puedes cargar con los registros provenientes de la query que uses.
Pero recuerda que los campos del SELECT que definas deben coincidor con los del dataset tipado y por ende con los del reporte
saludos
Hola Leandro, Gracias, pero al parecer no es eso. Entiendo por dataset tipado, al objeto que se agrega al proyecto físicamente y no creado por código, ese objeto es el que está agregado al proyecto, y el que lleno desde la clase, yo lo intente pasándolo por parámetro entre la clase y el form donde esta el reporte, y lo intente directo, porque si lo uso en la clase debería tener los datos sin tener que actualizarlo? Pero solo veo las lineas sin los datos.. Aca:
ResponderEliminardtSobresBindingSource.DataSource = a.Tables[0]; Lo estoy pasando por parámetros. Antes de actualizar el reporte, temo que si lo paso normal por abrir la instancia del dataset: Sobres s = new Sobres(); en el form, no tenga los datos... Como veras no entiendo mucho sobre esto, y he leído pero se supone que deberían verse.. Alguna otra idea o info que pueda leer? Muchas Gracias!
Gracias!! Ya veo los datos.. puse todo en el form, y actualice los nombres en el reporte, y funcionó..
ResponderEliminarSaludos..
Hola, estoy haciendo un report con el crystal report de visual studio y me ha surgido un problema.
ResponderEliminarTengo un report principal que tiene un subreport secundario.
Hasta aqui, me funciona perfectamente.
El problema surge al intentar insertar un report en el subreport secundario.
Un ejemplo sería, una persona ha pasado por varios trabajos. El report secundario sería cada empresa y el subreport del report secundario, sería lo que ha estado haciendo en cada empresa.
En diseño lo tengo hecho, pero al intentar alimentarlo por código me dice que no se puede hacer.
Conoces alguna otra manera de hacerlo.
Un saludo, Eduardo.
hola Eduardo
ResponderEliminarLa verdad nunca llegue a tantos niveles en subreportes, no estoy seguro que tan factible y conveniente sea tener tantos niveles en un reporte.
Porque el subreporte esta conformado por los datos de la empresa en un grupo (seccion del subreporte) y lo que hace en cada empresa el detalle, pero seria un solo subreporte, no requieres crear subreporte anidados.
O sea si crear grupos y usas la seccion de detalle deberias poder lograr el mismo efecto.
saludos
Hola y gracias por responder. Ya lo tengo solucionado. Al final he hecho un report principal donde coloco los datos de la persona. Después en un grupo, tengo los datos de la empresa y en la sección de detalles, coloco las distintas actividades que corresponden a diferentes subinformes.
ResponderEliminarUn saludo.
hola como estas, una duda,, tengo problemas con la ruta
ResponderEliminarDim rutadb As String = Path.Combine(Application.StartupPath, "TestDb.mdb")
report.DataSourceConnections(0).SetConnection("", rutadb, False)
yo estoy utilizando un ODBC para conectarme a la base de datos, alguna sugerencia,,te lo agradezco buen dia
hola j@vier
ResponderEliminarDisculpa la demora en la respuesta.
El tema es que si usas ODBC no deberias por codigo cambiar anda, si la ruta es distinta lo cambias directo en el DSN que has creado en windows, ya que el reporte solo usa el nombre del mismo.
A donde apunto es que irias a esta opcion: imagen
y alli es dodne cambias la ruta.
saludos
Que tal Leandro gracias por tu aporte. Pero que pasa si quisiera pasarle a mi reporte múltiples parámetros ?
ResponderEliminarOtra cosa, no sé si tendrás algún manual para hacer lo de subreportes con crystal reports para VS2008 SP1
ResponderEliminarhola renato
ResponderEliminarCon respecto al manual por ahi este link ayude:
Crystal Reports Para Visual Studio.net Visual Basic.net Eidos
Con respecto a los parametros multiples, imagino apuntas a algo como esto
Passing Multiple Parameters to a Crystal Report Programmatically
saludos
HOla buenos dias, mi problema es el paso de parametros tipo fecha, como deberia estar la configuracion del parametro en crystal si fecha o fecha y hora, a la hora de pasar el parametro que tipo de dato debo pasar DateTime y en la base de datos que es preferible.
ResponderEliminarCuando intento generar el reporte me dice que no son valores correctos de parametros no se com hacer, llevo dias trabajando en eso y nada si saben de algo se los agradezco
hola Sindy
ResponderEliminarRealice una prueba y pude sin problema pasar como parametro un tipo de dato fecha,
en el reporte defini un parametro del tipo Fecha y Hora.
y luego en el codigo use:
CrystalReport1 cr1 = new CrystalReport1();
ParameterField param = new ParameterField();
param.ParameterFieldName = "param1";
param.ParameterValueType = ParameterValueKind.DateTimeParameter;
ParameterDiscreteValue discreteValue = new ParameterDiscreteValue();
discreteValue.Value = DateTime.Now;
param.CurrentValues.Add(discreteValue);
ParameterFields paramFiels = new ParameterFields();
paramFiels.Add(param);
crystalReportViewer1.ParameterFieldInfo = paramFiels;
crystalReportViewer1.ReportSource = cr1;
Como veras al parametro le pase el Datetime.Now, para asignar la fecha y la hora
Entonces como tenia el parametro puesto en el diseñador del reporte al visualizar el reporte en pantalla pude ver el valor sin problemas
Algo que por ahi te podria estar faltando es esta linea
param.ParameterValueType = ParameterValueKind.DateTimeParameter;
para indicar el tipo de del valor que le pasas
saludos
Me parece una muy buena ayuda, estoy buscando informacion sobre este tema, hare pruebas con sus ejemplos gracias por esta ayuda valios... sigan asi porfavor
ResponderEliminargracias capo, estaba buscando esto !!!
ResponderEliminarMe fue de mucha ayuda, muchas gracias.....
ResponderEliminarExcelente tutorial Leandro, pero lamentablemente se me complica cuando debo insertar un subreporte y pasarle el parametro, tienes alguna pista?
ResponderEliminarde antemano gracias
hola cmujica
ResponderEliminarsi creas dataset relacionados estos podrias usarlos directamente en subreportes
hasta donde se no haria falta definir el parametro del subreporte, porque la relacion de informacion dentro del dataset tipado ya relaciona la informacion
saludos
Hola estoy haciendo un sistema en vs 2008 en Cshart y quiero sacar un reporte con Cristal Report pero no se como pasarle un parametro yo, cree un dataset y a este le adñadi un query con un filtro pero no se como hacer mas nada tengo algunos manuales pero no he podido resolver mi problema
ResponderEliminarhola yusi
ResponderEliminarpero el problemas son los parametros o es la asignacion al reporte del dataset tipado ?
quizas podrias ver:
Creación de Reportes con Crystal Reports en Visual Studio 2005/2008
saludos
Hola!, por favor necesito de tu ayuda a ver si puedo resolver el problema que tengo,
ResponderEliminarEstoy haciendo un proyecto en vb.net 2010, con SQL R2 2008 y Crystal report, tengo un procedimiento en Sql que le envió parámetros desde Crystal, he pasado varios parámetros y como tu me dices y me funcionan, pero cuando paso Fecha me da un error
en mensaje que me sale es el siguiente:
Detalles:Código de Error ADO:Ox
Descripción: Sintaxis incorrecta cerca de la palabra clave 'CONVERT'.
Le he colocado .ParameterValueType = ParameterValueKind.DateParameter,
he formateado la fecha a yyyy/MM/dd.
Me gustaría que me ayudaras tengo varios días con este problema y nada.
Muchas gracias de antemano!!
Estado de SQL:42000
hola Adrian
ResponderEliminarestas conectando el reporte directamente a la base de datos ?
o usas dataset tipado para asignmar la info al reporte
porque no me explcio como un CONVERT de t-sql podria fallar con un parametro de crystal
o es la query que defines la que esta fallando ?
saludos
Hola Leandro!, tengo conectado el reporte directamente a SQL por Crystal, por codigo de .net cambio la ruta de trabajo.
ResponderEliminarHasta los momento me di cuenta que al parecer desde Visual a Crystal en los parametros tipo Fecha lo pasa como Cadena de caracteres y Crystal trata de ejecutar el procedimiento de SQL de la siguiente forma:
"Execute DB.Procedmiento 1, CONVERT(20120301 Date 110), N'TIPO'".
Abra una manera en Crystal que pueda cambiar el tipo de Parametro?, o como seria el procedimiento para pasar la fecha desde VB.net
Gracias de antemano por tu Ayuda!.
hola Adrian
ResponderEliminarentonces queire decir que el reporte crystal si se conecta directo a un procedure
por lo visto se llama "Procedmiento"
pero el CONVERT que alli quiere aplicar es incorrecto
CAST y CONVERT (Transact-SQL)
no has evaluado usar un dataset tipado para definir el el origen de datos del reporte, esto suele evitar problemas con las conexiones directas a la db
saludos
Hola Leandro!, como te he explicado antes es que el procedimiento esta bien, de hecho te dije que ejecuto con otros parametros que no sean fecha y funciona correctamente, lo del CONVERT no lo tengo yo en la consulta, si yo ejecuto en modo de diseño desde .NET en "vista previa de Informe principal", todo funciona bien!, de hecho, cambio la fechas y ejecuta correctamente todo, pero cuando ejecuto el proyecto y voy a el reporte con el parametro de fecha, me da el error.
ResponderEliminarEs como que entre .NET y Crystal cambiar la sentencia para SQL, como te explique en mensaje anterior. He probado cambiado en el procedimiento el parametro de tipo Fecha a Tipo VChar y me funciona, me gustaría pasarlo como debe ser, Tipo Fecha!!.
Disculpa por tanta molestias, pero como te he dicho tengo varios días averiguando que es lo que esta malo y no consigo!. Gracias!
Leandro muchas gracias por el aporte. Muy completo, claro y efectivo. Gracias!
ResponderEliminarSaludos!
Hola Leandro!!, POR FIN!!, ya di con el problema!!, es que el proyecto lo empece con Vs.net 2008 y con Crystal Version 10.5.37, en este Vs.net y Crystal trabajan con Framework 3.5, yo pase el proyecto a VS.net 2010 y no quise actualizar el Crystal, para seguir trabajando con el Framework 3.5, ya que el de VS.net 2010 y el Crystal de version 13.0.2 trabaja con Framework 4.0.
ResponderEliminarAhora el nuevo problema que surge es que no quiero cambiar a Framework 4.0, sabes de una version de Crystal trabaje con Framework 3.5, quesea mas actual que la version 10.5.37?, existe version 11 o 12 de Crystal que trabajen con Framework 3.5?.
Muchas gracias por tu ayuda!
hola Adrian
ResponderEliminarhay todo un tema con crystal y las versiones integradas, mas que nada porque a aprtir de la version 2010 este ya no se incluye con el VS, sino que lo descargas por separado
dudo que la version que usaste en VS2008 este disponible para 2010, como comente al ser ahora un prosucto separado la cosa cambio
[VS2010] Que pasa Con Crystal Reports y Visual Studio 2010
Podrias crear un proyecto en VS2010 con .net 3.5 pero cambiar la version de crystal que se integra a la 2010, esto deberia funcionar, lo que cambias solo es la version de crystal no del framework de tu desarollo
saludos
hola leandro
ResponderEliminarespero me puedas ayudar
como puedo mostrar por semanas en crystal report
es decir del 1 al 7 de abril en la columna fecha y en la columna total del dia mostrar el total de esos dias
espero me puedas ayudar
fecha total dia
1 abril 200
2 abril 100
3 abril 100
4 abril 100
5 abril 100
6 abril 100
7 abril 100
total semana 800
asi semana por semana de cada mes
ya muestro todo pero quiero q sea por semana los totales
como mostrar en crystal report
ResponderEliminartotales por semana
es decir
abril
1 100
2 100
3 100
4 100
5 100
6 100
7 100
total sem 700
8 100
9 100
...
y asi por todo el mes
como puedo hacerle espero q me puedas ayudar por favor
hola dash
ResponderEliminarel tema es que esto depende como tengas definida la estructura de los datos
por lo general esto deberias resolverlo a nivel de la query con que defines lso datos del reporte, usando algun SELECT con un GROUP BY, so similar que adecuen los datos para ser mostrados
se que crystal tiene control de pivot, como es la de Cross-table
imagen
pero primero deberias ver si la estructura de datos permite obtener la info que quieres mostrar
saludos
Hola Leandro, fijate q tengo un pequeño problema, estoy tratando de crear un reporte a traves de un procedimiento almacenado que contiene SQL dinamico por lo cual, el unico parametro de mi procedimiento es @condicion.
ResponderEliminarPero me manda el siguiente error
No se pudo recuperar los datos de la base de datos.
Detalles: 42000:[Microsoft][ODBC SQL Server Driver][SQL Server]
Sintaxis incorrecta cerca de ' AND Apellido LIKE 'Burgos%''.
[Código del proveedor de base de datos:102]
A como ya te habrás dado cuenta la cadena ' AND Apellido LIKE 'Burgos%'' es el valor de mi parametro.
Valga aclarar que si ejecuto el procedimiento almacenado directamente en SQL Server me retorna los valores esperados.
Espero que me puedas ayudar.
Utilizo Visual Studio Professional 2010 y SQL Server 2008 R2. El crystal report es la versión 13
hola JT
ResponderEliminarbueno la verdad no sabria decir que podra ser sin analizar el procedure completo
pero me pregunto esa condicion comienza con AND pero eso quiere decir que antes de esta hay otra condicion existente no ?
porque sino la hay ese AND no deberia estar
saludos
Hola Leandro, gracias por responder. El código del procedimiento es el siguiente:
ResponderEliminarCREATE PROCEDURE dbo.sp_rptPersona
@condicion NVARCHAR(3000)
AS
DECLARE @consulta NVARCHAR(1000),
@sSQL NVARCHAR(4000)
SET @consulta = 'SELECT nCedula, nombres, Apellido, sexo, direccion, telefono, estadoCivil, fechaNacimiento
FROM dbo.Persona WHERE 1=1 '
SET @sSQL = @consulta + @condicion
EXEC sp_executesql @sSQL
GO
Entonces, la idea es la siguiente, en la interfaz gráfica el usuario selecciona los parámetros que él considere para generar el reporte y se va creando la cadena complementaria de la consulta de sql, cuyo resultado final puede ser ' AND Apellido LIKE ''Burgos%'''
Si yo ejecuto el procedimiento almacenado directamente en sql pasando como parámetro la cadena resultante de la interfaz gráfica, se muestran los resultados esperados. Sin embargo, cuando lo envío a crystal me muestra el error que te he detallado.
Ignoro el porque del error si el procedimiento y los parámetros están buenos. Sospecho que es en crystal pero he buscado información y nada que encuentro, espero que me puedas ayudar.
Hola Leandro, luego de muchos intentos he resuelto el problema.
ResponderEliminarLes dejo la solución por si a alguien se le presenta el mismo inconveniente.
Me percaté que como el valor enviado desde visual a sql a traves de crystal llegaba al procedimiento a traves de una variable (en mi caso @condicion) excluí varias comillas simples para que la cadena final quedara como que la estaba escribiendo directamente en sql (sin el sql dinámico) y me quedó de la siguiente manera:
AND Apellido LIKE 'Burgos%'
Listo, funcionó. Lo cual significa que la cadena que tengo que generar en visual no debe de llevar muchas comillas simples. Si el usuario selecciona otro parámetro, por ejemplo todas las mujeres cuyo apellido inicie con L, entonces quedaría así:
AND Apellido LIKE 'L%' AND sexo LIKE 'F%'
Mi error fue que la cadena la generé como que se iba a ejecutar el procedimiento directamente en sql sin tomar en cuenta al intermediario (crystal)
Gracias por tomarte un tiempo a tratar de resolver mi problema.
Espero que les sirva.
Leandro,
ResponderEliminarjusto lo que estaba buscando desde hace ya 5 días para aplicarlo a mi proyecto
Muchas Gracias
Hola Leandro soy yo otra vez!, vengo por tu ayuda como siempre!. La pregunta es, hay un forma de que yo pueda cambiar por código en vb.net los titulo de un reporte o mejor dicho, hay alguna forma de que yo pueda cambiar el idioma del reporte?.
ResponderEliminarGracias de antemano!!.
hola Adrian
ResponderEliminarpodrias definri el titulo con un parametro y pasarlo desde codigo
de esta forma lo haces dinamico
lo del idioma es otra cosa distinta ya que imagino serian muchos los parametros, quizas deberias crear dos reportes diferentes uno para cada idioma y cargar segun corresponda
sino se podria poner codigo en los label del reporte para que segun un parametro que definas en el reporte indicar en que idioma mostrarlo, pero por codigo pones fijo los textbox
saludos
Hola leandro, espero puedas ayudarme, tengo una aplicacion donde tengo varios reportes con crystal reports del visual studio 2005. El problema es que lo tengo en un servidor con win server 2003 y sql 2000 y me funcionan correctamente.
ResponderEliminarPero al cambiar la aplicacion a un servidor con win server 2008 y sql 2008 me marca error al abrir los reportes, el error lo manda en la siguiente linea
Me.CrystalReportViewer1.ParameterFieldInfo.Item(0).CurrentValues.AddValue(Session("fecha")) que es donde le mando los parametros al reporte.
Espero tu comentario, gracias de ante mano.
hola Alejandra
ResponderEliminaren algun momento realizaste una conversion de version de crystal, o sea cambiaste quizas de Visual Studio?
cual seria el mensaje de error que obtienes ?
veo que alli usas Session, o sea quiere decir que es un desarrollo web, no ?
si es asi has validado que esa session se asigne correctamente
o sea si haces
If Session("fecha") Is Nothing Then
lblMensaje = "la fecha es nula"
End If
si haces eso pasa por nula la fecha
saludos
el visual es el mismo 2005, las versiones que se cambiaron son las del sql a 2008 el IIS que ahora es el ISS 7.
ResponderEliminarLa variable de sesion si lleva valor, ya verifique eso.
El error:
Error in File C:\Windows\TEMP\mtto {3F6CB254-2002-4313-A6F4-D573E597538F}.rpt:
Access to report file denied. Another program may be using it.
Detalles de la excepción: System.Runtime.InteropServices.COMException: Error in File C:\Windows\TEMP\mtto {3F6CB254-2002-4313-A6F4-D573E597538F}.rpt:
Access to report file denied. Another program may be using it.
Línea 110: Me.CrystalReportViewer1.ParameterFieldInfo.Item(0).CurrentValues.AddValue(Session("anio"))
ese error me manda en algunas, pero en otros simplemente no m muestra nada de informacion, sin mandar error
hola Alejandra
ResponderEliminarla aplicacion es web no ? imagino que usas un web site como proyecto, estyos siempre dan problemas
aunque ese error de crystal esta rato
has probado darle acceso a la carpeta temp de windows al usuario ASPNET o al IUSR_NombrePC
esto son los que usa el iis
es mas podrias darle permisno a everyone para escritura solo para descartar si viene por aquyi el tema
saludos
Amigo Leandro, tengo este problema cuando llamo un reporte CR desde un link...
ResponderEliminarhttp://websrv01/reportes/noproductivo/realizados.rpt?user0=prn&password0=prn&prompt0='INFORMES'
El tema que este reporte le agregue un subreporte y ahora me pide siempre el usuario y password del subreporte, hay manera de ponerlo en el link?
Gracias
Leonardo Escudero (Argentina)
hola Leomasterxxi
ResponderEliminarcomo es eso de llamar un reporte desde un link, o sea es un desarrollo web y en una pagina tienes el crystalreportviewer para cargar alli el reporte
si pide usuario es porque esta queriendo conectarse directamente a la db, lo que no has mencionado es como conectas el reporte a los datos
saludos
Si amigo perdon, pequeño detalle, si llamo desde una aplicacion web, y uso crystalviewer, el reporte usa odbc que esta en el servidor donde esta el reporte, como veras en el link yo envio el usuario y pass, que de solo lectura a la base, el reporte andaba bien, pero al ponerle subreporte cuando lo llamo me pide usuario y pass del subreporte, no se como lo puedo enviar en el link...
ResponderEliminarEspero me puedas ayudar con este tema.
Saludos y gracias por responder.
hola Leomasterxxi
ResponderEliminaro sea quiere decir que conectas el reporte directo a la base de datos?
no has evaluado usar un dataset tipado, con este tendrias mayor control sobre la conexion del reporte al origen de datos
revisa los articulo que tengo sobre crystal, alli explico como usar un dataset en un reporte
sino vas a tener que definir el password como explico aqui
http://social.msdn.microsoft.com/Forums/es/vsrepcrystales/thread/d1a1011d-fe26-402b-954c-236ba1e1f938
saludos
Saludos leandro!
ResponderEliminarSabras por casualidad como pasar parametros desde php a crystal report.
Tengo este comando en crystal que recibe un parametro:
SELECT
DISTINCT id_proyecto
FROM vw_reporte_accidente
WHERE id_incapacidad = {?incapacidad}
Y EN PHP ESTO:
$creport->ParameterFields->GetItemByName("incapacidad")->AddCurrentValue(1);
espers tengas algun conocimiento. gracias!
Adrian. Tu problema es porque, seguramente seleccionas SQL Native Client como tu proveedor de vinculo a datos, deberias probar con Microsoft OLE DB Provider for SQL Server.
ResponderEliminarHola Leandro, mira tengo un problema con un reporte de Crystal, en mi reporte hay varias paginas, pero al navegar entre ellas ya no me muestra datos solo los de la primera pagina y si debe de haber mas datos, esto solo me pasa con este reporte ya que tengo otros con varias paginas y en esos reportes si puedo ver todas las paginas una por una.
ResponderEliminarGracias de ante mano. Saludos.
hola Alex
ResponderEliminarhas validado los datos que proporcionas al reporte?
o sea si quizas los campos que muestras estan vacios, quizas se genere el datos y las paginas y no ves nada porque el campo de esos registros no tienen nada
valida tambien las secciones (principalmente los footer de estas)recuerda poner en supress (o reducir el alto) las que no uses porque mas ala que no tengan nada en el reporte ocupan lugar y pueden hacer que genere paginas nuevas
saludos
Hola Leandro, ya resolvi el problema muchas gracias, era que al crystalreportviewer tenia asignado un parametro, y se lo quite y ya m muestra toda la informacion del reporte, muchas gracias!!!!!!
ResponderEliminarSaludos.
Genio Total! me fue de mucha utilidad! gracias
ResponderEliminarHola Leandro!!
ResponderEliminarTengo un pequeño problema relacionado con los parametros que se envian a un CrystalReport, se supone que ya tiene el parametro que se enviara toma los datos del reporte pero al momento de enviar a imprimir el reporte marca que no se a asignado el valor @Folio (este es el parametro) y muestra solo el formato del reporte...espero que me puedas ayudar te dejo mi msn por si cuenta con alguna respuesta... karen10915@hotmail.com
Gracias :D !!!!
hola Karen
ResponderEliminarestas seguro que ese es un parametreo de Crystal, porque un @algo pareciera un parametro de ado.net
estas vinculando el reporte a un dataset tipado ? porque si es asi recuerda aplciar lso filtros en la query y no en el reporte
saludos
Reporte con columnas dinámicas en visual
ResponderEliminarBuen dia Leandro, mi consulta es la siguiente:
ResponderEliminarhice una consulta en SQL con pivot dinamico para las columnas y todo bien, pero cuando quiero hacerlo en cristal me da un error:
No se encontraron uno o mas campos en el conjunto de resultados. Use comprobar base de datos para actualizar el informe.
como podria hacer para resolver esto, ya que no quiero usar tablas de referencia cruzada en cristal report.
Gracias por la ayuda que pueda brindarme.
hola EZ
ResponderEliminarestas vinculando el reporte directo a la base de datos ?
en crystal tienes informes estilo pivot, pero no es que usas pivot en la query, sino que los datos son una query simple y desde crystal redefines la visualizacion
a donde voy que es que si defines un pivot en la query los nombres de los campops cambia y esto crystal no puede reconocerlo
si algo que se caracteriza crystal es por ser estatico en el diseño de los datos que puede trabajar, los nombres de los campos no pueden variar
saludos
Hola Leandro, gracias por sus comentarios.
ResponderEliminarCuando habla de informes estilo pivot a que se refiere??
saludos.
hola
ResponderEliminarapuntaba a este estilo de reporte
Cross Tabla
saludos
Esta bien gracias por su ayuda.
ResponderEliminarGracias por su ayuda, ya logre realizar el reporte.
ResponderEliminarBuen día, logre realizar el reporte usando Cross Tabla y todo bien.
ResponderEliminarSin embargo tengo una consulta que realizarle:
--> se puede usar la propiedad puede crecer para los campos que muestra el reporte, si no es así como se podría resolver, ya que esta propiedad me sale desabilitada.
--> Esta tabla de referencia cruzada solo se puede insertar en el encabezado del informe?, En el encabezado del informe no me permitió insertar una tabla de referencia cruzada.
a espera de sus comentarios le saludo.
hola EZ
ResponderEliminarla verdad no sabria decirte conozco las Cross Table de crystal pero solo als he usado uan sola vez para un reporte simple
no creo que sea una tabla que se inserte en la cabezara, salvo si usas un subreporte
saludos
Hola Leandro, gracias por sus comentarios.
ResponderEliminarsaludos.
BUENAS LEANDRO, SIEMPRE VISITO TUS BLOGS TENGO UN PROBLEMA NO SE SI ME PUEDES AYUDAR, TENGO UN REPORTE CRYSTAL CON VARIOS SUBREPORTES CUANDO LOS PRUEBO CON UNA CONEXION A UNA BASE DE DATOS EN UN SERVIDOR SETEANDOLO EN EL REPORTE PARA VER LA VISTA PREVIA Y EJECUTANDO EL PROYECTO SALE NORMAL, DESPUES CAMBIO LA CADENA DE CONEXION YA QUE EL REPORTE Y LOS SUBREPORTES VAN A LA BASE DE DATOS CONECTADA PARA SACAR INFORMACION DESDE LA APLICACION NO SALE INFORMACION EN ALGUNOS SUB REPORTES, SI VUELVO A SETEAR LA CONEXION A LA BASE DE DATOS EN LA VISTA PREVIA Y AL EJECUTAR EL PROYECTO SI SALE NOSE SI ME PUEDES AYUDAR YA QUE NO DOY CON EL PROBLEMA PENSE QUE AL VINCULAR EL SUBREPORTE HABIA PUESTO LA CONEXION ACTUAL QUE ESTA PARA ELEGIR PERO NO LE PASO EL CAMPO DEL REPORTE, ESPERO ME PUEDAS AYUDAR SALUDOS.
ResponderEliminarBuenas noches Leandro, una ves mas le tengo una consulta, espero me pueda ayudar.
ResponderEliminarEstoy diseñando un reporte en cristal report para visual 2010, resulta que tengo una lista de 47 items de un catalogo con otra columna que se llama cantidad:
Descripcion_Catalogo Cantidad
Sillas 50
Lo que yo quiero hacer es armas tres columnas de de 16 elementos cada grupo, para no mostrar todo de corrido.
Si usted sabe de alguna forma en que lo pudiera hacer, le agradeceria mucho me la hiciera llegar.
de antemano gracias por su colaboración.
hola EZ
ResponderEliminarlo unico que se me ocurre es que se podrian armar subreportes
entonces los datos partirlo a la mitad y asignar cada grupo de datos a cada subreporte para que lo muestre listado
se supone que los subreportes deben estar uno al lado del otro
saludos
Buenos Dias don Leandro,
ResponderEliminaruna vez mas aqui consultandole, la situación es la siguiente: tengo un reporte elaborado en cristal report XI, yo quiero que la leyenda me muestre datos diferentes a los del eje de los datos, ya probe la opcion de modificar el texto de la leyenda de un grafico que viene en el Manual de cristal report XI, pero no me funciona.
espero me pueda ayudar.
saludos.
hola EZ
ResponderEliminarla verdad no he usado mucho el chart de crystal, fue algo basico que lo use hace tiempo
he visto cosas como estas
Tip: How to change the text of Legends in Crystal Reports?
pero no lo veo simple de implementar
saludos
Muchas gracias Leandro.
ResponderEliminarEstoy entrando en VB Net (antiguo y terco con VB6) y son este tipo de cositas las que me frenan por días. Tu código funciona perfecto!!
Buenas Noches Leandro, un placer saludarle, le tengo na consulta,tengo un Proyecto desde visual net, como inicializo el Crista Report desde el inicio de sesion para que al cargar un reporte este no tarde tanto tiempo en mostrase.
ResponderEliminarEstoy usando visual 2010 y cristal para vs2010.
De antemano gracias por sus comentarios.
hola EZ
ResponderEliminarla unica forma que se me ocurre es que crees el ReportDocument en memoria y le asignes los datos al tenes el report codument creado asignarlo al reportview para visualizarlo deberia ser rapido
saludos
Buenas Noches, es posible q se exporte un reporte de cristal a word y que si tienen tablas esta se comporten como si hibiesen sido insertadas desde word.
ResponderEliminarhola Eliza
ResponderEliminarCrystal si exporta a word, ahora el conceto de tablas como tal no esta presente en crystal no veo que exista
por lo general siempre exporte a excel o pdf, pero lo mas probable es que el reporte en word lo veas de la misam forma en como el diseñador lo muestre
saludos
Hola, bueno he leído el post que dejaste y está muy bueno, ahora mi problema es que estoy usando una bd postgresql y lo que quiero hacer es lo siguiente: hacerle una consulta a la bd enviandole por parámetro el dato a ser buscado y si es que no se encuentra que se lance una excepcion, ya tengo la excepcion programada el problema es que no se como hacer eso de la busqueda, osea para que busque dentro de la bd entera el dato ingresado.
ResponderEliminarsaludos, y gracias de antemano.
hola Blas
ResponderEliminarestas usando el provider de esta db para ado.net
Npgsql - .Net Data Provider for Postgresql
porque con este programarias al query similar a como lo harias para cualquier otra db, en la misma pagina hay ejemplo
saludos
HOLA NECESITO CREAR UN REPORTE SOBRE ESTADO DE RESULTADO PERO NO LOGRO IDENTIFICAR EL CAMPO , OJALA ME PUEDAN AYUDAR, ADEMAS DE COMO PUEDO FILTRAR POR FECHA
ResponderEliminarhola Pamela
ResponderEliminarno entendi el tema que no identifica el campo, seria que ne el reporte no puedes arrastrarlo al diseñador?
estas conectando el reporte a un dataset tipado
para filtrar por fecha si conectas a un dataset, ese filtro lo realizas desde codigo por medio de ado.net
saludos
Hola Leandro como estas?
ResponderEliminarPor favor necesito que me ayudes:
Estoy haciendo un reporte en crystal reports para vs 2010, de la siguiente manera:
Utilizo SQL SERVER 2005 Y VB.Net,
Los datos que pongo en el reporte los obtengo con un select que esta dentro de un stored procedure,
es decir que uso stored procedures para tomar los datos mandandole parametros....
Todo va muy bien en el desarrollo, que queda excelente...
Mi problema esta cuando necesito utilizar el servidor de produccion y no el desarrollo para sacar los datos, es decir cambiar el origen de datos....
para logralo debo cada vez que cambio de servidor cambiar tambien todo, desde la conexion del reporte en tiempo de diseño...
Puedes indicarme como hacer a traves de codigo esto, de tal forma que envie los parametros de conexion(servidor, bd, user, pass)
y no tener que cambiar el reporte siempre...
Utilizo una conexion de tipo oledb(ado)..
Te agradeceria mucho si me muestras un tutorial que enseñe a realizar esto, o brindarme tu ayuda de alguna forma...
El objetivo es conectar a distinto servidor....
Muchas gracias, espero tu respuesta.....
hola GABRIEL
ResponderEliminarimagino por lo que comentas que conectas el repote directo a la base de datos, cuando deberias ahber usado un dataset tipado para evitar estos problemas
Agregar el código de conexión del informe
como veras en el link puedes definir la info de conecion del reporte desde codigo
saludos
Hola Leandro que tal sabes yo estoy practicando Vb.net 2008 y sqlserver 2005, Tengo una capa llamada Reportes la cual la cree con un tutorial que publicastes ahora ya hice los listados. Pero ahora estoy intentado pasar los parametros para que sqlparameter me tome el valor que paso y la verdad no consigo hacerlo. Si tal vez tienes algún correo electronico al cual te pueda enviar el archivo te lo agradecería =).
ResponderEliminarhola
ResponderEliminarpero se supone que la asignacion de parametros solo implica asignadr estos a un metodo que luego lo usas en la query que carga el dataset tipado que asignas al reporte
pero los parametros son soo valores de un metodo no deberia tener problemas
saludos
Hola Leandro dejame algún email para que me indiques si lo que hice esta bien. Ya lo pude resolver le pase el valor del text.
ResponderEliminarSaludos
hola
ResponderEliminarmi contacto esta en als opciones de perfil, es el mail de gmail
asignaste como text la propiedad del sqlcommand
saludos
Buenos días,
ResponderEliminarAyer ne surgio un problema al enviar un reporte a imprimir.
Sale el cuadro de OLE DB (ADO)donde hay que seleccionar un proveedor de la lista o un archivo de vinculo de datos.
Si le doy finalizar igual manda a imprimir, desconozco entonces que hace que esto suceda ya que en unos equipo funciona y en otros no.
Agradezco su ayuda.
Saray Galeano
hola Saray
ResponderEliminarel reporte se conecta directo a la db, o usas un dataset tipodo que cargas desde tu codigo y los asignas como datasource del reporte ?
es raro eso que dices de ADO, pero la verdad con Crystal no me extrañaria, por eso es que los reportes que realizo nunca los conecto directo a la db, porque es para problemas, sino que cargo una lista o dataset y se lo asigno, asi puedo controlar en todo momento que datos va a mostrar
saludos
Hola leandro yo estoy haciendo un reporte pero estoy utilizando SP que recibe 2 parametros.
ResponderEliminareste es mi codigo pero solo pasa un parametro y no los dos que hago??? ayudame porfavor.
MI CODIGO:
Dim pvValoresParametros As New ParameterValues()
'Dim personal As New ParameterDiscreteValue()
'Dim personal2 As New ParameterDiscreteValue()
''instanciamos un objeto del reporte
'Dim crearreport As New ReporteJerarquia()
'personal.Value = CInt(TextBox1.Text)
'personal2.Value = TextBox2.Text
'pvValoresParametros.Add(personal2)
'pvValoresParametros.Add(personal)
'crearreport.DataDefinition.ParameterFields("id").ApplyCurrentValues(pvValoresParametros)
'Me.CrystalReportViewer1.ReportSource = crearreport
'crearreport.DataDefinition.ParameterFields("Param").ApplyCurrentValues(pvValoresParametros)
hola Eduardo
ResponderEliminarpero no veo que uses algo como ser
ParameterFields paramFiels = new ParameterFields();
paramFiels.Add(param);
o sea una coleccion que defina y tome la lista de parametros
sino que asignas directo el parametro a un nombre
revisa el articulo y aplicalo como hago alli a ver si resulta
saludos
Buenos dias/noches. Estoy adentrandome en el mundo del .Net y CR.XI desde VB6 y CR.8 y sudo para hacer cosas que antes hacia sin problemas. A ver si me puedes aclarar si esto se puede hacer (en VB6 lo hacia).
ResponderEliminarHe diseñado un formulario para que el usuario de la aplicacion pueda diseñar su propio listado y seleccionar que campos de la BD apareceran. Para ello deberia pasar los NOMBRES de los campos seleccionados al report y este mostrarme en cada columna el campo de la base de datos recibido por codigo.
No se si me he explicado claramente.
Agradecere cualquier idea.
hola Luis
ResponderEliminarla verdad no se como es que lo harias en VB6 pero dudo que sea con crystal reports, quizas podrias aplciar la misma tecnica, peor la verdad no sabria decirte de cual se trata
el diseño del reporte es estatico y al definir un origen de datos este determina los nombres de los campos, esto es asi desde VB6 y no ha cambiado
saludos
Hola Leandro espero me puedas ayudar, estoy haciendo una webform para una empresa de transportes, que cuando se ingrese la informacion me saque el recibo y el numero de tiquetes que compre puede ser 1 o varios, estos tiquetes y recibo los hice en un crystal report; el problema es que cuando le doy imprimir solo me saca el recibo, los tiquetes no, y la verdad creo que es porque crystal siempre se toma su tiempo para buscar el reporte y no soporta realizar este proceso varias veces al mismo tiempo; o yo lo estoy haciendo mal. Espero me puedas ayudar. Te lo agradezco mucho
ResponderEliminarhola Paula
ResponderEliminarpero este recibo y ticket son diferentes .rpt ?
porque si es asi tu deberias lanzar cada reporte de forma independiente
por lo que comentas un recibo no tiene una relacion directa con los ticket, o quizas si y podrias definir subreportes para mostrar los ticket dentro del reporte de recibo
saludos
Hola Leandro, gracias por contestar, efectivamente los reportes y tiquetes son diferentes rpt.
ResponderEliminarUd me dice que los abra de forma independiente, ese es el punto como hago para que el mismo boton los llame al mismo tiempo, en el caso de los tiquetes pueden haber varios en una solo venta y necesita que un ciclo le valla enviando la diferente infomarcion para hacer cada tiquete.
hola Paula
ResponderEliminarpodrias evaluar si quizas un subreporte no soluciona el problema
podrias vincular los datos a un recibo y sus ticket cargando todo en un dataset tipado que asignas al reporte
entonces los ticket los envias en subreporte del reporte del recibo
la verdad habria que probarlo pero deberia resultar de esa forma
lo que habria que ver en que seccion del reporete pones cada cosa, quizas en este caso si solo se imprime un recibo a la vez la seccion details no la utilices
saludos
Leandro serias tan gentil de escribirme a joseluis_sayago@hotmail.com tengo problemas con un reporte de crystal reports
ResponderEliminarsaludos Leandro, no me ayudas con un reporte en Crystal? mi correo es joseluis_sayago@hotmail.com
ResponderEliminarhola Luis
ResponderEliminarcual seria el problema?
saludos
Hola leandro, yo tengo un problema para imprimir mi reporte desde el toolbar del crystal report. Mi reporte funciona correctamente,pero cuando le doy imprimir me sale una ventana con el nombre de mi parametro algo asi:
ResponderEliminar@codigo al costado un textBox y abajo un boton. Es como si se estuviera perdiendo los parametros de mi reporte y me estuviera pidiendo que ingrese de nuevo el parametro, para mostrat mi reporte. Cabe mencionar que este reporte lo estoy haciendo en Web. Agradeceria mucho que me ayudaras.
hola Roly
ResponderEliminardesde codigo estas asignando un valor al parametro ?
validaste que el nombre que lo identifica este correctamente escrito?
saludos
Si le asigno un valor al parametro, como te digo mi reporte me muestra los datos correctamente, pero el problema ocurre cuando quiero imprimir y guardar ahi parece que se actualiza la pagina y se pierde el valor de los parametros, por que me sale un formulario con los nombres del parametro y un boton que te genera el crystal supongo, cuando no le asignas valores a los parametros.
ResponderEliminarhola Roly
ResponderEliminarla verdad no se me ocurre que podra estar pasando, no me ha sucedido nada como esto
podrias plantear el tema en el foro
asp.net foro
saludos
Buena Tarde Leandro, una consulta:
ResponderEliminarcomo se puede agregar un detalle a un documento de word a traves de RichTextBox1:
asta el momento tengo esto:
Dim file As String = Application.StartupPath & "\Documentos\GARANTIA.rtf"
Dim textoRTF As String
frmDoc.DocumentoRichEditControl.LoadDocument(file)
textoRTF = frmDoc.DocumentoRichEditControl.RtfText
With dtDatosRreserva.Select("RID=" & ROWIDReserva)(0)
textoRTF = textoRTF.Replace("\{NOMBRE\}", NOMBRETextEdit.Text)
textoRTF = textoRTF.Replace("\{MODELO\}", .Item("CODIGO_MODELO").ToString.ToUpper)
textoRTF = textoRTF.Replace("\{COLOR\}", .Item("EXTNOMBRE").ToString.ToUpper)
pero aparte de los datos generales me gustaria agregar un detalle.
saludos
hola EZ
ResponderEliminaralli no lo alcanzo a visualizar pero imagino estas haciendo uso de las api de office para trabjar con el documento
si es asi con estas podrias agregar parrafos donde poner un texto
saludos
Buenos Dias Leandro, efectivamente estoy usando las api de office, para mostrar un reporte, yo tengo el archivo creado, el cual contiene párrafos y algunas parametros el cual los asigno por medio de un dataset.
ResponderEliminarPero resulta que tambien tengo que insertar un detalle con el número de filas variable, el cual lo tengo cargado a un dataset, es ahi el problema, no se como mandar ese detalle, ademas que tiene que ser en formato de tabla.
Saludos,
hola EZ
ResponderEliminarla verdad no estoy seguro de como lograr lo que planteas
poner una tabla en el rtf lo veo medio raro sabiendo que despues formara parte de un reporte, porque esos datos no los ubicas en un sureporte del propio crystal
igualmente algo que no me quedo claro, hay un reporte de crystal en todo esto? o solo es el rtf
Word – Utilización de Tablas
quizas del link se puedan sacar algunas ideas
saludos
Hola Leandro! Tengo una consulta porque necesito hacer un reporte que se auto refresque cada cierto tiempo. Tienes idea de como se puede hacer??
ResponderEliminarHola buenas tardes Leandro, he estado buscado alguna solucion acerca del manejo de Crystal Report + Asp y pase de parámetros, en mi búsqueda encontré este código el cual lo cargo desde el Load de Default.aspx.cs
ResponderEliminarReportDocument reportDocument = new ReportDocument();
ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@Id";
paramDiscreteValue.Value = 2;
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.Load(Server.MapPath("Reportes\\Reporte1.rpt"));
reportDocument.SetDatabaseLogon("usuario", "pass", "server1", "base1");
CrystalReportViewer1.ReportSource = reportDocument;
También en Default.aspx he agregado solo el control CrystalReportSource1.
En cuanto al archivo Reporte1.rpt agregue un procedimiento almacenado el cual espera el parámetro @Id.
Al ejecutar la pagina Default.aspx simplemente no muestra nada, las preguntas que tengo son: ¿necesito agregar el control CrystalReportSource1? ¿me hace falta algo mas en el código para que muestra el reporte? ¿hará falta pasarle algún data table nuevamente reportDocument.SetDataSource(datatable1);?
De ante mano agradezco su atención!!
hola Maybell
ResponderEliminareso podrias lograrlo quizas utilizando un control timer, o sea en el evento de cada Tick del control recargar el reporte
no ahs mencionado si el reporte se conecta directamente a la db o si eres tu quien asigna algun dataset como origen de datos
si es la priemr opcion se que el control viewer tiene opciones de Refresh, pero si asignas un datasource vas a tener que recuperar nuevamente los datos y asignarlo al reporte
saludos
hola fabys
ResponderEliminarsi el reporte lo conectas directamente a los datos no necesitas asignar ningun datatable o parecido
se supone que al conectarse el reporte recupera los datos directamente, pero veo que le pasas un id unicamente, has validado que se encuentre este registro
que pasas si al select que esta dentro del procedure no aplicas el parametro, sino que devuelves todos los registros, si lo hace se pueden ver datos en el reporte ?
saludos
Hola Leandro, gracias por responder, realice la prueba y no me desplegó el reporte con un select desde el reporte ya que estaba utilizando visual studio 2012, no he encontrado alguna razón del porque no lo despliegue, realice otra prueba con VS2010 y sin problemas desplegó el reporte, ahora la que intento es poder pasar un parámetro desde código, porque al ejecutar el reporte que contiene el procedimiento almacenado con un parámetro, me despliega una ventana pidiéndome el valor del id:
ResponderEliminarTe paso el código que estoy implementando ya que pongo dos formas que encontré de pasar el parámetro pero no me respeta ninguna forma
protected void Page_Load(object sender, EventArgs e)
{
ReportDocument reportDocument = new ReportDocument();
ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
reportDocument.Load(Server.MapPath("Reportes\\reporte1.rpt"));
reportDocument.SetDatabaseLogon("usuario", "passsss", "server", "base");
paramField.Name = "@Id";
reportDocument.SetParameterValue("@IdGps", 2);
paramDiscreteValue.Value = 2;
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.ReportSource = reportDocument;
CrystalReportViewer1.RefreshReport();
}
Muchas gracias
Hola Leandro buenas tardes, gracias por tu respuesta, realice la prueba que comentas pero no me desplegó nada desde el VS2012 en cuanto al VS2010 sin problemas desplegó el reporte, aun no encuentro la razón del porque no despliega los reportes desde el VS2012. Ahora lo que intento es hacer la parte de los reportes desde VS2010 y lo que aun no me sale es el pase de parámetros, ya que desde el código que estoy implementado estoy probando dos formas de pase de parámetros pero sin resultados:
ResponderEliminarprotected void Page_Load(object sender, EventArgs e)
{
ReportDocument reportDocument = new ReportDocument();
ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
reportDocument.Load(Server.MapPath("Reportes\\reporte1.rpt"));
reportDocument.SetDatabaseLogon("usuario", "contraseña", "servidor", "base");
paramField.Name = "@Id";
reportDocument.SetParameterValue("@Id", 2);
paramDiscreteValue.Value = 2;
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.ReportSource = reportDocument;
CrystalReportViewer1.RefreshReport();
}
Muchas gracias
hola fabys
ResponderEliminarlo que no entiendo es porque mezclas las tecnias, si usas el ParameterField entonces no usas el SetParameterValue() porque sino asignas dos veces el mismo parametros
prueba dejar uno u otro
saludos
Muchas gracias Leandro, tenias razón utilice esta forma:
ResponderEliminarCrystalReportViewer1.ReportSource = null;
ReportDocument Report1 = new ReportDocument();
ParameterField param1 = new ParameterField();
ParameterDiscreteValue discreteValue1 = new ParameterDiscreteValue();
ParameterFields paramFiels1 = new ParameterFields();
param1 = new ParameterField();
param1.ParameterFieldName = "@Id";
discreteValue1.Value = 1;
param1.CurrentValues.Add(discreteValue1);
paramFiels1.Add(param1);
Report1.Load(Server.MapPath("Reportes\\Reporte.rpt"));
Report1.SetDatabaseLogon("user", "pass", "server", "base");
CrystalReportViewer1.ParameterFieldInfo = paramFiels1;
CrystalReportViewer1.ReportSource = Report1;
ya solo me resta la impresión del reporte desde Asp, de casualidad tendrás algún articulo referente a eso? ya que al darle click en el boton de la impresora del reporte no manda a imprimir, he leído acerca de que el usuario de ASPNET necesita permisos para imprimir y también otra forma es por código
System.Drawing.Printing.PrintDocument printDocument = new System.Drawing.Printing.PrintDocument();
Report1.PrintOptions.PrinterName = printDocument.PrinterSettings.PrinterName;
Report1.PrintToPrinter(1, true, 0, 0);
pero al ejecutarlo me despliega un error donde dice que falta unos parametros justo en la linea: printDocument.PrinterSettings.PrinterName;
Report1.PrintToPrinter(1, true, 0, 0);
Saludos!!!
¡Hola Leandro! estoy trabajando con visual basic 2012 y crystal reports 8 y tengo el siguiente problema:
ResponderEliminartengo un formulario con unos datos que ingreso y un boton que se llama Continuar, al momento que le doy clic quiero que me abrir un reporte que engo echo en crystal reports y que m muestre los valores que tenia en el formulario y ya he batallado y no me sale ojala y tu me puedas ayudar de antemano muchas gracias.
Hola Leandro, mejor opte por exportar mi reporte a pdf, ya que tuve muchos problemas con los permisos del usuario ASPNET, pongo el código por si alguien lo necesita
ResponderEliminarCrystalDecisions.Web.CrystalReportSource sourse = new CrystalDecisions.Web.CrystalReportSource();
sourse.Report.FileName = "Reportes\\Reporte.rpt";
DataTable tabla = new DataTable();
tabla = Insta.Dt_instalacionesReporte;
sourse.ReportDocument.SetDataSource(tabla);
sourse.ReportDocument.SetParameterValue("@Var", value);
System.IO.Stream reader;
reader = sourse.ReportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
Response.ClearHeaders();
Response.Clear();
Response.AddHeader("Content-Type", "application/pdf");
int b;
while ((b = reader.ReadByte()) != -1)
Response.OutputStream.WriteByte((byte)b);
Response.OutputStream.Flush();
Response.End();
Response.Close();
Saludos!! :D
hola fabys
ResponderEliminarexcelente muchas gracias
la verdad lo del VS2012 es raro, el trema es que no he realizado ninguna implementacion de crystal con VS2012 por lo que no sabria decirte que cual sera el problema
ultimamente estoy utilizando mas Reporting Service
saludos
hola Jose
ResponderEliminarpues la verdad esa union VS2012 y Crystal 8 la veo algo complicada
yo aconsejaria si puedes que veas la forma de crear los reportes con una version mas actualizada de crystal, una version que de ser posible se integre con el VS
actualmente existe esta version integrada que puedes descargar desde el sitio
http://scn.sap.com/docs/DOC-35074
saludos
Hola leandro.
ResponderEliminarUna pregunta a ver si me puedes ayudar en los reportes de crystal report de visual studio 2008 si intento abrir el database expert no hace nada y el visual studio tengo que cerrarlo a la fuerza. alguna solucion o forma de ver por que esta haciend eso
hola Fabián
ResponderEliminarel reporte lo conectas directo a una base de datos ? o usas un dataset tipado como origen de datos
si creas un proyecto nuevo y añades un reporte sucede lo mismo
el problema es raro, pareciera que intente conectarse a la db al no poder quizas espere el timeout para cancelar
saludos
Leandro que tal muy buen dia queria preguntarte como se puede utilizar una subsentencia para exportar al crystal report
ResponderEliminarhola Wolfgang
ResponderEliminarpor subsentencia te refieres a que estas creando un subreporte?
saludos
Leandro me refiero no a un subreporte sino que a la hora de mandar mi reporte tengo en mi sql el uso de un subsentencia sql q forma marte de la principal
ResponderEliminarun ejemplo:
select docenvio,(select ofinombre from oficina where ofidestino=1),(select ofinombre from oficina where ofienvio=2) from documentos
ah esas sub sentencias me refiero si me brindarias una ayuda estaria muy agradecido
hola Wolfgang
ResponderEliminarpeor hay algun campo que una las tablas documentos y oficina ?
porque en realidad lo correcto seria que uses un inner join entras las tablas
como ser
select docenvio, o1.ofinombre, o2.ofinombre
from documentos d
inner join oficina o1
on d.campo = o1.campo and o1.ofidestino=1
inner join oficina o2
on d.campo = o2.campo and o2.ofidestino=2
saludos
no habia pensado de esa forma muchas gracias lenadro voy a probra muy agradecido
ResponderEliminarHola Leandro
ResponderEliminartengo una aplicacion de escritorio hecha en VB2008 con una base de datos Mysql corriendo en un Servidor de Linux,
para los listado lleno los dataset con los procedimientos almacenado del Mysql y los grabo en un archivo XML,
luego uso esos archivos XML como origen de datos del crystal reports, hasta ahí todo barbaro, ahora tuve que instalar el sistema en un Terminal Server,
con varios usuarios usando en sistema al mismo tiempo, mas allá que cada uno se loguee con un usuario y contraseña diferente, tengo problemas con los listados
porque en crystal reports me dejo path absolutos en los .rpt para los archivos XML, ejemplo "c:\reportes\cliente.xml", en las versiones de crystal 7 u 8 uno podia indicarle
que los origenes de datos los busque en la misma carpeta de los reportes. Como puedo hacer lo mismo con .NET VB2008 y Crystal Reports, que los path no sean absolutos??,
no se si soy claro con la pregunta?
hola marcelo
ResponderEliminarpero estas conectando el reporte directo al xml ? o es que levantas este en un dataset tipado usando el ReadXml() del dataset y luego lo asignas al reporte
si es esto ultimo la ruta la puedes configurar usando el Application.StartupPath, para conocer donde esta el .exe y a partir de alli armar la ruta relativa
o sino podrias poner la ruta en el app.config y definirla en la configuracion de la aplicacion para que puedas cambiarla en runtime sin tener que recompilar
saludos
Buenos días Leandro: Espero no moleste la consulta por acá. Estoy levantando un Crystal desde una página web. el sitio está desarrollado en ASP.NET pero el crystal está bindeado contra una base en MySql. Al cargar la página que contiene el reportviewer me muestra el siguiente mensaje: "No se pudo abrir la conexión. No se pudo abrir la conexión"
ResponderEliminarEn la herramienta de diseño el reporte funciona correctamente. El code behind funciona correctamente con reportes que bindean contra SQL Server y los datos de conexión que seteo de MySql están correctos, no se que otro problema puede llegar a existir. Muchas gracias. Saludos
hola GUIDO
ResponderEliminarestas conectando el reporte directo a la base de datos ? o es que utilizas ado.net para cargar un dataset tipado o coleccion que luego utilizas para asignar el ReportSource() del reporte
si usas ado.net porque deberias revisa el connection string para ver si tiene la info correcta para conectarte a la db
saludos
Hola Leandro.
ResponderEliminarTengo una pregunta, y si quisiera agregar un rango de fecha a tu consulta desde un formulario de vb como le pasaría el parámetro?
ejemplo:
SELECT nombre,rango from usuario WHERE usuario.fecha1 = textbox1 AND usuario.fecha2 = textbox2
pero como te dije antes las fechas provienen desde un form.
hola Silvio
ResponderEliminarlas fechas podrias pasarlos como datetime y luego usar:
WHERE usuario.fecha1 >= param1 AND usuario.fecha2 <= param2
o sea debes definir un rango
tambien podrias pasarlo como un valor numerico con el formato yyyyMMdd
saludos
Hola leandro, tengo una pregunta
ResponderEliminartengo rato buscando la solucion pero no encuentro el dato mira
CRVVisor.ReportSource = RDReporte;
en visual studio 2010 me lo pone como si no existiera Reportsourse.
ya busque en un buen de la dos y no encuentro el dato. ya que quiero asignar el reportdocument al crystalreportviewer, te comentor q no tengo mucha esperiencia en C#.
Leandro buenas noches tengo un problema con la impresión desde VB6 utilizando el Crystal Reports 7 con BD SQL; ojala puedas ayudarme.......
ResponderEliminarNo genera el Reporte cuando utilizo la BD en SQL, si utilizo una BD en Ms Acces no hay problema, lo genera bien.
La información que te puedo dar es la siguiente :
1.- Desde el VB6 utilizo el Control del Crystal Reports llamado : crRepPruebaImpresionSQL
2.- El Código que utilizo en el VB6 es :
Dim sSql As String
sSql = "Select * from Clientes where Codigo=" & txtCodigo.Text & " Order by Codigo"
crRepPruebaImpresionSQL.SQLQuery = sSql
crRepPruebaImpresionSQL.PrintReport
(txtCodigo.text contiene un valor para la selección del registro de la Tabla que deseo imprimir)
3.- En el Crystal Reports utilizo una conexión a la BD por medio del ODBC, en la cual le doy los siguientes parámetros :
- Controlador SQL Server
- Autenticación del SQL mediante Id y Contraseña
- Check en "Conectar con SQL Server para obtener la configuracion predeterminada de opciones de configuracion adicional"
- Ingreso el Id de inicio de sesión y la Contraseña de la BD
- Check en Establecer la Base de Datos como predeterminada e ingreso el nombre de la BD
4.- Al ejecutar el Programa en VB6 no genera el Reporte.
5.- En el Visor de sucesos del Windows veo que se genera el siguiente error :
"Error de inicio de sesión del usuario 'sa'. Motivo: la contraseña no es válida para el inicio de sesión proporcionado."
( a pesar que el Id y la Contraseña ingresados en el ODBC son las correctas )
6.- Este error ocurre solamente cuando utilizo la opción del parámetro : SQLQuery en el VB6.
Cuando omito esta sentencia sí genera el Reporte.
Pregunto si me falta ingresar algún otro parámetro adicional cuando utilizo el Parámetro SQLQuery.
Muchas gracias,
Juan Pablo Rivera
hola Dan Beta
ResponderEliminarlo que no reconoce es la propiedad del CrystalReportViewer o no permite crear una instancia del reporte
si escribes CRVVisor y luego pones punto, que metodos y propiedades desplega el VS ?
como defines RDReporte ? es una instancia del reporte rpt creado en el VS
has descargado he instalado Crystal que se integra al VS
saludos
hola Juan Pablo
ResponderEliminarla verdad hace muchisimo que no utilizo VB6 y mucho mas integrado con Crystal
no probaste en lugar de definir el sqlquery de dejar el select interno en el reporte y solo definir un parametro para que el filtro se realice internamente?
ese campo codigo es un campo numerico o de texto en la db? lo pregunto porque si es texto deberias poner el valor del parametro entre comillas simples
saludos
Hola Leandro (o cualquier persona q lea y esté en disposicion de ayudar :-p ), me gustaria que me escribieras a tita.cu@gmail.com, tengo un problema con mi aplicacion web, esta hecha en C#, con Vs2005 y se conectan los crystal report a una Bd en sql 2005, el problema es q el server hubo de cambiarse, cambiadose la ip, el nombre y el dominio, pero no la bd ni los datos incluidos en ella, mucho menos la web, ahora resulta que no funciona los reportes y no tengo la menor idea, por favor te agradeceria muchisimo si pudieras ayudarme, te adjunto el error q me muestra la página al tratar de cargar el reporte...:
ResponderEliminarFailed to open a rowset. Details: ADO Error Code: 0x Source: Microsoft OLE DB Provider for SQL Server Description: Could not find stored procedure 'XXX-YYY'. SQL State: 42000 Native Error: Failed to open a rowset. Error in File C:\WINDOWS\TEMP\Reporte_XXX-YYY {FEA244E7-BDCE-493A-845A-4F52E37098E1}.rpt: Failed to open a rowset.
eso es todo, no es la conexion a la Bd, pq eso ya lo revisé, tampoco el codigo de programacion o los permisos de mi user a la Bd....
bueno... espero q logres ayudarme, desde ya...
MIL GRACIAS!!!!
hola Tita
ResponderEliminarel mensaje del error parece ser bastante claro al indicar que no puede localizar el procedure
por lo que noto el reporte se conecta directo a los datos, pero si ejecutas esto desde tu entorno de desarrollo sigue funcionando ?
saludos
Me muestra el mensaje puntero no valido, estoy creando dos parametros:
ResponderEliminarDim param1, param2 As New ParameterField()
Dim valor1, valor2 As New ParameterDiscreteValue()
Dim parametros As New ParameterFields()
param1.ParameterFieldName = "fecha1"
param1.ParameterFieldName = "fecha2"
valor1.Value = txt_fecha_desde.Text
valor2.Value = txt_fecha_hasta.Text
param1.CurrentValues.Add(valor1)
param2.CurrentValues.Add(valor2)
parametros.Add(param1)
parametros.Add(param2)
Me podrias dar una ayudita, Gracias
hola David
ResponderEliminarno entendi, como es eso de "puntero no valido"
cual es el mensaje completo que recibes en el error?
este se produce al compilar o al ejecutar
saludos
Tengo un problema con un reporte el cual funcionamente muy bien localmente pero al momento de ejecutarlo en una maquina cliente ocurre que al acceder al reporte me bota una pantalla de login de conexion a base de datos
ResponderEliminarnombre del servidor : robert-pc
base de datos:
id de inicio de sesion
contrasena
y un check de utilizar seguridad integrada pongo el usuario i la respoectica contraseña pero me sale no es posible conectar toy trabajando con un bd oledb(ado)
si me pudieras ayudar?
hola tito
ResponderEliminarimagino el reporte lo conectas directo a la db, no?
la base a la cual te conectas es sql server ? porque recuerda que desde codigo deberias definir el connection string
Agregar el código de conexión del informe
en el articulo explica como podrias hacerlo
saludos
Hola; por lo que veo en verdad hay mucha ayuda aqui. Sólo deseo que continues así Tuttini por que tambien voy a necesitarle.
ResponderEliminarHola Leandro, de verdad valoro mucho lo que haces y quisiera si puedes orientarme sobre la contrucción de los reportes en modelo 3 capas que subiste. Es mejor o no crear una capa aparte para el reporte?
ResponderEliminarSaludos cordiales
Buenas Leandro muy buenos tus posts, era para hacerte una consulta en una aplicación de escritorio hecha con c# le paso parámetros a un reporte de crystal, pero no lo hago de la forma en que lo haces en este ejemplo ya que yo no muestro el reporte simplemente lo exporto, ahora bien al pasar los parámetros me dice que no puedo convertir un crystaldecisions.shared.parameterdiscretevalue a un crystaldecisions.shared.parametervalue esto al usar la version 13 del dll gracias de antemano por la ayuda que me puedas brindar.
ResponderEliminarHOla Leandro
ResponderEliminarMe pudieras explicar como se hace un procedimiento almacenado y como se manda a llamar desde vb.net 2005.
Ayuda por favor
Buenas tardes Leandro.
ResponderEliminarAyudame con algo, tengo el sgte codigo el cual me pasa los parametros que contienen las fechas de incio y fin de la semana, pero al momento de desmarcar esta linea y ejecutar//crystalReportViewer1.RefreshReport(); , me sale un cuadro que me pide que introduzca el valor de los parametros cosa que por codigo ya esta realizada como podria evitar esto, si me pudieras echar una mano.
ParameterField ParaFie1 = new ParameterField(); ParameterField ParaFie2 = new ParameterField();
ParameterFields ParaFis = new ParameterFields();
ParameterDiscreteValue ParaDis1 = new ParameterDiscreteValue(); ParameterDiscreteValue ParaDis2 = new ParameterDiscreteValue();
ParaFie1.ParameterFieldName = "fechainicio";
ParaFie2.ParameterFieldName = "fechafin";
ParaDis1.Value = fechin;
ParaDis2.Value = fechfin;
ParaFie1.CurrentValues.Add(ParaDis1);
ParaFie2.CurrentValues.Add(ParaDis2);
ParaFis.Add(ParaFie1);
ParaFis.Add(ParaFie2);
crystalReportViewer1.Zoom(1);
crystalReportViewer1.ParameterFieldInfo = ParaFis;
crystalReportViewer1.ReportSource = ReporteConsultaMensual1;
//crystalReportViewer1.RefreshReport();
Saludos.
no puedo descargar los archivos saludos
ResponderEliminarhola tito
ResponderEliminarimagino que los nombre de los parametros coinciden (y por las dudas los escribes respetando mayusculas y minusculas)con los definidos en el reporte
pero me pregunto para que realizas un refresh del report, si con solo asignar el ReportDocument el CrystalReportViewer este se actualiza directamente,
a donde apunto es que asignes un report document completo nuevamente al viewer no solo los parametros
saludos
hola Jhon
ResponderEliminarya estan actualizados los link para que puedas descargar los ejemplos
saludos
Hola Leandro que tal y si me podrias dar un ejemplo de como asignar un report document completo nuevamente al viewer y no tan solo los parametros.
ResponderEliminarSaludos.
hola Robert
ResponderEliminarpero en el ejemplo de este articulo lo estoy asignando, hacerlo nuevamente seria repetir la misma operacion, solo debes asignarlo como lo realizo en la linea:
crystalReportViewer1.ReportSource = report;
quizas tambine esto ayude
Creación de Reportes con Crystal Reports en Visual Studio 2005/2008
saludos
Hola Leandro soy david desde mexico :) Tengo una duda me dejaron cierta investigacion, pero no se que hacer mi investigacion es orientada a reportes pero no se si podrias ayudarme con las siguientes cuestiones, y ademas eres una pieza en programacion :( Bueno aqui van mis cuestiones.
ResponderEliminarVentajas y Desventajas de los Objetos de Informe.
diferentes objetos disponibles para visualizar informes y reportes.
De antemano muchas gracias... :(
hola Erik
ResponderEliminarn se si entendi el planteo, necesitas comparar diferente tipo de tools para armar reportes ?
digo quizas comparar Crystal Reports y Reporting Service
a que llamas objeto de informe ?
saludos
Estimado Señor:
ResponderEliminarVeo que es un experto programador y quizás pueda ayudarme con estos 2 problemas que le detallo :
P1: ¿Cómo actualizar los campos de una base que se usa en CystalR en tiempo de ejecución ?.
Me explico. Tengo una tabla que puede añadir campos con el formato Px . Creo un informe que muestra una fórmula {tabla.P1} y en tiempo de ejecución cambio la fórmula . Si después de creado el informe añado un campo P4 (y ya existían de P1 a P3 ) y llamo al informe da error ( tengo que ir al diseñador y actualizar la base y ya funciona). EN versiones anteriores (quizás la 4ó6) en las opciones del informe marcaba ACTUALIZAR la base y lo hacía sin problemas. Pero con la 2008 NO encuentro manera de hacerlo.
P2. ¿cómo cambiar la impresora en tiempo de ejecución? Por ejemplo, la impresora predeterminada es "hp1" y al imprimir el informe directamente , quiero hacerlo con la "hp2". Anteriormente cambiaba el drive,nombre impresora y puerto y no tenía problemas . Pero ahora NO soy capaz. Lo mismo ,llevo haciendo pruebas varios días .
El experimento más sencillo de los que he aplicado es
info1.PrintOptions.PrinterName = pri1
donde pri1="hp2"
info1.PrintToPrinter(Val(myValue), False, 0, 0)
Muchas Gracias por su tiempo y las molestias que pueda ocasionarle.
Santiago de Las Palmas
hola Santiago
ResponderEliminarla verdad cambiar el modelo de datos en runtime nunca lo he realizado, si defines el reporte con N cantidad de campos no puedes alterarlos dinamicamente, sino que debes diseñar el .rpt para que los reconozca.
no probaste usando el PrintDialog
Choosing a printer when printing from Crystal Reports in C#
Leandro:
ResponderEliminarGracias por la respuesta.
Respecto a actualizar los datos, ya lo he resuelto.
Era tan sencillo como insertar esta única línea infoNombre.VerifyDatabase
Respecto a la impresión , por desgracia el código expuesto en la página del link NO funciona.
Reitero mi agradecimiento.
Si se entera de como cambiar la impresora en la última versión de CR para VS , agradecería me enviara mensaje a datagrisan@gmail.com
Programo en vb.net 2010, en crystal report XI existia ReporteCR.PrintingStatus.Progress, ahora estoy migrando mi codigo a SAP_CrystalReport-VS2010(13.0.9.1312) y no encuentro esta función para controlar mi impresión en que estado esta, si alguien conoce esta función en SAP Crystal Report, le agradecere por la informacion.
ResponderEliminarhola Leandro tengo un problema con
ResponderEliminarCrystalReportViewer1.ReportSource me marca incorrecta la sintaxis cuando intento buscar la propiedad ReportSource tengo Crystal integrado a VS 2012 necesito ayuda.
hola joe
ResponderEliminarla verdad el PrintingStatus.Progress nunca lo he utilizado, es mas no sabia que existia
por lo de sintaxis incorrecta podrias validar que has agregado las referencia a las dll de crystal, o si defines el using en la parte superior de la clase con los namespace de crystal necesita
ademas recuerda que el ReportSource del viewer es una propiedad, debes asignarle la instancia que has creado
saludos
Hola Leandr0, podria ayudarme con un ejemplo para elaborar un reporte a partir de datos que tengo en los label del formulario?
ResponderEliminar-V C# 2008
-sqlServer
-Crystal report integrado
(pasa que pre-visualizo el resultado de mi consulta en el formulario y a partir de ahi quiero mandarlo a imprimir)
Gracias.
hola roob
ResponderEliminarsi usas un dataset tipado podrias volcar los datos de los controles a este y luego asignarlo al reporte
como lo realizo aqui
[Crystal Reports] - Exportar DataGridView a Crystal
como veras puedes generar el reporte sin que este se conecte a una db
saludos
Muchas gracias Leandro.
ResponderEliminarMe funciono de maravilla.
Hola Ale, como puedo pasar otro parametro ??? Gracias.
ResponderEliminarhola Felipe
ResponderEliminarpuedes aplicar esta misma tecnica y asignar los demas que definas en el reporte
creas otra instancia de ParameterField y lo asignas a la coleccion de parametros, asi puedes definir los que necesites en el reporte
saludos
Hola leandro mucho gusto
ResponderEliminarTengo una duda con respecto a generar reportes. Mi duda o pregunta es como puedo generar un reporte con los datos específicos de BD que tengo en SQL server.
Lo que quiero hacer es que, supongamos habro una ventana nueva donde en esa ventana se encuentran 3 txtbox donde a una le pongo 01 que es nivel, en otra 23 que es puesto, y en otra 15 que es cargo estos son datos específicos de 20 supongamos que solo quiero que aparezcan en mi reporte.
Esa es mi pregunta cuando el usuario quiera generar un reporte pueda seleccionar los datos que el quiere.
Agradecería mucho tu ayuda gracias.
hola Daniel
ResponderEliminarpodrias realizar una query que use esos datos como filtro para despues cargando un dataset tipado usarlo como ReportSource del reporte de crystal
[Crystal Reports] Usar DataSet Tipado con dos DataTable
lo que no compredi es si la seleccion del usuario se logra mediante el ingreso de esos 3 valores en textbox o si hay algun otra seleccion
saludos
Hola Leandro Siempre veo aportes tuyos en msdn es la primera vez que entro al blog me podrias por favor ayudar ya que estoy insertando una tabla con el "SetParameterValue" pero solo me agrega un registro en el parameter field agregue uno por cada campo y quiero saber como puedo asignar para que agregue toda la tabla y no solo un registro, el reporte ya lo tengo creado en una ruta solo lo abro inserto y guardo en pdf
ResponderEliminarhola Jesus
ResponderEliminares que toda una tabla no la asignas por parametro, para eso debes definir un ReportSource
deberias asignar un dataset tipado o coleccion para pasar los datos al reporte, revisa los otros articulos del blog donde hago uso de dataset como origen de datos del reporte
saludos
Buenos dias Leandro ya me dejo hacerlo pero el problema que tengo ahora es que por cada registro me agregaga una hoja nueva no me lo hace en una sola hoja si yo tengo 3 registros en la tabla me agrega una hoja por registro y no todos los registros en una hoja.
ResponderEliminarhola Jesus
ResponderEliminarestas ubicando el campo en la seccion correcta?
recuerda que debe ir en el "Details"
saludos
Muchísimas gracias ya pude :) ya quedo listo te lo agradeso
ResponderEliminarHola Leandro
ResponderEliminarTengo una duda como modifico la longitud de caracteres de una cadena ya que me aparece que solo puedo poner 255 caracteres.
tengo este texto " favor de revisar equipo por ruido garantia de la orden ot 91299 tecnico cristo no me la an facturado por eso no te paso el num de factura GARANTIA. POR DEFECTO DE FABRICACION. COMP. DEMACIO AJUSTADO DEL EXENTRICO DE PISTONES SE REBAJA Y SE CAMBIA PISTONES. OK. 23 . 09. 14. del cliente AUT0001 AUTOMATIZACIONES Y EQUIPOS,S DE R.L." como campo en mi base de datos, pero al momento en que saco mi reporte me aparece de la siguiente manera "favor de revisar equipo por ruido garantia de la orden ot 91299 tecnico cristo no me la an facturado por eso no te paso el num de factura GARANTIA. POR DEFECTO DE FABRICACION. COMP. DEMACIO AJ" como puedes ver se corta el texto 'no son los 255 caracteres ya que mis usuarios ponen espacios en blanco entre lineas de texto esto por que este documento pasa por varias areas de esta forma se sabe que son areas distintas.
Saludos cordiales......
hola jose
ResponderEliminarpodrias en una formula en ese campo validar la longitud de los datos que se mostratran y truncarla para que muestre una cierta cantidad de texto y al final le pones puntos suspensivos indicando al usuario que no se esta mostrando completo ya que excede el espacio en el reporte
conoces como definir formulas ?
saludos
Leandro y si uso una base de datos sql server 2008 el proceso es igual.
ResponderEliminarHola tengo un problema tengo diseñado un reporte que obtiene los datos por medio de una consulta a la base de datos.. el problema es que modifique unas cosas de la consulta y ahora al tratar de salir de del View Command no me pone uno de los parametros que estableci.. por ejemplo uso Año y Fecha y es la Fecha la que no me identifica.... como podria solucionarlo
ResponderEliminarQue tal Leandro, me podrías ayudar con el siguiente caso.
ResponderEliminarEn mi maquina local en mi proyecto puedo crear mi pdf con crystal sin ningun problema pero desde una maquina cliente me da el siguiente error.
Faltan los valores del parámetro.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.InteropServices.COMException: Faltan los valores del parámetro.
esto solo me pasa en la maquina cliente
hola fausto
ResponderEliminarla verdad no sabria decirte porque se produce este error
segun parece es un problema con los parametros que asignas al reporte, habria que ver el codigo de como los asignas, quizas defines el parametro pero le asignas vacio como valor
saludos
Hola Leandro, a mi me pasa algo sumamente extraño, cuando selecciono para crear un OLE DB Provider, la lista me aparece vacía! No se que pueda estar pasando, nunca había visto eso, me puedes ayudar?
ResponderEliminarSaludos y muchas gracias
hola Ignacio
ResponderEliminarno entendi, donde es que seleccionas el oledb provider ?
lo haces en el wizard que muestra crystal cuando creas un reporte?
quizas no tengas ningun proveedor de oledb disponible
porque no conectas el reporte a un dataset tipado y le asignas los datos desde codigo
saludos
No puedo ver las imagenes para crear el query en tu post en donde dice agregar comando
ResponderEliminarMe podrias ayudar en como escribes el query
Saludos
Hola Leandro, me acerco a ti con una consulta de Crystal Report Viewer
ResponderEliminarpues bien .... el crystal report está conectado directamente a la base de datos sql server .... el problema es que cuando me muestra los datos de la tabla donde se hace la consulta los campos de tipo numéricos aparecen con valor ###### esto cuando el valor en sql es mayor a cero ..........
espero puedas apoyarme en este caso
de antemano gracias
Saludos Cordiales
Iron Uriostegui
Hola que tal
ResponderEliminarMuy buen artículo, solo tengo una duda,
si el reporte es sobre las ventas de desde una fecha hasta otra fecha, ¿como puedo poner en el encabezado desde: parametrodesde y hasta: parametrohasta en el encabezado del reporte?
es decir, imprimir desde que fecha hasta que fecha contempla el reporte, gracias de antemano.
Hola que tal, tengo problemas con unos reportes, espero pueda ayudarme.
ResponderEliminar1. Como puedo cambiar una imagen dentro del reporte, quiero tomarla de una ruta que puede ser actualizada.
2. Mi reporte no se muestra en pantalla, se manda a la impresora directamente, en local si lo hace, pero ya con la aplicación arriba no, no me manda ningún mensaje de error, simplemente no lo imprime.
Estoy trabajando con VS2012, Crystal Report Versión 13_0_12 y es una aplicación Web.
Espero pueda ayudarme, Saludos
hola buen día, tengo problemas con un reporte, a grandes rasgos si yo utilizo un parametro de búsqueda o de filtro, por ejemplo busco por categorias, si me manda la información que requiero, pero si quiero un reporte de toda la información que tengo me lo manda en blanco, espero me puedan ayudar, me puedan orientar por favor. Muchas gracias
ResponderEliminarhola
EliminarLo que entiendo es que el parametro aplica siempre, por lo que deberias ver de usar en tu query un parametro opcional
Crystal Reports: Optional-Multi-Select Parameters
No se si el reporte lo conectas directo a la db o si asocias el reporte a un dataset, si tu caso es el ultimo quizar el filtro de los datos podrias hacerlo desde codigo y el parametro que sea simplemente informativo
saludos
Hola Leandro, buen días.
ResponderEliminar¿Podrías ayudarme a redimensionar el tamaño de un objeto de crystal report desde visual basic en tiempo de ejecución?
Es un objeto dibujo tipo cuadro, en visual tengo el siguiente código:
"rdEmbargoJud.ReportDefinition.ReportObjects("Box2").Right = 9495"
Sin embargo no me reconoce la propiedad, me envía el siguiente error:
"'Right' no es un miembro de 'CrystalDecisions.CrystalReports.Engine.ReportObject'."
Cuando trato de hacerlo con el width, me deja depurar el código
"rdEmbargoJud.ReportDefinition.ReportObjects("Box2").Width = 9375"
pero al momento de llegar a esta instrucción, me envía el siguiente error en tiempo de ejecución:
"InvalidArgumentException
La propiedad Width está obsoleta. Utilice la propiedad Right para cambiar la anchura."
He buscado en la web, pero no he encontrado nada parecido, no sé si se te ha presentado el caso, talves me puedas ayudar.
Muchas gracias por tu siempre oportuna colaboración.
hola
EliminarLos reportes deberian tener un diseño estatico en donde el campo se defina para poder contener el dato completo del campo, no creo que sea buena idea redimensionar en runtime. La verdad es que nunca tuve la necesidad de cambiar propiedades desde codigo
saludos
Hola Leandro, gracias por tu respuesta.
EliminarLo que pasa es que es un reporte que en base a cierto parámetro debe de mostrar una cantidad de columnas. El problema es que las columnas que se deben de ocultar están situadas entre dos columnas, esa es la única diferencia, de ahí todos los demás campos y columnas del reporte son similares y creí conveniente solamente ocultar las columnas y reubicar la restante, eso a la vez implica redimensionar la tabla en la que se muestran estos datos.
hola
EliminarClaro, el tema es que un reporte no es muy dinamicos, es mas no esta pensado para ser dinamicos
Lo que se suele hacer con crystal es poner condicionales para mostrar el campo o no, pero lo haces con una formula
Suppress field in Crystal Reports
saludos
hola Leandro, te explicare el problema que traigo, estoy tratando de exportar un reporte CrystalReports a un PDF per cuando hago esta acción(lo ejecuto) me manda un error de "InternalException was unhandled"
ResponderEliminarme pudieras ayudar porque que manda este error???
hola
EliminarLa verdad es bastante dificil que podra esta sucediendo con solo el mensaje de error
Habria que ver si es que el reporte se esta generando, si el pdf se esta exportando y como envias este en el Response para la descarga en el browser del cliente.
Quizas si planteas el problema en el foro de msdn seria mas simple de analizar, alli es mas facil publicar codigo
saludos
hola buenos días
ResponderEliminardesde hace una semana me sale este error en un informe que llevo trabajando desde hace años, por que es una factura.
error visor de informes crystal repots. no es posible exportar el informe
Si intento sacarlo en otro formato no me da ningún problema, el problema es en pdf..
Buenos dias.
ResponderEliminarEstoy trabajando con VB.NET 2003. Antes con VB6 y crystal 4.6 tenia la opcion de hacer formulas vacias desde el diseñador y despues desde VB le mandaba comentarios (string a esas formulas) y salian en el reporte. Ahora no estoy viendo esa opcion, pero imposible que no este....no me doy cuenta como hacerlo. Podrias ayudarme. Gracias
Buenas tardes Leandro tuttini, disculpa intento hacer un reporte de crystal reports pero en blanco, y quiero pasar unos parametros, pero simplemente no puedo, ya lo intente con los codigos de este blogs y tampoco me funciona, si pudieras ayudarme te lo agradeceria mucho
ResponderEliminarBuenas amigo, como puedo hacer para que tu código funcione en impresión directa con parámetros y que ya no me muestre vista previa, de frente que mande a la impresora (ojo que funcione con lo parámetros que usas en este tutorial)
ResponderEliminarEstimado Leandro, tengo una aplicacion hecha con VisualStudio 2012 y reportes con Crystal; en mi ambiente de desarrollo funciona muy bien pero al subirla a produccion me arroja el siguiente error; ¿alguna sugerencia que puedas darme?, gracias.
ResponderEliminarServer Error in '/' Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Source Error:
An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Source File: \\10.190.6.17\rcd.com.mx\public\soptec3\web.config Line: 33
hola
EliminarEse error se produce porque estas creando el sitio web en el IIS de forma incorrecta.
Si lo creas como una carpeta dentro del "Default web site" recuerda que debes convertir este a un Virtual Directory. El mensaje del error esta claro debes hacer que el virtual directory funcione como application para que pueda tene su propio config
Create Virtual Directory In IIS
saludos
hola
EliminarEste problema se presenta porque no estas configurando correctamente el virtual directory que seguramente creas dentro del "Default web site".
El mensaje del error justamente es lo que esta marcando, no defines el virtual directory como application por eso toma el web.config del sitio raiz y no puede definir el propio.
Create Virtual Directory In IIS
saludos