none
llamar a un metodo RRS feed

  • Pregunta

  • Saludos necesito saber como llamar a este metodo al hacer clic a un boton:

    EL metodo es para imprimir directo a la impresora sin tener la vista previa del crystalreport.

            public static void printCrystalReport(CrystalDecisions.CrystalReports.Engine.ReportDocument aoReport, int aiNumCopias, int aiPageBegin, int aiPageEnd, String asPrinterName)
            {
                if (asPrinterName == String.Empty)
                {
                    //            Buscamos la impresora por defecto del sistema
                    System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument();
                    asPrinterName = printDoc.PrinterSettings.PrinterName;
                }
                //rReport.PrintOptions.PrinterName = asPrinterName; //<---ORIGINAL COMO LO ENCONTRE EN INTERNET
                CrystalReport1 rReport = new CrystalReport1(); //<--- CrystalReport1 es el nombre de mi reporte. DE ESTA FORMA LO LLAME, CREO... QUE ESTA CORRECTO ASI
                rReport.PrintOptions.PrinterName = asPrinterName;
                aoReport.PrintToPrinter(1, false, 0, 0);
            }
    
    miércoles, 12 de abril de 2017 2:43

Respuestas

  • hola

    Pero en que contexto esta definido ese metodo ? esta dentro de una clase o en el mismo forma donde tienes el control de crystal report

    Si esta en el mismo form es directo, es ams no se porque le has puesto "static"

    Ahora si esta en una clase podria ser

    public void button1_Click(...){
    
        Class1.printCrystalReport(CystalReport1, 1, 1, 10, "printname");
    
    }

    si lod efines en una clase se pone primero el nombre de la clase y sin necesidad de instancia accedes a la funcion ay que es static

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DewinRD miércoles, 12 de abril de 2017 20:44
    miércoles, 12 de abril de 2017 11:16

Todas las respuestas

  • sería así...

     private void btnImprimir_Click(object sender, EventArgs e)
            {
                try
                {
                   printCrystalReport(ReportDocument rd, int valor1, int valor2, int valor3, string nombre);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Se ha producido un error. Detalle: " + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    a eso te refieres??? o a algo más específico?? saludos


    miércoles, 12 de abril de 2017 3:44
  • hola

    Pero en que contexto esta definido ese metodo ? esta dentro de una clase o en el mismo forma donde tienes el control de crystal report

    Si esta en el mismo form es directo, es ams no se porque le has puesto "static"

    Ahora si esta en una clase podria ser

    public void button1_Click(...){
    
        Class1.printCrystalReport(CystalReport1, 1, 1, 10, "printname");
    
    }

    si lod efines en una clase se pone primero el nombre de la clase y sin necesidad de instancia accedes a la funcion ay que es static

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DewinRD miércoles, 12 de abril de 2017 20:44
    miércoles, 12 de abril de 2017 11:16
  • Saludos Leandro,

    He hecho las correcciones tal cual como usted me recomendo y logre imprimir directo al printer sin problemas, pero hay algo que no logro corregir. En la cola de impresion se queda un estado: Imprimiendo

    MI CLASE:

    class Class1
        {
            public static void printCrystalReport(CrystalDecisions.CrystalReports.Engine.ReportDocument aoReport, int aiNumCopias, int aiPageBegin, int aiPageEnd, String asPrinterName)
            {
                try
                {
                if (asPrinterName == String.Empty)
                {
                    //Buscamos la impresora por defecto del sistema
                    System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument();
                    asPrinterName = printDoc.PrinterSettings.PrinterName;
                }
    
                //rReport.PrintOptions.PrinterName = asPrinterName; <---ORIGINAL COMO LO ENCONTRE EN INTERNET
    
                CrystalReport1 rReport = new CrystalReport1(); //<--- rReport para el reporte del crystal report
    
                rReport.PrintOptions.PrinterName = "NCR 7167 Receipt"; //<--- EL CODIGO DE ARIBA A MI MANERA, CREO... QUE ESTA CORRECTO ASI
                aoReport.PrintToPrinter(1, false, 0, 0);
                    
                }
                catch (Exception error)
                {
                    MessageBox.Show("ERROR AL INTENTAR IMPRIMIR EL TICKET (Class1). DESCRIPCION: "+error.ToString());
                }
    
            }
    
    
        }

    EJECUTAR LA CLASE MEDIANTE UN BOTON;

            private void btnImprimir_Click(object sender, EventArgs e)
            {
                CrystalReport1 rReport = new CrystalReport1();
                Class1.printCrystalReport(rReport, 1, 1, 10, "NCR 7167 Receipt");
             }
    

    BUENO CON ESO IMPRIMO DIRECTO AL PRINTER, PERO SE QUEDA EN LA COLA DE IMPRESION, POR LO QUE AL REINICIAR LA PC O CONECTAR Y DESCONECTAR EL PRINTER, COMIENZAN A IMPRIMIRSE TODOS LOS DOCUMENTOS NUEVAMENTE.


    viernes, 14 de abril de 2017 22:41