none
Imprimir reporte directo de crystalreport RRS feed

  • Pregunta

  • Saludos, quisiera saber que estoy haciendo mal en cuanto al siguiente codigo.

    Quiero mandar a imprimir un reporte pre-diseñado en crystalreport sin vista previa.

    Libreria agregada: using CrystalDecisions.Shared;

    Nombre del reporte: CrystalReport1.rpt

    Nombre de mi impresora: "NCR 7167 Receipt"

    Codigo que encontre por internet, descuiden es corto:

    public virtual void PrintToPrinter(int nCopies, bool collated, int startPageN, int endPageN);
    
    private void PrintReport(string printerName)
    {
       PageMargins margins;
    
       // Get the PageMargins structure and set the 
       // margins for the report.
       margins = Report.PrintOptions.PageMargins;
       margins.bottomMargin = 350;
       margins.leftMargin = 350;
       margins.rightMargin = 350;
       margins.topMargin = 350;
       // Apply the page margins.
       Report.PrintOptions.ApplyPageMargins(margins);
    
       // Select the printer.
       Report.PrintOptions.PrinterName = printerName;
    
       // Print the report. Set the startPageN and endPageN
       // parameters to 0 to print all pages.
       Report.PrintToPrinter(1, false,0,0);
    } 
    
    //COMO LO ESTOY COLOCANDO:
    
    public virtual void PrintToPrinter(int nCopies, bool collated, int startPageN, int endPageN);
            private void PrintReport(string printerName)
            {
                PageMargins margins;
    
                // Get the PageMargins structure and set the 
                // margins for the report.
                CrystalReport1 Report = new CrystalReport1(); //<---- mi reporte no estoy seguro que deba ser llamado asi ok-------------
                Report.PrintToPrinter(1, false, 0, 0);
    
                margins = Report.PrintOptions.PageMargins;
                margins.bottomMargin = 350;
                margins.leftMargin = 350;
                margins.rightMargin = 350;
                margins.topMargin = 350;
                // Apply the page margins.
                Report.PrintOptions.ApplyPageMargins(margins);
    
                // Select the printer.
                Report.PrintOptions.PrinterName = "NCR 7167 Receipt"; // <---- el nombre de mi impresora
    
                // Print the report. Set the startPageN and endPageN
                // parameters to 0 to print all pages.
                Report.PrintToPrinter(1, false, 0, 0);
            } 

    Error que me presenta:

    NOTA: FAVOR INDICARME COMO LLAMAR ESTE METODO AL HACER CLIC A UN BOTON.

    • Cambiado Joyce_AC miércoles, 12 de abril de 2017 15:36
    miércoles, 12 de abril de 2017 1:29

Todas las respuestas

  • Buenas,

    Ese mensaje te dice que tienes que declarar un cuerpo en el método PrintToPrinter, o que sino declares el método como abstracto, externo o parcial. 

    Desconozco si ese método esta declarado ahí para heredarlo o no, si no se usa, puede probar a borrarlo, pero supongo que esta ahí para temas de herencia, así que puedes probar a declararlo como abstracto:

    public abstract void PrintToPrinter(int nCopies, bool collated, int startPageN, int endPageN);

    Es posible que te de fallo (repito, no se para que esta ahí ese método con las lineas que has puesto), asi que si falla, puedes declararle un cuerpo vacío:

    public virtual void PrintToPrinter(int nCopies, bool collated, int startPageN, int endPageN)
    {
    }

    Con eso, estas declarando un cuerpo aunque no haga absolutamente nada.

    Atte.


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!


    miércoles, 12 de abril de 2017 8:38