none
Tenho que criar um relatorio no crystal reports e não sei como fazer RRS feed

  • Pergunta

  •  e tenho uma visão junto com uma stored de procedure com as informações que quero no relatório, mas o problema é que eu não sei como dar o comando para o crystal reports passar as informações da stored de procedure a partir do id do cliente

    tem vários campos e tenho uma visão com todos os campos e uma stored de procedure que pega as informações a partir de o numero do talão mas tenho que dar um comando para ele  pegar as informações de um cliente a partir do id dele, quando a pessoa clicar no botão na grid ao lado do nome do cliente o relatório tem que pegar as informações dele

    desde já sou grata pela atenção!!




    sexta-feira, 21 de novembro de 2014 19:34

Todas as Respostas

  • Boa tarde Carol 

    Seguem funções de um modulo que uso para caregar os relatório em crystal Report.

    Obs: Cria um modulo com o nome referente ao que esta neste código abaixo, O mesmo esta em vb.net

    Imports System.Data.SqlClient
    Imports System.Data.DataSet
    
    Imports CrystalDecisions.CrystalReports
    
    Imports CrystalDecisions.CrystalReports.Engine
    
    Imports CrystalDecisions.ReportSource
    
    Imports CrystalDecisions.Shared
    
    Imports CrystalDecisions.Windows
    
    Module Crystal
    
    
        'A Variavel SQL Traz o Comando Sql para o banco de dados
        'A Variavel Rel traz o nome do relatorio do cristal tendo que informar a estenção Ex. (Produto.rpt")
        'A Variavel RepotDT traz o nome do DataSet que esta conectado ao relatório
        ' A variavel Tabela traz o nome da Tabela ou qry do banco de dados 
        Sub ConectaReport(ByVal SQL As String, ByVal FormulaNone As Object, ByVal FormulaValue As Object, ByVal Rel As String, ByVal RepotDT As DataSet, ByVal Tabela As String, ByVal Mostra As Forms.CrystalReportViewer, ByVal Form As Form, ByVal Titulo As String, Optional ByVal imgPath As String = Nothing)
            Dim Count As Long
            'MCM(System.Windows.Forms.Cursors.WaitCursor)
            'muda o cursor do mouse
            System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
            'coloca o titulo na janela do form que vai caregar o relatorio
            Form.Text = Titulo
    
            'pega o relatório e concatena com o caminho do aplicativo
            Dim strReportPath As String = Application.StartupPath & "\" & Rel
    
            'Cria uma instancia do crystal na memoria do PC
            Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            'carega o relatório 
            rptDocument.Load(strReportPath)
            If Trim(imgPath) <> "" Then
                'rptDocument.ReportDefinition.Sections.Item("Section1") = imgPath
            End If
    
    
            'da um for e adiciona os valores as formulas do relatorio crystal
            For Count = 0 To UBound(FormulaNone)
    
                rptDocument.DataDefinition.FormulaFields.Item(FormulaNone(Count)).Text = "'" & FormulaValue(Count) & "'"
    
            Next
    
            'objeto adapter usado para preencher o dataset
            Dim adapter As New SqlDataAdapter(SQL _
                , StringConexao) 'onde ConexaoAcc é sua conexao ativa
            'Conta de tentativa de abertura de dataSet
            Dim Tenta As Long = 0
    FaNovamente:
            Try
                'preenche o dataset
                adapter.Fill(RepotDT, Tabela)
            Catch ex As Exception
                If Tenta = 0 Then
                    Tenta += 1
                    If Err.Description = "Falha ao ativar restrições. Uma ou mais linhas contêm valores que violam as restrições non-null, unique ou foreign-key." Then
                        GoTo FaNovamente
                    End If
                Else
                    msg(" Ouve um erro : " & Err.Description, MsgBoxStyle.Critical)
                    Exit Sub
                End If
            End Try
            'altera o datasource do relatorio para o DataSet que foi atribuido e que está preenchido 
            rptDocument.SetDataSource(RepotDT)
            'informa o relatorio que será carregado pelo crystal report viewer
            Mostra.ReportSource = rptDocument
    
            'propriedades do reportViewer
            Mostra.ShowCloseButton = False
            Mostra.ShowExportButton = True
            Mostra.ShowGroupTreeButton = False
            Mostra.ShowTextSearchButton = True
            Mostra.ShowZoomButton = True
            Mostra.ShowRefreshButton = True
            Mostra.ShowPreviousPage()
            Mostra.ShowFirstPage()
            Mostra.ShowLastPage()
            Mostra.ShowNextPage()
            Mostra.DisplayGroupTree = False
            'Mostra.ShowCloseButton = True
            'Mostra.ShowGroupTree()
            'da um refresh no relatorio para atualizar o mesmo e mostrar os dados
            Mostra.RefreshReport()
            System.Windows.Forms.Cursor.Current = Cursors.Default
            'MCM(System.Windows.Forms.Cursors.Default)
            'My.Forms.frmMostraRel.MdiParent = frmInicio
            'OcultaBarraMenu(frmInicio.mnubarra, frmInicio.ssBarraRodape)
            Form.ShowDialog()
            rptDocument.Close()
            RepotDT.Clear()
        End Sub
    
    
        Sub ConectaReportPecedure(ByVal Rel As String, ByVal RepotDT As DataSet, ByVal ProcedureName As String _
                , ByVal ParametroStore As Object, ByVal ValoresParametroStore As Object, ByVal Mostra As Forms.CrystalReportViewer _
                , ByVal Form As Form, Optional ByVal Titulo As String = "")
    
            Dim Cont As Long = 0
    
            System.Windows.Forms.Cursor.Current = Cursors.WaitCursor 'System.Windows.Forms.Cursors.WaitCursor
    
            Form.Text = Titulo
    
            'pega o relatório e concatena com o caminho do aplicativo
            Dim strReportPath As String = Application.StartupPath & "\" & Rel
    
            'Cria uma instancia do crystal na memoria do PC
            Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            'carega o relatório 
            rptDocument.Load(strReportPath)
            'objeto adapter usado para preencher o dataset
            'Dim adapter As New SqlDataAdapter(SQL _
            '    , StringConexao)
    
    
    
            Using adapter As New SqlDataAdapter(ProcedureName, StringConexao)
    
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure
    
    
    
                ' Define o parâmetro, indicando os valores a listar. Neste exemplo são indicados 
    
                ' directamente (“2,7,8,9”) mas deveriam ser o resultado de uma selecção do utilizador
    
                'adapter.SelectCommand.Parameters.Add("@equipamentos", SqlDbType.VarChar).Value = "2,7,8,9"
                For Cont = 0 To UBound(ParametroStore)
                    adapter.SelectCommand.Parameters.Add(ParametroStore(Cont), SqlDbType.VarChar).Value = ValoresParametroStore(Cont)
                Next
    
    
                'preenche o dataset
                'adapter.Fill(RepotDT, Tabela)
                'altera o datasource do relatorio para o dsVeiculos que está preenchido 
                rptDocument.SetDataSource(RepotDT)
                'informa o relatorio que será carregado pelo crystal report viewer
                Mostra.ReportSource = rptDocument
                'propriedades do reportViewer
                Mostra.ShowCloseButton = True
                Mostra.ShowExportButton = False
                Mostra.ShowGroupTreeButton = True
                Mostra.ShowRefreshButton = True
                Mostra.ShowPreviousPage()
                Mostra.ShowFirstPage()
                Mostra.ShowLastPage()
                Mostra.ShowNextPage()
                'Mostra.ShowCloseButton = True
                'Mostra.ShowGroupTree()
                Mostra.RefreshReport()
                System.Windows.Forms.Cursor.Current = Cursors.Default
                'MCM(System.Windows.Forms.Cursors.Default)
                'My.Forms.frmMostraRel.MdiParent = frmInicio
                Form.ShowDialog()
            End Using
        End Sub
    
        Sub ConectaReportPecedurePar(ByVal Rel As String, ByVal RepotDT As DataSet, ByVal ProcedureName As String _
                , ByVal ParametroStore As Object, ByVal ValoresParametroStore As Object, ByVal Tipo_Dados As Object, ByVal Mostra As Forms.CrystalReportViewer _
                , ByVal Form As Form, Optional ByVal Titulo As String = "")
    
            Dim Cont As Long = 0
    
            System.Windows.Forms.Cursor.Current = Cursors.WaitCursor 'System.Windows.Forms.Cursors.WaitCursor
    
            Form.Text = Titulo
    
            'pega o relatório e concatena com o caminho do aplicativo
            Dim strReportPath As String = Application.StartupPath & "\" & Rel
    
            'Cria uma instancia do crystal na memoria do PC
            Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            'carega o relatório 
            rptDocument.Load(strReportPath)
            'objeto adapter usado para preencher o dataset
            'Dim adapter As New SqlDataAdapter(SQL _
            '    , StringConexao)
    
    
    
            Using adapter As New SqlDataAdapter(ProcedureName, StringConexao)
    
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure
    
    
    
                ' Define o parâmetro, indicando os valores a listar. Neste exemplo são indicados 
    
                ' directamente (“2,7,8,9”) mas deveriam ser o resultado de uma selecção do utilizador
    
                'adapter.SelectCommand.Parameters.Add("@equipamentos", SqlDbType.VarChar).Value = "2,7,8,9"
                For Cont = 0 To UBound(ParametroStore)
                    If Tipo_Dados(Cont) = "c" Or Tipo_Dados(Cont) = "C" Then
                        adapter.SelectCommand.Parameters.Add(ParametroStore(Cont), SqlDbType.VarChar).Value = IIf(ValoresParametroStore(Cont) = "", DBNull.Value, ValoresParametroStore(Cont))
                    ElseIf Tipo_Dados(Cont) = "d" Or Tipo_Dados(Cont) = "D" Then
                        adapter.SelectCommand.Parameters.Add(ParametroStore(Cont), SqlDbType.DateTime).Value = IIf(IsDate(ValoresParametroStore(Cont)), ValoresParametroStore(Cont), DBNull.Value)
                    ElseIf Tipo_Dados(Cont) = "i" Or Tipo_Dados(Cont) = "I" Then
                        adapter.SelectCommand.Parameters.Add(ParametroStore(Cont), SqlDbType.Int).Value = IIf(IsNumeric(ValoresParametroStore(Cont)), ValoresParametroStore(Cont), 0)
                    End If
                Next
    
                'preenche o dataset
                'adapter.Fill(RepotDT, Tabela)
                'altera o datasource do relatorio para o dsVeiculos que está preenchido 
                rptDocument.SetDataSource(RepotDT)
                'informa o relatorio que será carregado pelo crystal report viewer
                Mostra.ReportSource = rptDocument
                'propriedades do reportViewer
                Mostra.ShowCloseButton = True
                Mostra.ShowExportButton = False
                Mostra.ShowGroupTreeButton = True
                Mostra.ShowRefreshButton = True
                Mostra.ShowPreviousPage()
                Mostra.ShowFirstPage()
                Mostra.ShowLastPage()
                Mostra.ShowNextPage()
                'Mostra.ShowCloseButton = True
                'Mostra.ShowGroupTree()
                Mostra.RefreshReport()
                System.Windows.Forms.Cursor.Current = Cursors.Default
                'MCM(System.Windows.Forms.Cursors.Default)
                'My.Forms.frmMostraRel.MdiParent = frmInicio
                Form.ShowDialog()
            End Using
        End Sub
    End Module


    Nilson Morgenstern

    sábado, 22 de novembro de 2014 17:53
  • Eu uso visual studio(MVC) SQL management e crystal report  
    segunda-feira, 24 de novembro de 2014 16:57
  • Bom, não era isso era algo mais simples com vs em mvc
    segunda-feira, 24 de novembro de 2014 16:58