Usuario
crystal reports asp.net c# sql server2008

Pregunta
-
hola a todos buenas tardes
he estado buscando en internet y no encuentro un manual o algo desde el principio para crear un crystal reports, es que tengo dos tablas solicitud y solicitudDetalle
entonces pues solicitud guarda todos los campos, y detalle guarda todas las fechas que se guardaron en la solicitud, esto es un proyecto asp.net con c# y sql server 2008, lo que quiero hacer, es que yo tengo en una lista todas las solicittudes creadas, quiero darle dobleclick a un item de la lista y que me habra una ventana html con el crystal reports de solicitud, que debe incluir pues los campos de la tabla solicicutd y la de detalles, dependiendo que solicitud abran verdad, pero no he encontrado como hacer esto, que debo hacer primero o despues, quisiera poder configurar la pagina crystal reports en hoja tamaño carta y acomodar todos los campos para cuando se llene llene la pagina todo este dondebe debe estar , y poder imprimirla pagina
- Cambiado Eduardo PorteschellerModerator jueves, 10 de noviembre de 2011 16:20 (De:Lenguaje C#)
Todas las respuestas
-
hola
bueno responder a todo seria bastanter largo, pero ataquemos primero crystal
estas usando dataset tipado como origen de datos del reporte ? porque si esi podrias cargar mediante una query
quiero darle dobleclick a un item de la lista
que tipo de lista ? es un gridview
que me habra una ventana html con el crystal reports de solicitud
deberias ser un aspx, en un html no vas a poder poner el control CrystalReportViewer y asignar los datos
la idea es que uses el window.open() de javascript para lanzar esta nueva ventana que contiene el control viewer del reporte
a esta pagina le pasas el id del la entidad que seleccionas al editar
<script ..>
funcrion openreport(idsolicitud){
var url = 'reportview.aspx?idsolucitud=' + idsolicitud;
window.open(url , '', 'options');
}
</script>
nota: en options debes definir als opciones del window.open()
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
-
hola
el tema es que deberias trabajarlo con un dataset tipado
[Crystal Reports] Usar DataSet Tipado con dos DataTabla
entocnes cargar dos datatable uno de solicitud y el otro de detalle, el filtro lo aplicas desde codigo en la query en su filtro
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
-
-
-
leandro ya estoy crenado mi archivo rpt, y le estoy dando forma
estoy insertando cuadro textos
por ejemplo pongo un cuadro de texto con el texto Nombre Completo, y enfrente de el pongo otro cuadro de texto pero sin texto jejeje
donde espero poder poner los datos de la tabla y asy todos los campos necesarios, pero una duda, como pongo una foto???
-
si yo tengo este metodo
public DataTable TraerSolicitudIdSolicitud(int IdSolicitud) { int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consulta = "dbo.spsTraerSolicitudIdSolicitud"; SqlConnection myConeccion; myConeccion = new SqlConnection(cadenaConeccion); SqlCommand myConsulta = new SqlCommand(consulta, myConeccion); myConsulta.CommandType = CommandType.StoredProcedure; myConsulta.Parameters.AddWithValue("idSolicitud", idSolicitud); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(myConsulta); da.Fill(dt); return dt; }
con ese metodo me traigo todos los campos de solicitud, de una solicitud seleccionada, como hago para que el crytal reports que diseñe, vea a ese objeto y poder ponerlos en los campos del crystal reports -
si yo tengo es te metodo
si yo tengo este metodo public DataTable TraerSolicitudIdSolicitud(int IdSolicitud) { int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consulta = "dbo.spsTraerSolicitudIdSolicitud"; SqlConnection myConeccion; myConeccion = new SqlConnection(cadenaConeccion); SqlCommand myConsulta = new SqlCommand(consulta, myConeccion); myConsulta.CommandType = CommandType.StoredProcedure; myConsulta.Parameters.AddWithValue("idSolicitud", idSolicitud); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(myConsulta); da.Fill(dt); return dt; } con ese metodo me traigo todos los campos de solicitud, de una solicitud seleccionada, como hago para que el crytal reports que diseñe, vea a ese objeto y poder ponerlos en los campos del crystal reports
-
es que mientras uses esto
DataTable dt = new DataTable();
lo veo complicado
deberias crear un dataset tipado
[Crystal Reports] Usar DataSet Tipado con dos DataTable
como veras la query es igual a la que usas, pero usas un dataset tipado que define los datos del reporte
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
me quedan dudas con tu ejemplo, ya que declaras un dataAdapter da
y ese es el valor que regresas, pero no declaras como un dataset, ahora realmente yo tengo dos tablas tal como dices en tu ejemplo la tabla solicitudes y la tabla solicitudes detalle, no se como juntarlas en el procedimiento almacenado, o no se si se deba, ya que son dos consultas distintas, como puedo guardarlas en un dataset, estos son los dos metodos los de solicitud y el de detalle
public DataTable TraerSolicitudIdSolicitud(int IdSolicitud) { int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consulta = "dbo.spsTraerSolicitudIdSolicitud"; SqlConnection myConeccion; myConeccion = new SqlConnection(cadenaConeccion); SqlCommand myConsulta = new SqlCommand(consulta, myConeccion); myConsulta.CommandType = CommandType.StoredProcedure; myConsulta.Parameters.AddWithValue("idSolicitud", idSolicitud); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(myConsulta); da.Fill(dt); return dt; }
ese es el metodo que trae la solicitudpublic DataTable TraerSolicitudDetalle(int IdSolicitud) { int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consulta = "dbo.spsTraerSolicitudSolicitudDetalle"; SqlConnection myConeccion; myConeccion = new SqlConnection(cadenaConeccion); SqlCommand myConsulta = new SqlCommand(consulta, myConeccion); myConsulta.CommandType = CommandType.StoredProcedure; myConsulta.Parameters.AddWithValue("idSolicitud", idSolicitud); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(myConsulta); da.Fill(dt); return dt; }
y ese es el metodo que trae la solicitud detalle, ahora como creo un dataset tipado en base a esos dos metodos, podria ser con un refpublic dataset data(ref traerSolicitud, ref traerDetalle)
o no se si modificando el procedimiento almacenado osea creando otro que traiga todo, me podrias poner un ejemplo de como hacer ese dataset con la informacion que tengo
-
espero y me puedan contestar este post, segun lo que e leido un dataset es un conjunto de datos, que puede contener varias tablas, el objeto encargado de pasar los datos a un dataset es el dataAdapter, por medio de los objetos de coneccion, segun algo que lei, seria correcto crear un dataAdapter para cada tabla que se va a crear, entonces cree este metodo, espero y me corrijan si o que me digan loq ue falta por que necesito relacionar las dos consultas hay les va el metodo
public DataSet TraerSolicitudDatos(int IdSolicitud) { //variables inicializadas int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consultaSolicitudesDetalle = "dbo.spsTrearSolicitudDetalle"; string consultaSolicitudesId = "dbo.spsTraerSolicitudId"; //objetos de coneccion, declaracion y creacion en una linea SqlConnection miConeccion = new SqlConnection(cadenaConeccion); SqlCommand miConsultaSolicitudes = new SqlCommand(consultaSolicitudesDetalle, miConeccion); SqlCommand miConsultaSolicitudesID = new SqlCommand(consultaSolicitudesId, miConeccion); miConsultaSolicitudes.CommandType = CommandType.StoredProcedure; miConsultaSolicitudesID.CommandType = CommandType.StoredProcedure; miConsultaSolicitudes.Parameters.AddWithValue("idSolicitud", idSolicitud); miConsultaSolicitudesID.Parameters.AddWithValue("idSolicitud", idSolicitud); //se crea el dataAdapter SqlDataAdapter adaptadorSolicitudes = new SqlDataAdapter(miConsultaSolicitudes); SqlDataAdapter adaptadorSolicitudesID = new SqlDataAdapter(miConsultaSolicitudesID); DataSet traerSolicitudesDatos = new DataSet(); DataTable solicitudDetalle = new DataTable(); DataTable solicitudId = new DataTable(); adaptadorSolicitudes.Fill(traerSolicitudesDatos, solicitudDetalle); adaptadorSolicitudesID.Fill(traerSolicitudesDatos, solicitudId); return traerSolicitudesDatos; }
espero sus comentarios -
ok leandro ya tengo mi metodo con dos tablas ahora como lo mando a mi crystal reports este es el metodo
public DataSet TraerSolicitudDatos(int IdSolicitud) { //variables inicializadas int idSolicitud = IdSolicitud; string cadenaConeccion = ConfigurationManager.ConnectionStrings["cadenaConeccion"].ConnectionString; string consultaSolicitudesDetalle = "dbo.spsTrearSolicitudDetalle"; string consultaSolicitudesId = "dbo.spsTraerSolicitudId"; //objetos de coneccion, declaracion y creacion en una linea SqlConnection miConeccion = new SqlConnection(cadenaConeccion); SqlCommand miConsultaSolicitudesDetalle = new SqlCommand(consultaSolicitudesDetalle, miConeccion); SqlCommand miConsultaSolicitudesID = new SqlCommand(consultaSolicitudesId, miConeccion); miConsultaSolicitudesDetalle.CommandType = CommandType.StoredProcedure; miConsultaSolicitudesID.CommandType = CommandType.StoredProcedure; miConsultaSolicitudesDetalle.Parameters.AddWithValue("idSolicitud", idSolicitud); miConsultaSolicitudesID.Parameters.AddWithValue("idSolicitud", idSolicitud); //se crea el dataAdapter SqlDataAdapter adaptadorSolicitudesDetalle = new SqlDataAdapter(miConsultaSolicitudesDetalle); SqlDataAdapter adaptadorSolicitudesID = new SqlDataAdapter(miConsultaSolicitudesID); DataSet traerSolicitudesDatos = new DataSet(); adaptadorSolicitudesDetalle.Fill(traerSolicitudesDatos, "solicitudDetalle"); adaptadorSolicitudesID.Fill(traerSolicitudesDatos, "solicitudID"); return traerSolicitudesDatos; }