Problema para Conectar C# ao Crystal Report
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
Wellington Padilha
Curtidas 0
Respostas
Marcio Silveira
26/05/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).
GOSTEI 0
Valter Vinicius
26/05/2010
Me responda uma coisa, voce quer enviar parametros para o form que contém o crystal?
GOSTEI 0
Wellington Padilha
26/05/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...
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...
GOSTEI 0
Wellington Padilha
26/05/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...
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...
GOSTEI 0
Wellington Padilha
26/05/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 ");
E criando a query desta forma...
StringBuilder strQuery = new StringBuilder();
strQuery .Append("SELECT nome ");
strQuery .Append("FROM aluno ");
strQuery .Append("WHERE codigoALuno = 4 ");
GOSTEI 0
Faustino Junior
26/05/2010
Acesse o link abaixo e de uma conferida como eu fiz.
https://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.
https://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.
GOSTEI 0