none
crystal reports asp.net c# sql server2008 RRS feed

  • 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

    martes, 8 de noviembre de 2011 20:43

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
    martes, 8 de noviembre de 2011 20:54
  • okokok, realmente mi metodo c# sharp no me trae un dataset, por que no vi por que jejejeje

    mi metodo me trae un datatable,

    return datatable

    que contiene toda la informacion de la solicitud

    martes, 8 de noviembre de 2011 21:04
  • 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
    martes, 8 de noviembre de 2011 21:09
  • en tu archivo hay un datosEmpresaReport.rpt, ese como lo creo
    martes, 8 de noviembre de 2011 21:22
  • es el archivo de crystal

    sino puedes crear un rpt entocnes que crystal estas usando ?

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 8 de noviembre de 2011 21:25
  • no es que no pueda, jejeje es que nunca lo he hecho, yo tengo el visual studio 2008 y buscando en internet me dice que ya lo integra que el 2005 no, pero que el 2008 ya lo integra, pero no se como crear ese archivo
    martes, 8 de noviembre de 2011 21:32
  • 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???

    martes, 8 de noviembre de 2011 23:06
  • 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

    miércoles, 9 de noviembre de 2011 16:33
  • 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 
    

    miércoles, 9 de noviembre de 2011 16:34
  • 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
    miércoles, 9 de noviembre de 2011 16:57
  • 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 solicitud

     

    public 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 ref

    public 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

    miércoles, 9 de noviembre de 2011 17:25
  • 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

    miércoles, 9 de noviembre de 2011 20:28
  • 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;
        }
    

    jueves, 10 de noviembre de 2011 18:02