none
relatorio... RRS feed

  • Pergunta

  • boa tarde pessoal!

    tenho um relatorio que está funcionando perfeitamente, porem depois do usuario clicar no botao gerar para gerar o relatorio, no meu codigo coloquei para que ele feche o form do reportview e abra o pdf que cria no mesmo codigo, teria como eu gerar o pdf com o mesmo codigo sem mostrar o form com reportview? pois nao utilizo o reportview.

    atenciosamente,

    tiago.

    segunda-feira, 10 de janeiro de 2011 18:57

Todas as Respostas

  • Tiago,

    Como acabou ficando o seu código que você está utilizando atualmente?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    segunda-feira, 10 de janeiro de 2011 19:59
    Moderador
  • Bom dia andré, minha rotina se constitui em 2 forms, um de parametro que o usuario escolhe os filtros do relatorio e outro que herda os parametros informados no primeiro e monta o relatorio no load utilizando o seguinte codigo no evento load do mesmo.

    private void GeraURBTD() 
      {
       
       string strConexao = "Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Connect Timeout=120";
       SqlConnection oConn = new SqlConnection();
       StringBuilder strSQL = new StringBuilder();
       DataTable oTable = new DataTable();
       SqlCommand oCmd = null;
       string strReportPath = "caminho do meu relatorio";
    
       try
       {
        rvReport.LocalReport.ReportPath = strReportPath;
    
        oConn.ConnectionString = strConexao;
        oConn.Open();
    
        strSQL.Append(" select b.rom_regdate as , a.prv_id as Codigo_Provider, b.rom_receiptnbr , ");
        strSQL.Append(" a.prv_shortdesc as Provedor, d.iss_id as N_Cartao, d.cd_id as N_Cartao, d.crd_snr as N_Cartao, ");
        //meu select tem mais linhas mas se eu fosse colocar ia ficar muita coisa...
    
     
        oCmd = new SqlCommand(strSQL.ToString(), oConn);
        oCmd.CommandText = strSQL.ToString();
        oCmd.CommandType = CommandType.Text;
        oCmd.Parameters.Add(new SqlParameter("@dataini", instPrincipal.dtpIni.Value));
        oCmd.Parameters.Add(new SqlParameter("@datafim", instPrincipal.dtpFim.Value));
        oCmd.Parameters.Add(new SqlParameter("@provider", instPrincipal.txtProvider.Text.ToString()));
        oCmd.Parameters.Add(new SqlParameter("@pedido", instPrincipal.txtPedido.Text.ToString()));
    
    
        SqlDataAdapter adapter = new SqlDataAdapter(oCmd);
        DataTable dtSource = new DataTable();
    
        adapter.Fill(dtSource);
    
        ReportParameter param1 = new ReportParameter("Projeto", instPrincipal.rdbMT.Text.ToString());
        ReportParameter param2 = new ReportParameter("DataIni", instPrincipal.dtpIni.Value.ToString());
        ReportParameter param3 = new ReportParameter("DataFim", instPrincipal.dtpFim.Value.ToString());
        ReportParameter param4 = new ReportParameter("Provider", instPrincipal.txtProvider.Text.ToString());
        ReportParameter param5 = new ReportParameter("Pedido", instPrincipal.txtPedido.Text.ToString());
    
        ReportDataSource myReportDataSource = new ReportDataSource("Pedido", dtSource);
        rvReport.LocalReport.DataSources.Add(myReportDataSource);
        rvReport.LocalReport.SetParameters(new ReportParameter[] { param1, param2, param3, param4, param5 });
    
        // gera para pdf e abre o pdf
        Warning[] warnings;
        string[] streamids;
        string mimeType;
        string encoding;
        string extension;
        byte[] bytes = rvAnalitico.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
        FileStream fs = new FileStream(@"caminho do meu pdf", FileMode.Create);
        fs.Write(bytes, 0, bytes.Length);
        fs.Close();
    
    
        string strPath = @"caminho do meu pdf"; 
        //Verifico se o arquivo que desejo abrir existe e passo como parâmetro a variável respectiva
        //Troco as variáveis strPathFile pela strPath, que está definindo o caminho do meu arquivo
        if (File.Exists(strPath))
        {
         //Se existir "starto" um processo do sistema para abrir o arquivo e, sem precisar
         //passar ao processo o aplicativo a ser aberto, ele abre automaticamente o relatorio em pdf
         System.Diagnostics.Process.Start(strPath);
    
        }
        else
        {
         //Se não existir exibo a mensagem
         MessageBox.Show("Arquivo não encontrado!");
        }
       }
    
       catch (Exception ex)
       {
        MessageBox.Show(ex.Message);
       }
       finally
       {
        oConn.Dispose();
        oTable.Dispose();
        //aqui fecho o form para nao apresenta-lo
        this.Close();
       }
      }
    

    e assim ficou meu codigo!

    atenciosamente,

    Tiago.

    terça-feira, 11 de janeiro de 2011 10:15
  • Tiago,

    Não entendi... Esse código que você passou já não tem a parte de exibir o relatório... Ele já exporta diretamente o relatório para PDF, sem exibí-lo no viewer... Não é isso que você está querendo?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    terça-feira, 11 de janeiro de 2011 13:40
    Moderador
  • Seu eu nao usar esse:

    this.Close(); no Finaly

    o form do relatorio continua aberto com o reportview em branco atras do pdf que mando abrir externamente.

    entende?

    atenciosamente,

    Tiago.

    terça-feira, 11 de janeiro de 2011 14:01