Inquiridor
relatorio...

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.
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 -
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.
-
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 -