none
Arquivo da Query do Cristal Reposts? RRS feed

  • Pergunta

  • Galera estou fazendo um programa em windows forms e necessito gerar um relatorio, estou usando o crystal report para fazer isso, e gostaria de saber aonde fica a query de consulta no crystal reports. eu sei que no repot viwer tem no arquivo do dataset uma linha onde fica a query e la voce pode colocar a condição que quiser, agora no crystal report se eu uso o data seto não me aparece nada no relatorio alem de nao aparecer os campos que eu quero mostrar e se eu usar sem o dataset escolhendo o comando não consigo colocar o filtro que eu quero, alguem pode de ajudar
    quinta-feira, 31 de janeiro de 2013 12:03

Todas as Respostas

  • Bom eu utilizo da seguinte forma...

    Crio o relatório no crystal, ai clico com btDireito em uma area livre e vou em BANCO DE DADOS/AUXILIAR DE BANCO DE DADOS.

    Selecio o db q estou trabalhando e insero um comando com uma query para criar as colunas que preciso (faço a query para retornar em branco ou com apenas poucas linhas).

    Depois volto ao c# e crio realmente o que vou mandar ao relatório e coloco em um datatable e mando este datatable ao relatorio do crystal, pois é isso que ele precisa.

    Espero ter ajudado.

    Se for útil não eskeça de marcar!


    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    quinta-feira, 31 de janeiro de 2013 12:22
  • pois então é basicamente isso que eu quero fazer, so gostaria por gentiliza de voce explicar detalhadamente essa parte

    Depois volto ao c# e crio realmente o que vou mandar ao relatório e coloco em um datatable e mando este datatable ao relatorio do crystal, pois é isso que ele precisa.

    Em que parte do programa faz isso e tals

    Grato desde já

    quinta-feira, 31 de janeiro de 2013 13:01
  • Então @Marlyson...

    Vc vai montar a consulta qndo o usuario pedir o formulario.

    digamos q tenha um botão imprimir então qndo o usuario clicar neste botão, vc faz a consulta montando o datatable ou se já tiver montado o datatable que necessita só recupera ele e manda para o relatorio o codigo fica mais ou menos assim:

    //cria Consulta SQL;
    
    //Faz o DataAdapter para poder realizar a consulta no banco e trazer as informações.
    DataAdapter da (ConsultaSql, ConexaoBanco);
    //cria o datatable em branco
    DataTable dtRel = new DataTable();
    
    //preenche o datatable com a consulta do dataadapter
    da.fill(dtRel);
    
    //verifica se tem linhas resultantes da consulta
    if(dtRel.Rows.Count == 0)
       return;
    
    //instacia o relatório
    RelatorioCrystal oRel = new RelatorioCrystal();
    //passa o datatable para o relatorio
    oRel.SetDataSource(dtRel);
    
    
    


    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    quinta-feira, 31 de janeiro de 2013 13:21
  • ok mais  por exemplo o usuario clica no botão de imprimir ai eu pego um codigo que esta num textbox e jogo numa classe ate ai beleza quando eu abro o form do relatorio ele tem que pegar esse codigo e colocar na query tendeu, a parte da classe e pegar de volta esse valor eu sei de boa agora não sei onde eu jogo essa condição

    tem que ficar mais ou memos assim:

    select * from ocorrencias where cd_ocorrencia = "+Codigo da Classe+";

    é esse filtro que eu preciso fazer

    quinta-feira, 31 de janeiro de 2013 13:34
  • e essa linha ta dando erro, mais precisamente nessa parte (dtRel)

    oRel.SetDataSource(dtRel);

    quinta-feira, 31 de janeiro de 2013 13:44
  • @Marlyson recupera essa sua consulta para um  datatable e  passa esse datatable no lugar do dtRel


    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    quinta-feira, 31 de janeiro de 2013 13:49
  • Oi Douglas mal pela ausencia então eu fiz de um jeito que deu certo porem ele so tras um resgistro quando abre o relatorio vou colocar o codigo abaixo e se vc puder me ajudar agradeço

    //Minha string de Conexao

     DataSet DataSet1 = new DataSet();
                string strConexao = SERVICE_DESK.Properties.Settings.Default["CSSANTOSConnectionString"].ToString();

    //

                OdbcConnection conexao = new OdbcConnection();
                conexao.ConnectionString = strConexao;
                conexao.Open();

    //Query é uma variavel que contem todo o select com todos os joins e clausulas da pesquisa//

                OdbcDataAdapter da = new OdbcDataAdapter(@" "+query+" ", conexao);
                da.Fill(DataSet1, "Relatorio");

                CrystalReport1 cr = new CrystalReport1();
                cr.SetDataSource(DataSet1.Tables["Relatorio"]);

                crystalReportViewer1.ReportSource = cr;
                crystalReportViewer1.Show();

    Então esse codigo funciona porem so retorna o primeiro registro do select, sabe o que pode está acontecendo?

    Grato desde já

    segunda-feira, 4 de fevereiro de 2013 15:46
  • mesmo no debug só traz uma linha, se for isso o problema esta na query, agora se no debug ele tá trazendo mais de uma, não sei o q pode ser...

    abr


    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    terça-feira, 5 de fevereiro de 2013 16:51
  • Olá,

    Estou movendo este post para a categoria de Geração de Relatórios...

    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá...

    Obrigado...

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 6 de fevereiro de 2013 12:05
    Moderador