none
Imprimir facturas

    Pregunta



  • Amigos, como haria para que desde un formulario envie datos de una factura y se impriman en un formato ya existente, no se si tendria que insertar un objeto que reciba medidas en pixeles o centimetros, para que los datos caigan en el lugar adecuado, tendria que tomar medidas del formato ya existente.

    • Cambiado Fran DiazModerator viernes, 29 de mayo de 2009 7:44 Reporting ([Loc]From:Lenguaje C#)
    lunes, 05 de noviembre de 2007 15:21

Respuestas

  • Hola jasnet,

     

    El label y value de las propiedades de un parámetro son para poner el valor que tendrá ese parámetro y el labe es la etiqueta que tendrá el parámetro. Al ejecutar el informe en el control ReportViewer este mostrará un panel con los parámetros que haya en el informe, y el nombre que mostrará será el que pongas en el label ese .

     

    Luego dentro del diseño de tu informe, es donde tienes que mostrar el parámeto. Es decir, agregas por ejemplo un textbox y en su value poner esa expresión(=Parameters!Direccion.Value), ¿comprendes ahora? 

     

    Un Saludo

    jueves, 08 de noviembre de 2007 15:29
    Moderador

Todas las respuestas

  • Hola,

     

    Puedes usar un informe para ello. Visual Studio trae un control donde podrás ver informes de tipo Reporting Services. Si insertas un control ReportViewer(así es como se llama) podrás agregarle un nuevo informe, con tan solo irte a la parte superior derecha del control y en la pestañita que te sale le dices diseñar un nuevo informe.

     

    Este te creará un nuevo informe con extensión rdlc, el cual ya quedará enlazado al control ReportViewer(también puedes poner otros informes desde código). Una con el informe abierto, creas una nueva fuente de datos, agregas un control tabla u similares y podrás diseñar a tu gusto un informe. Decirte que puedes insertarle objetos(por si no trabajas con base de datos), un xml o la fuente de datos como ya te dije antes(access, oracle, sql server).

     

    En fin, espero que te sea util la información.

     

    Un Saludo

     

    lunes, 05 de noviembre de 2007 22:20
    Moderador
  • Gracias Fran Diaz, pero como paso informacion por ejemplo a textbox que estan en el reporte, desde mi formulario. Te pregunto xq nunca he trabajado con este tipo de reporte, mas si con Crystal Report pero este no es tan exacto, en cambio con el reporte que tu me dices se puede hacer con centimetros y todo esta muy bueno, me podrias decir como hacer lo que te dije al principio?? Te estaria muy agradecido
    martes, 06 de noviembre de 2007 17:04
  • Hola jasnet,

     

    Un informe se divide en tres partes, cabecera cuerpo y pie. En la cabecera y en el pie, no se pueden usar campos(quedate bien con este concepto) de la fuente de datos, pero sí se puede poner parámetros y cualquier control menos una tabla y un matrix. En la cabecera puedes poner por ejemplo el detalle de la factura, la cual puedes pasarla desde tu aplicación a través de parámetros.

    En el cuerpo, puedes poner como te dije antes una fuente de datos o crear unos campos para el informe. Luego si le pasas una datatable, un xml o un objeto que tenga la estructura de esos campos con los datos de tu formulario este los irá mostrando solos en el cuerpo(en la cabecera y pie no se puede, como ya te dije antes). Vale, ya sabes como funciona el cuerpo del informe, pero,¿como sabe donde poner esos datos?, pues agregas una tabla(es un control que viene en la toolbox cuando abres un informe en tiempo de diseño) y el te los mostrará ahí. Para mostrar los datos en una tabla, tan solo tienes que arrastar los campos creados anteriormente a las columnas y el informe los colocará. 

    Luego en el pie, puedes poner cosas como Globals!Page_Number u otras variables globales que podrás poner dentro de una caja de texto dandole a expresión. Escribiendo Globals! te saldrán todas las que hay.

     

    Esto es una pequeña introducción de como crear un informe. Con parámetros y una fuente de datos podrás armar todo tu informe. Por último, tienes aquí unos enlaces de mi blog donde expliqué como pasar los parámetros desde una aplicación al control ReportViewer.

     

    Enlaces:

     

    http://geeks.ms/blogs/fdiaz/archive/2007/08/20/llamando-a-nuestro-informe-desde-el-reportviewer.aspx

    Pequeña introducción a SSRS: http://geeks.ms/blogs/fdiaz/archive/2006/08/29/Presentando-a-Reporting-Services.aspx

     

    Ya me contarás que tal te fue.

     

    Un Saludo

     

    miércoles, 07 de noviembre de 2007 10:44
    Moderador
  • ok, mira en el Report1.rdlc en tiempo de diseño he creado por ejemplo unos TextBox para la cabezera x ejemplo txtSeñores, txtDireccion, txtFecha y los he ubicado justo a la medida con centimetros y todo para que a la hora de imprimir cuadren bien en la factura. Ahora desde mi formulario que contiene el objeto ReportViewer, quiero llenar los textbox mensionados al principio como los envio, xq en tu articulo hay codigo como pasar parametros, pero como le especifico x ejemplo que un valor tiene que ir por decir al txtDireccion.

    He puesto algo asi:

     

    Bloque de código

    String cad="Una direccion";

    ReportParameter p = new ReportParameter("txtDireccion", cad);

    this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });

     

     

     

    claro que al comienzo he tenido que importar el namespace Microsoft.Reporting.WinForms.

     

    Haber dime que le falta a ese codigo para que solo me muestre ese campo de la cabezera (txtDireccion), bastara solo saber como hago eso y lo hago todo. De todas maneras gracias por ayudarme!!!

    miércoles, 07 de noviembre de 2007 20:55
  • Hola jasnet,

     

    Creo haberte entendido(o eso pienso, jejeje). Para asignar una valor a un textbox de un informe, tan solo tienes que irte a las propiedades y escribir esto: =Parameters!MiParametro.Value, donde MiParametro es él parámetro que tu hayas creado para ese campo. ¿Es esto lo que necesitas?

     

    Un Saludo

     

    jueves, 08 de noviembre de 2007 12:43
    Moderador
  • ya ok me voy a las propiedades del informe y uno de sus atributos es ReportParameters, me voy alli,  y sale una ventana donde aparece Name, DataType y prompt, luego varios checksbox,luego un grid abajo(Available values) y por ultimo Default values. Alli creo un parametro x ejemplo Direccion  (en name) y bueno los demas datos no los llené. pero luego como lo asocio a el texbox,  ya que existen en sus propiedades una Label y otra Value en cual de los dos pongo la expresion =Parameters!Direccion.Value, o donde devo poner la expresion en las propiedades del informe o en las del textbox. Y tambien t queria preguntar si esta bien ese trozo de codigo que puse en el mensaje anterior, como para enviar el parametro al informe.

    Disculpa tio que t pregunt mucho es que como te digo nunca he usado este tipo de Reporte y quisiera que me indiques mas detallado si no es mucha molestia, gracias
    jueves, 08 de noviembre de 2007 15:10
  • Hola jasnet,

     

    El label y value de las propiedades de un parámetro son para poner el valor que tendrá ese parámetro y el labe es la etiqueta que tendrá el parámetro. Al ejecutar el informe en el control ReportViewer este mostrará un panel con los parámetros que haya en el informe, y el nombre que mostrará será el que pongas en el label ese .

     

    Luego dentro del diseño de tu informe, es donde tienes que mostrar el parámeto. Es decir, agregas por ejemplo un textbox y en su value poner esa expresión(=Parameters!Direccion.Value), ¿comprendes ahora? 

     

    Un Saludo

    jueves, 08 de noviembre de 2007 15:29
    Moderador
  • Gracias Fran Diaz por tu paciencia, ahora si ya esta todo ok!!!
    lunes, 12 de noviembre de 2007 20:22
  • Jejeje, me alegro de verdad . Todo sale tarde o temprano!!!!

     

    Un Saludo

     

     

    lunes, 12 de noviembre de 2007 21:53
    Moderador
  • tiene que ser alguna sencillo pero yo al escribir este codigo:

    Dim cad As String = "Una direccion"

    Dim p As New ReportParameter("txtOrden", cad)

    Me.ReportViewer1.LocalReport.SetParameters(p)

     

    obtengo este error:


      Message="Unable to cast object of type 'Microsoft.Reporting.WinForms.ReportParameter' to type 'System.Collections.Generic.IEnumerable`1[Microsoft.Reporting.WinForms.ReportParameter]'."

     

    donde esta el fallo???

    gracias
       

    viernes, 16 de noviembre de 2007 7:51
  • Hola,

     

    ¿Has insertado el espacio de nombres de esa clase?

     

    Un Saludo

     

    viernes, 16 de noviembre de 2007 8:58
    Moderador
  • si te refieres a

    imports Microsoft.Reporting.WinForms está incluido.

     

    Si escribo

    Dim parametros As New List(Of ReportParameter)

    ' Añado los parámetros necesarios.

    parametros.Add(New ReportParameter("Param", "Valor o Array de valores"))

    ' Añado el/los parámetro/s al ReportViewer.st

    ReportViewer1.LocalReport.SetParameters(parametros)

     

    no tengo error (obtengo otro del localreport pero es otro tema).

     

    la historia de todo esto es que para winforms puedo utilizar list pero para asp.net, no me deja.

     

    que puedo utilizar???

     

    Fran gracias por tu ayuda. es la grandeza de la red, ayudar a la peña sin conocernos.

    viernes, 16 de noviembre de 2007 13:34
  • Hola,

     

    La verdad no utilicé nunca un list, suelo utilizar tablas para hacer mis informes. ¿Has probado con una tabla?

     

    Un Saludo

     

    miércoles, 21 de noviembre de 2007 10:12
    Moderador
  • Reviviendo el tema.

     

    Tengo una aplicacion ligada a una BD Access y mi intencion es hacer un reporte (en realidad es un contrato) usando algunos campos de mi BD, esto ya lo tengo en word mediante combinar correspondencia, no dnetro del programa si no por separado. Por ej:

     

    "El día [campo fecha] se celebra este contrato para el ciudadano [campo nombre persona]

    que se compomete a pagar [campo cantidad] en [campo pagos] mensualidades..."

     

    Entonces pense que tal vez seria bueno implementarlo con crystal reports pero no lo logre, asi que "descubri" los 'Informes de Reporting Services' en VS2k8 que me parecen mas amigables que CR pero aqui tengo la duda si es posible -como en word- introducir todo un bloque de texto y entre insertar los campos deseados y que se ajuste el texto segun el tamaño del dato dentro del campo. Por lo poco que estado moviendole solo se pueden insertar bloques de texto sin autoajuste.

     

    Gracias por sus comentarios.

    martes, 26 de febrero de 2008 18:37
  • Hola,

     

    ¿A que te refieres cuando dices: texto sin autoajuste? ¿Has probado con la propiedad CanGrow?

     

    Un Saludo

     

    miércoles, 27 de febrero de 2008 7:46
    Moderador
  • Si ya revise la propiedad CanGrow, pero como lo mostraba en mi ejemplo:

     

     

    "El día [campo fecha] se celebra este contrato para el ciudadano [campo nombre persona]

    que se compomete a pagar [campo cantidad] en [campo pagos] mensualidades..."

     

     

    Lo que esta en azul son textbox, para cada frase o bien es un textbox pero entre El día  y se celebra este contrato para el ciudadano hay espacios en blanco de tal manera que coloco el [campo fecha] pero es calculando el tamaño de la fecha.

     

    No se si ubiques la función combinar correspondencia de Word pero te dejo una imagen para que mires lo que pretendo hacer:

     

     

     

     

    EDIT:

    Ahhh ya lo logre, es que no estoy muy informado de como va esto, pero lo solucione colocando en el textbox una Espresión y no solo el campo del dato, así concateno campos de la BD y texto.

     

    EDIT2:

    Ufff despues de muchos intentos logre hacer el informe, como inserto un espacio entre parrafos en una expresión? De momento lo solucione insertando 2 textbox.

     

    Y ahora el problema es que mando a imprimir con un plotter y muestra el mensaje Controlador no válido, en el reportViewer mencionar que imprimo con el plotter todo tipo de documentos en diversos programas.

     

    Gracias.

    miércoles, 27 de febrero de 2008 18:33
  • Para insertar líneas en blanco no tienes más que concatenar saltos de línea.

    texto + chr(13) + chr(10) + texto.

    por cada chr(13) + chr(10) que pongas hace un salto de línea.  Si pones dos seguidos te dejará una línea en blanco entre un párrafo y el siguente.

    Para poder imprimir texto de forma dinámica en Crystal Reports colgué un pequeño artículo en www.mygnet.com en el que explico como se hace.

    Un saludo
    jueves, 13 de marzo de 2008 12:51
  • Amigos que tal? les comento

    Tengo el siguiente problema ya tengo diseñado mi reporte pero maestro los datos en un grid el problema es que estoy imprimiendo en un formato

    ya definido, entonces cuando el grid va creciendo me va empujando por decirlo asi los objetos que tengo abajo, entonces necesito deffinir cuantas filas maximo me va a parmitir

    Gracias de antemano

    sábado, 08 de septiembre de 2012 0:59