none
Imprimir reporte Crystal Report RRS feed

  • Pregunta

  • Hola

    Trabajo con VS 2012 app WindowsForm

    Tengo el reporte hecho me trae los datos trabaja bien, lo que quiero hacer es que me muestre un mensaje cuando precione imprimir.

    Si es Aceptar vaya a imprimir sin ver la vista previa. y si es no solo mostrar la vista previa sin imprimir.

    Estos son mis métodos :

    private void btnEnviar_Click(object sender, EventArgs e)
            {
                // Una vez enviado el pedido debe camiar el estado EN COCINA.
                Pedido.ActualizaEstadoPedido(idVenta, "01");
                LoadPedido();
                
                string msg = "Desea imprimir el reporte?";
                if (MessageBox.Show(msg, StrClientes.nombreTabla, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                     
                }
                else
                {
                    
                }
            }

    Para imprimir ya lo tengo solucionado creo?

    private void Imprimir() { string FilePath = @"D:\ReportesRestaurant\EnviarCocina.rpt"; //ReportDocument rptListaPersonal = new ReportDocument(); rptListaPersonal.Load(FilePath); DataTable tablaDatos = Pedido.crEnviarCocina(idVenta); rptListaPersonal.SetDataSource(tablaDatos); frmReportes frm = new frmReportes(); frm.CrystalReportViewer.ReportSource = rptListaPersonal; frm.CrystalReportViewer.Dock = DockStyle.Fill; ConnectionInfo cn = new ConnectionInfo(); cn.ServerName = "."; cn.DatabaseName = "PrismaNvo"; cn.UserID = "sa"; cn.Password = "Admin123"; cn.Type = ConnectionInfoType.SQL; SetDBLogonForReport(cn, rptListaPersonal); // Manda a imprimir directo a la impresora. PrintReport(Helper.NombrePrint);

    Pero acá que me va a mostrar el reporte frm.CrystalReportViewer.Refresh(); frm.Text = "Probando"; frm.Show(); } private void PrintReport(string printerName) { PageMargins margins; // Get the PageMargins structure and set the // margins for the report. margins = rptListaPersonal.PrintOptions.PageMargins; margins.bottomMargin = 350; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 350; // Apply the page margins. rptListaPersonal.PrintOptions.ApplyPageMargins(margins); // Select the printer. rptListaPersonal.PrintOptions.PrinterName = printerName; // Print the report. Set the startPageN and endPageN // parameters to 0 to print all pages. rptListaPersonal.PrintToPrinter(1, false, 0, 0); }



    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 3 de mayo de 2014 3:26

Respuestas

  • ok lo que estoy tratando de dar es la idea, no era para copiar y pegar

    al PrintReport()

    solo le deberias agregar la parte del codigo defina al reporte, como ser

    rptListaPersonal.SetDataSource(tablaDatos);

    o sea seran dos metodos que impresion separados ambos armaran un ReportDocument y asignaran los datos

    pero despues uno imprime directo y el otro muestr aun forma de preview

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila sábado, 3 de mayo de 2014 23:42
    sábado, 3 de mayo de 2014 4:31

Todas las respuestas

  • no entiendo el problema solo tienes que invocar el metodo

    DialogResult result = MessageBox.Show(msg, StrClientes.nombreTabla, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    
    if ( result == DialogResult.Yes)
    {
    	PrintReport(Helper.NombrePrint);
    }
    else
    {
    	Imprimir(); 
    }

    no pones todo junto, para que envias a impresora cuando el metodo abre el form de preview

    es cuestion de definir las responsabilidades

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 3 de mayo de 2014 3:37
  • DialogResult result = MessageBox.Show(msg, StrClientes.nombreTabla, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if ( result == DialogResult.Yes) {

    Pero acá que me va imprimir si no le estoy pasando los datos que traigo desde la DB PrintReport(Helper.NombrePrint); } else {

    En este método si lo hago Imprimir(); }


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 3 de mayo de 2014 3:48
  • ok lo que estoy tratando de dar es la idea, no era para copiar y pegar

    al PrintReport()

    solo le deberias agregar la parte del codigo defina al reporte, como ser

    rptListaPersonal.SetDataSource(tablaDatos);

    o sea seran dos metodos que impresion separados ambos armaran un ReportDocument y asignaran los datos

    pero despues uno imprime directo y el otro muestr aun forma de preview

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila sábado, 3 de mayo de 2014 23:42
    sábado, 3 de mayo de 2014 4:31
  • Voy a probar te aviso.

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 3 de mayo de 2014 9:58
  • Bien!!

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 3 de mayo de 2014 23:42