none
Generar recibos de pagos de N Clientes Visual Basic 2015 RRS feed

  • Pregunta

  • Hola! Necesito generar recibos de pagos para cobranza de una empresa, la cual, contiene, No. Contrato, Nombre, Importe, Total y Fecha, todo de una Tabla llamada Clientes, mi base de datos es de Access 2016, se imprimen en una hoja oficio membretada con 10 recibos cada hoja. Mi sistema lo tengo hecho en Visual Studio 2015 y manejo Visual Basic.

    Quisiera saber la forma de como hacerlo, ya que he buscado en internet y no he encontrado nada. De antemano doy las gracias por la ayuda prestada.

    miércoles, 13 de septiembre de 2017 3:03

Respuestas

  • Hay un par de formas de generar 10 recibos por hoja: Una es definirlo con muchísimo cuidado de forma que el tamaño del recibo sea exactamente 1/10 del tamaño del papel, y tener cuidadosamente en cuenta los tamaños de los márgenes, líneas de separación, y cualquier otro factor que influya en el espacio ocupado por cada recibo. Con eso irá rellenando los recibos en la hoja y saltando cada 10 y añadiendo más hojas cuando sea necesario.

    La otra solución consiste en hacer un informe con las 10 ocurrencias del recibo, y trucar el origen de datos de forma que los devuelva de 10 en 10 (y rellene con blancos cuando llegue al final), y meter saltos de página entre cada dos copias del bloque de 10.

    En ambos casos se requiere un buen dominio y conocimiento de cómo funciona el generador de reportes y cómo alimentarlo de datos. No tengo ningún ejemplo, cada vez que hay que configurar algo así es cuestión de tirarse horas probando y ajustándolo minuciosamente hasta que funciona como se desea.

    Puedo proponer otra alternativa, que no requiere usar el diseñador de informes: Usa un objeto PrintDocument, y en su evento PrintPage usa las instrucciones de System.Drawing para hacer DrawText en las posiciones que quieras. Esto lleva más líneas de código que el informe, pero puede que resulte más sencillo ubicar cada cosa en su sitio porque desde programación le vas diciendo qué quieres y dónde lo quieres, así que puedes forzar exactamente el número y ubicación de los recibos y cuándo quieres hacer un salto de página.

    miércoles, 13 de septiembre de 2017 19:03

Todas las respuestas

  • Utiliza alguna herramienta de reportes, tal como el ReportViewer junto con los reportes .rdlc que viene incluido con Visual Studio (solo en las versiones de pago, la Express no trae el diseñador de reportes). Con el diseñador, haz el "esqueleto" de los recibos de forma que cada campo de texto esté ubicado en las mismas coordenadas que debe tener en la hoja membretada (el diseñador tiene una ventanita de propiedades que te permite especificar la ubicación exacta en milímietros -- acuérdate de tener en cuenta lo que midan los márgenes, que también son configurables).

    Una vez diseñado el reporte, aliméntalo con un DataSet que rellenarás de datos desde tus tablas usando un dataadapter que contenga una Select que te proporcione los datos deseados.


    miércoles, 13 de septiembre de 2017 6:05
  • Con éso podré imprimir los 10 recibos en una hoja, o sea, 10 clientes diferentes con sus respectivos datos? y por ejemplo, son mas de 300 clientes, se agregará una hoja?

    Se que es mucho pedir, pero no tendrás un ejemplo de una tabla de clientes, con id, nombre y hacer un reporte de recibos, yo lo adaptaría, no pido que me diseñes el sistema, solo pido el camino a seguir, al menos un ejemplo, generar recibos, lo que sea, ayudaría, porque en la red solo muestra como hacer un recibo, y yo necesito recibos de hoja membretada para N clientes.

    Gracias por la respuesta, se agradece. Saludos.

    miércoles, 13 de septiembre de 2017 16:59
  • Hay un par de formas de generar 10 recibos por hoja: Una es definirlo con muchísimo cuidado de forma que el tamaño del recibo sea exactamente 1/10 del tamaño del papel, y tener cuidadosamente en cuenta los tamaños de los márgenes, líneas de separación, y cualquier otro factor que influya en el espacio ocupado por cada recibo. Con eso irá rellenando los recibos en la hoja y saltando cada 10 y añadiendo más hojas cuando sea necesario.

    La otra solución consiste en hacer un informe con las 10 ocurrencias del recibo, y trucar el origen de datos de forma que los devuelva de 10 en 10 (y rellene con blancos cuando llegue al final), y meter saltos de página entre cada dos copias del bloque de 10.

    En ambos casos se requiere un buen dominio y conocimiento de cómo funciona el generador de reportes y cómo alimentarlo de datos. No tengo ningún ejemplo, cada vez que hay que configurar algo así es cuestión de tirarse horas probando y ajustándolo minuciosamente hasta que funciona como se desea.

    Puedo proponer otra alternativa, que no requiere usar el diseñador de informes: Usa un objeto PrintDocument, y en su evento PrintPage usa las instrucciones de System.Drawing para hacer DrawText en las posiciones que quieras. Esto lleva más líneas de código que el informe, pero puede que resulte más sencillo ubicar cada cosa en su sitio porque desde programación le vas diciendo qué quieres y dónde lo quieres, así que puedes forzar exactamente el número y ubicación de los recibos y cuándo quieres hacer un salto de página.

    miércoles, 13 de septiembre de 2017 19:03
  • Muchas Gracias por tusd consejos y por molestarte a responder, lo voy a intentar con el PrintDocument a ver que tal sale y postearé la solución cuando la tenga lista para que a alguien mas le sirva en un futuro.
    jueves, 14 de septiembre de 2017 1:49