none
Agregar Imagen a reporte por medio de DataSet RRS feed

  • Pregunta

  • Buen día, tengo un proyecto con un formulario en el cual puedo visualizar información personal y la foto de esta persona, estoy creando un reporte.rdlc el cual estoy llenando con la información del formulario, todo lo llevo creando una clase con el envio de datos:

    public class imprimirFicha
        {
            public string nombre { get; set; }
            public string apellidos { get; set; }
            public string edad { get; set; }
            public string juzgado { get; set; }
            public string padre { get; set; }
            public string medida { get; set; }
            public string patio { get; set; }
            public string observaciones { get; set; }
            public string fecha { get; set; }
            public string situacion { get; set; }
            public string motivo { get; set; }
            public Image imagen { get; set; }
            
        }
    }

    el cual en el botón imprimir envió los datos de esta manera a un DataSet

    imprimirFicha imprimir = new imprimirFicha();
                frmReportepersonal frm = new frmReportepersonal();
                imprimir.nombre = txtNombre.Text;
                imprimir.apellidos = txtApellidos.Text;
                imprimir.edad = txtEdad.Text;
                imprimir.fecha = Convert.ToString(dtpFechaingreso.Value);
                imprimir.juzgado = txtJuzgado.Text;
                imprimir.medida = txtMedida.Text;
                imprimir.motivo = txtMotivo.Text;
                imprimir.observaciones = txtObservaciones.Text;
                imprimir.padre = txtApoderado1.Text;
                imprimir.patio = cboPatio.Text;
                imprimir.situacion = txtApoderado2.Text;
                imprimir.imagen = ptbImagen.Image;
                frm.imprimir.Add(imprimir);
                frm.Show();

    pero al momento de crear el DataSet en Conjuntos de datos seleccionando el proyecto y un Objeto para llamar a la clase creada me cargan todos los datos menos la imagen y no puedo llamarla en el diseño del reporte.rdlc

    espero me entiendan, no soy nada bueno explicando, lo siento

    viernes, 14 de abril de 2017 21:46

Respuestas

  • El reporte no entiende el dato de tipo Image, que es un objeto de .NET, pero es desconocido para el generador de reportes. Normalmente los reportes lo que hacen es tomar la imagen de un campo binario de la base de datos, y en el campo binario están los bytes de la imagen uno detrás de otro. Aunque en tu caso no estés usando una base de datos, sino construyendo los datos en memoria, el reporte espera encontrarse los datos en el mismo formato que si los hubieras leído desde la base de datos.

    Eso significa que tienes que declarar el campo como byte[] en lugar de Image, y meter en ese campo los bytes extraídos del Image. Para extraer los bytes de un Image, puedes usar su método Save y salvarlos a un MemoryStream, y luego llamas a .ToArray sobre el MemoryStream y eso ya te devuelve el array de bytes.

    sábado, 15 de abril de 2017 8:43