Fiz um relatório no Crystal, o problema que não vejo uma solução para um DataTable dinâmico, minha aplicação gera um DataTable em tempo de execução, devo mandar esse DataTable para o DataSet do Crystal para impressão em tela em PDF.
Alguém sabe uma solução, tutorial ou etc para uma caso desse onde é gerado o DataTable dinâmicamente, com colunas e linhas geradas dinâmicamente, passar isso para o DataSet do Crystal para impressão de PDF em tela?
Bom, cara, esse é o jeito que eu faço, normalmente:
1. Como gerar um DataTable em tempo de execução?
Você vai gerar de um banco de dados? Você pode criar sua consulta e, usando um objeto DataAdapter, criar seu DataTable.
[code]public DataTable RecuperarTabelaDeAlunos()
{
DataTable datatableAlunos = new DataTable();
string sentencaAlunos = “SELECT ID, NOME, TURMA FROM ALUNOS”;
OracleConnection connectionAlunos = new OracleConnection(/* String de conexão */);
OracleDataAdapter dataadapterAlunos = new OracleDataAdapter(sentencaAlunos, connectionAlunos);
Agora, como você quer passar isso para um relatório:
[code]ReportDocument entidadeReport = new ReportDocument();
// caso o seu relatório esteja em uma pasta específica…
entidadeReport.Load(@Request.PhysicalApplicationPath + @"\Alunos\Relatorios\RelatorioAlunos.rpt");
Então Nicolas, até aí blz, já estou gerando um DataTable e passando para Crystal…
O problema é que o DataTable pode ter um numero de colunas variado, isto é, dependendo do que vem do banco, o DataTable pode ter 3 colunas, 4 colunas, 10 colunas e etc…
Quando vou passar esse DataTable para o Crystal… como vou saber, lá no Crystal, quantas colunas o DataTable tem?
Eu configurei tudo certinho no DataSet, montei o DataTable do rpt, mas o problema é que esse DataTable deve ser de acordo, em número de colunas, com o DataTable que a aplicação envia para o rpt.
Resumindo, o problema é que o número de colunas é variável, como o relatório vai saber quantas colunas o DataTable tem?
No seu relatório, crie uma conexão com o seu banco de dados no Database Expert;
Lá, você adiciona a conexão com o seu banco e seleciona a tabela a qual você quer procurar ou a view na qual quer pesquisar.
Assim, você passa uma consulta do tipo “SELECT * FROM TABELA”, e ele reconhecerá.
A medida em que os campos forem mudando, você seu relatório vai reconhecendo, já que tem uma conexão direta com a tabela ou a view.
Que tal?