Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

Altevir

[Resolvido] Criar Relatorios com Report Viewer no VB.Net

Recommended Posts

Bom Dia !!

Estou precisando de uma ajuda, porem, estou com duvidas se existe como fazer isso ou nao !!!????

Teria como gerar um Relatorio no Report Viewer do Visual Studio 2008 via codigo ???

Por exemplo, eu efetuo minha consulta SQL, e repasso os parametros para o Report Viewer gerando o relatorio com base na minha instruçao SQL.

Gostaria de usar tudo via codigo, pois tem relatorios diferenciados um dos outros.

 

Agradeço se alguem puder me ajudar.

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Share this post


Link to post
Share on other sites

Não tem problema nenhum, você terá que usar um DataSet para armazenar seus dados.

Somente o relatório que acho um pouco dificil fazer via código, terá que desenhar usando a ferramenta.

 

Abraços...

 

 

Opaaa

ah beleza, vou te passar o meu codigo, sera que você consegue me ajudar ???

para desenhar o relatorio eu estou fazendo isso, desenho atraves da ferramenta, porem, os valores (os dados), esses sim eu gostaria de pegar da minha instruçao SQL, nao quero usar DataSets Tipados, a minha ideia é alimentar o DataSet como você citou e alimentar o relatorio, estou iniciando agora o trabalho com o Report Viewer, nao sei mexer muito bem na ferramenta ainda, com os DataSets tambem, pra mim é novo, mas ja andei pesquisando alguma coisa na internet.

Abaixo o meu codigo, tentei usar um DataTable, mas acho q nao deu certo, como faço pra usar o DataSet agora ???

 

            Dim StrPastaRelatorio As String
            StrPastaRelatorio = String.Concat(Application.StartupPath.ToString(), "\Clientes.rdlc")
            StrPastaRelatorio = StrPastaRelatorio.Replace("bin\Debug\", "")
            ReportViewer1.LocalReport.ReportPath = StrPastaRelatorio

            Dados da Conexao
            StrConexao = "Data Source=SERVIDOR" & _
                         ";Persist Security Info=True" & _
                         ";Initial Catalog=MEU BANCO" & _
                         ";User ID=sa" & _
                         ";Password=123"
            StrConn.ConnectionString = StrConexao
            StrConn.Open()

            String de Consulta
            StrSQL = "Select CodCliente, Nome From Clientes"

            Dim Cmd As New SqlCommand(StrSQL, StrConn)
            Dim DReader As SqlDataReader

            Converter o DataReader para DataTable
            Dim DTable As New DataTable("Clientes")
            DReader = Cmd.ExecuteReader()
            DTable.Load(DReader)
            DReader.Close()

            Definindo o DataSource do Relatorio
            Dim NewReporDataSource As ReportDataSource = New ReportDataSource("Clientes", DTable)
            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.RefreshReport()

Share this post


Link to post
Share on other sites

Você até vai conseguir alimentar seus objetos, mas como vai adicionar os campos la no desenho? Vai se basear em que se não for um dataset tipado?

 

Abraços...

 

Certo.

você poderia me passar algum exemplo ???

Share this post


Link to post
Share on other sites

De uma olhada: http://www.macoratti.net/vbn_dst1.htm

 

Abraços...

 

Opaaa

esse link foi de grande ajuda, deu pra entender bem como funciona. Obrigado!!!!!

uma coisa que notei no meu visual studio 2008, é que ao tentar adicionar um novo item ( Project > Add New Item ), na template Reporting, eu nao tenho disponivel o Report (.rdlc), somente o crystal report.

como faço pra ter essa ferramenta disponivel ???

Share this post


Link to post
Share on other sites

Resolvido...abaixo o codigo.

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 


        Dim StrConn As New SqlConnection
        Dim StrConexao As String = "Data Source=PC" & _
            ";Initial Catalog=MeuBanco" & _
            ";Persist Security Info=True" & _
            ";User ID=sa" & _
            ";Password=123"

        Dim DTable As New DataTable()
        Dim Cmd As SqlCommand = Nothing


        Try
            1° passo, carregar o relatorio
            Dim StrPath As String
            StrPath = Replace(Application.StartupPath, "\bin\Debug", "")


            rvPrintPreview.LocalReport.ReportPath = StrPath & "\RptClientes.rdlc"
            
            2° passo, passar os dados para o relatorio, abrindo a conexao com o banco de dados
            StrConn.ConnectionString = StrConexao
            StrConn.Open()

            3° passo, definindo o SQL do relatorio
            Dim sqlClientes As String = "Select * From Clientes"
             
            4° passo, executando o objeto command
            Cmd = New SqlCommand(sqlClientes, StrConn)
            Cmd.CommandText = sqlClientes
            Cmd.CommandType = CommandType.Text

            5° passo, executando a instruçao SQL atraves de um DataReader
            Dim DReader As SqlDataReader = Cmd.ExecuteReader(CommandBehavior.CloseConnection)

            6° passo, convertendo o DataReader em DataTable
            DTable.Load(DReader)

            7° passo, definindo uma nova instancia do DataSource do Report, informando o DataSet e o DataTable.
            Dim MyReportDataSource As ReportDataSource = New ReportDataSource("CadClientes", DTable)
            rvPrintPreview.LocalReport.DataSources.Add(MyReportDataSource)
             
            8° passo, dando um Refresh no relatorio.
            rvPrintPreview.RefreshReport()

        Catch ex As Exception

            MessageBox.Show(ex.ToString)
        Finally
            

            StrConn.Dispose()
            DTable.Dispose()
            StrConn = Nothing
            DTable = Nothing
        End Try


Share this post


Link to post
Share on other sites

Boa tarde, acabei de me cadastrar no forum e queria tirar uma duvida estou usando o codigo que o Altevir postou mas não esta funcionando, só carrega o cabelhaço, não acho o erro, se alguem puder me ajudar agradeco e muito.

Obs. a tabela tem dados cadastrados.

Obrigado,

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.