none
Subr-Relatório no Crystal Report RRS feed

  • Pergunta

  • Ai pessoal to com um pequeno problema nao to conseguindo criar um relatorio com sub-relatorio alguem tem algum exemplo pra me passar ou pode me ajudar? Eu peguei a video aula do Laercio e segui os passos que ele passou direitinho e da dando um erro na hora de garear abrindo uma tela pedindo, Enter Parameter Values.
    terça-feira, 30 de junho de 2009 16:09

Respostas

  • Não tenho nada usando o crystal dessa forma.
    Veja se esse artigo pode lhe ajudar. http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=930
    Meus relatórios utilizam Procedures para buscar os dados.

    Sei como é o aperto de monografia. Tenha calma vai dar tudo certo.
    Espero poder ajudar.


    Att,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 17:52

Todas as Respostas

  • Olá,

    Não consegui identificar exatamente o que está acontecendo no seu caso, precisaria de maiores detalhes.
    De qualquer forma de uma olhada nesses artigos do José Carlos Macoratti http://www.macoratti.net/indcrys.htm
    Nessa mesma página tem uma apostila para download que também pode ser útil.

    Att,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 16:39
  • Cara no site do macoratti eu nao achei nada sobre sub-report e aki no site da msdn brasil achei uma video aula, ai seguir os passos direitinho e da dando em erro. Aparece uma tela com a seguinte msg: " You can provide a single value for this parameter. Enter the value you want to include." Ai se eu aperto ok da outra tela com o erro:
    "This field name is not known.
    Erro in file C:...RptCurriculo.rpt.
    Erro in formula <Record_Selection>
    '{TBCANDESCOLA.CDCANDIDATO}={?Pm-TBCURRICULO.CDCURRICULO}'
    This field name is not known.
    terça-feira, 30 de junho de 2009 16:43
  • Quantos parâmetros existem no relatório e no subreport? Pode estar deixando de passar algum parâmetro.
    Você pode passar todos os parâmetros do relatório e do subreport ou usar uma opção no subreport chamada Change Subreport Links... (clique com o botão direito para acessá-la), nessa função você associa os parâmetros iguais do relatório principal com os parâmetros do subreport.

    Qualquer coisa poste novamente.

    Abraços,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 17:02
  • Existe so um paramento que e o CDCURRICULO que existe no principal e no subrelatorio ele chama CDCANDIDATO.
    Eu passo esse paremetro na opcao do report "Change Subreport Links".

    Quer q te envie o codigo pra vc dar uma olhada? pois talves seja mais facil... to achando q e coisa boba mas nao acho o q pode ser, ja refiz esse relatorio varias vezes...
    terça-feira, 30 de junho de 2009 17:05
  • O relatório está vínculado a uma procedure?
    Pode mandar.

    Att,
    Rodrigo Santana
    terça-feira, 30 de junho de 2009 17:07
  • Esse relatorio ta vinculado a um DataSet, ou melhor 2 DataSet, um pra o relatorio principal e outro para o sub relatorio.

    No clique de um botao eu tenho esse codigo:

    SQL = "SELECT TBCURRICULO.CDCURRICULO, TBCURRICULO.NMCANDIDATO, TBCURRICULO.DTCADASTRO, TBCURRICULO.CPF, TBCURRICULO.DTNASCIMENTO, TBCURRICULO.SEXO, TBCURRICULO.ESTCIVIL, TBESCOLARIDADE.NMESCOLARIDADE, TBNACIONALIDADE.NMNACIONALIDADE, TBCURRICULO.TELRESIDENCIAL, TBCURRICULO.TELCELULAR, TBPROFISSAO.NMPROFISSAO, TBCURRICULO.EDRUA, TBCURRICULO.EDNUMERO, TBCURRICULO.EDCOMPLEMENTO, TBESTADO.NMESTADO, TBCIDADE.NMCIDADE, TBBAIRRO.NMBAIRRO, TBCURRICULO.CEP, TBAREAATUACAO.NMAREA, TBCARGO.NMCARGO, TBCURRICULO.SALPRETENDIDO, TBCURRICULO.VINCULOEMPRE, TBCURRICULO.OBSGERAIS, TBCURRICULO.DEFICIENCIA, TBCURRICULO.OBSDEFICIENCIA "
            SQL = SQL & "FROM TBPROFISSAO INNER JOIN (TBNACIONALIDADE INNER JOIN (TBESTADO INNER JOIN (TBESCOLARIDADE INNER JOIN (TBCIDADE INNER JOIN (TBCARGO INNER JOIN (TBBAIRRO INNER JOIN (TBAREAATUACAO INNER JOIN TBCURRICULO ON TBAREAATUACAO.CDAREA = TBCURRICULO.CDAREA) ON TBBAIRRO.CDBAIRRO = TBCURRICULO.CDBAIRRO) ON TBCARGO.CDCARGO = TBCURRICULO.CDCARGOPRET) ON TBCIDADE.CDCIDADE = TBCURRICULO.CDCIDADE) ON TBESCOLARIDADE.CDESCOLARIDADE = TBCURRICULO.CDESCOLARIDADE) ON TBESTADO.CDESTADO = TBCURRICULO.CDESTADO) ON TBNACIONALIDADE.CDNACIONALIDADE = TBCURRICULO.CDNACIONALIDADE) ON TBPROFISSAO.CDPROFISSAO = TBCURRICULO.CDPROFISSAO "
                SQL = SQL & "WHERE(((TBCURRICULO.CDCURRICULO) =" & dtgrid.SelectedRows.Item(0).Cells(0).Value & " )); "
    
                SQL2 = "SELECT CE.CDCANDIDATO,E.NMESCOLARIDADE,I.NMABREVIADO,C.NMCURSO, DTINICIO, DTFIM,  STATUS "
                SQL2 = SQL2 & "FROM TBCANDESCOLA CE, TBESCOLARIDADE E, TBINSTITUICAO I,TBCURSO C "
                SQL2 = SQL2 & "WHERE(e.CDESCOLARIDADE = CE.CDESCOLARIDADE And I.CDINSTITUICAO = CE.CDINSTITUICAO And C.CDCURSO = CE.CDCURSO) AND"
                SQL2 = SQL2 & " CE.CDCANDIDATO = " & dtgrid.SelectedRows.Item(0).Cells(0).Value
    
    frmreport.RecebeSQL(SQL)
    frmreport.RecebeSQL2(SQL2)
    
    frmreport.Show()
    Ai no load do Frmreport eu tenho o seguinte codigo:

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim crReportDocument As New ReportDocument
            Dim crReportSubDocument As New ReportDocument
            Dim OleDbDaCate As OleDb.OleDbDataAdapter
            Dim OleDbDaCate2 As OleDb.OleDbDataAdapter
    
            'cria uma instância do dataset vinculado ao arquivo ProdutosCategorias.xsd
            Dim dsPc As New DataSet
    
    
            crReportDocument.Load("D:\GLEDSON\COISAS NOVAS\_NOVO_SCT\Monografia\Monografia\Formularios\RptCurrículo.rpt")
    
            OleDbDaCate = New OleDb.OleDbDataAdapter(SQL, oOleDbConnection)
            OleDbDaCate2 = New OleDb.OleDbDataAdapter(SQL2, oOleDbConnection)
    
            'Preencher as tabelas do dastaset a partir dos dataAdaperts
    
            OleDbDaCate.Fill(dsPc, "TBCURRICULO")
            OleDbDaCate2.Fill(dsPc, "DataTable1")
    
            'Gerar o relatório a partir do dataset e exibí-lo
    
            crReportSubDocument = crReportDocument.OpenSubreport("RptCandEscola.rpt")
            crReportDocument.Database.Tables(0).SetDataSource(dsPc.Tables(0))
            crReportSubDocument.Database.Tables(0).SetDataSource(dsPc.Tables(1))
    
            rptvProdutosPorCategoria.ReportSource = crReportDocument

     
    terça-feira, 30 de junho de 2009 17:09
  • Não é possível passar somente um DataSet para o relátório com o conteúdo dos dois?
    Nunca utilizei com dois.

    Att,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 17:14
  • Vou tentar usando 1 data set mas como ficaria o codigo vc sabe?
    terça-feira, 30 de junho de 2009 17:15
  • Não é possível montar as duas querys em apenas uma e passar tudo em apenas um DataSet?

    Att,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 17:39
  • E sim... eu fiz isso aki e continua dando o mesmo erro... ta ____ cara, pois tenho q terminar isso ate dia 9 pois dia 10 e minha banca de monografia...

    vc num tem exemplo de um relatorio com sub-relatorio ai nao?
    terça-feira, 30 de junho de 2009 17:41
  • Não tenho nada usando o crystal dessa forma.
    Veja se esse artigo pode lhe ajudar. http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=930
    Meus relatórios utilizam Procedures para buscar os dados.

    Sei como é o aperto de monografia. Tenha calma vai dar tudo certo.
    Espero poder ajudar.


    Att,
    Rodrigo Santana.
    terça-feira, 30 de junho de 2009 17:52
  • Cara nesse artigo ai to com a seguinte duvida o que seria os:
    - crFuncionarios
    - _crFuncionarios
    - _rdTelefones
    - _dtFuncionario

    ???
    terça-feira, 30 de junho de 2009 19:21
  • Esses itens são os relatórios criados como exemplo.
    Existem três formas de adicionar um subreport no crystal:
    Uma delas é adicionando um relatório existente no projeto, outra é adicionando um arquivo .rpt existente e a outra é criar usando o wizard do crystal.
    Nesse artigo ele usa a primeira opção adicionando relatórios previamente criados no projeto ao relatório principal.


    Att, Rodrigo Santana.
    terça-feira, 30 de junho de 2009 19:33
  • Gledson,

    Você conseguiu resolver o problema?
    Caso afirmativo poste a solução para que outra pessas possam se beneficiar.

    att,

    Fernanda
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    quarta-feira, 15 de julho de 2009 15:35
    Moderador