Array
(
)

Problema para Conectar C# ao Crystal Report

Wellington Padilha
   - 26 mai 2010

Boa noite galera...   Estou a criar relatórios no Crystal Report para minha aplicação em C#...   Desenvolvi o relatório... Conectei meu SQLServer... puxei todos os atributos das tabelas...   Porém não sei como fazer para chamar esse relatório da aplicação, passando o código do aluno que ele buscará as informações... Não estou utilizando DataSet e sim DataReader...   Já fiz diversas pesquisas na tentativa de encontrar um exemplo e não consegui...   Se alguém puder me ajudar ficaria grato...   atenciosamente,   Tom Padilha

Marcio
   - 28 mai 2010

E porque você não usa DataSet? DataReader mantém a conexão aberta com o Banco de Dados, tudo bem que é mais performático (mas só vai fazer muita diferença se seus relatórios possuirem muitos dados, mas se for muito mesmo). Com o DataSet, você conecta, pega os dados e libera a conexão, e pode trabalhar com eles na memória, além disso você pode trabalhar com mais de uma tabela e ler os dados dele em qualquer posição (para frente, para trás, a partir do último, etc). Com DataReader você tem que tomar cuidado de não se esquecer de fechar a conexão após utilizá-la e você só consegue ler os dados em um sentido (adiante).  

Valter Vinicius
   - 28 mai 2010

Me responda uma coisa, voce quer enviar parametros para o form que contém o crystal?

Wellington Padilha
   - 28 mai 2010

Como estou realizando meu tcc... e multi-camadas me informaram que não seria correto utilizar o DataSet... mas acredito que para relatórios pode não haver problemas... vou tentar criar o dataset... e tentar chamar com o dataset mesmo...

Na verdade... para o relatório irei passar somente um código de uma avaliação... nesta avaliação estão as chaves estrangeiras de outras tabelas... e ai irão montar o relatório a partir disto...

Vcs sabem qual é o comando correto para efetuar o load no relatório... e exibir o relatório?

Vou efetuar alguns testes... e retornarei para vcs...

Obrigado...

Wellington Padilha
   - 30 mai 2010

Boa noite galera...

Consegui montar o relatório...

porém to com um pequeno probleminha... Não estão aparecendo os dados nele hehe...

O relatório executa normalmente... abre o relatório mas em branco... o código ontem pela madrugada estava trazendo os dados normalmente mas hoje não tras mais...

já tente declarar o dataset igual o dataset que eu criei (avaliacaoDataSet) mas no Fill (popular) ele dá erro...

Estou usando conexão Singleton...
Abaixo segue o código de exibição do relatório...

private void Form2_Load(object sender, EventArgs e)
        {
        string strQuery;
            strQuery = "SELECT nome FROM aluno WHERE codigoAluno = 4";
            
            SqlConnection cn = Conexao.GetInstance().getConexao();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strQuery.ToString();
            cmd.ExecuteNonQuery();
            DataSet ds = new DataSet();
            teste crystal = new teste(); //teste seria o relatório feito no Crystal Report

        SqlDataAdapter oDA = new SqlDataAdapter(strQuery.ToString(), cn);
            oDA.Fill(ds, "aluno");

        crystal.SetDataSource(ds);
            ds.Dispose();
            crystalReportViewer1.ReportSource = crystal;
        crystalReportViewer1.DisplayGroupTree = false;
}

Valeu pela atenção de vcs!!! Obrigado...

Wellington Padilha
   - 30 mai 2010

Problema ocorreu mesmo tirando o ds.Dispose();

E criando a query desta forma...

StringBuilder strQuery = new StringBuilder();

strQuery .Append("SELECT nome ");
strQuery .Append("FROM aluno ");
strQuery .Append("WHERE codigoALuno = 4 ");

Faustino Júnior
   - 29 mar 2012

Acesse o link abaixo e de uma conferida como eu fiz.

http://www.devmedia.com.br/forum/como-configurar-logon-e-utilizar-o-crystal-reports-com-asp-net-e-c/414819
ou
http://faustino-jr.blogspot.com.br/2012/03/como-configurar-logon-e-utilizar-o.html

O único problema é que para cada relatório uma nova conexão é criada.
Se alguém tiver uma dica é só compartilhar.