Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dh-00

[Resolvido] sugestões sobre o report viewer

Recommended Posts

Estou finalizando minha primeira aplicação em vb.net, e chegou na hora dos relatórios.

 

A minha aplicação esta totalmente moldavel, e as queries estao em uma classe, assim como os metodos de conexao (leitura do arquivo com informações conexao)

 

Ao ter o primeiro contato com o report viewer, pelo que vi, e pelos sites de exemplos, é solicitado a criação de um datasource, e um dataset.

 

O datasource, ja me gera um problema, pois nao consigo ler o arquivo de propridades para efetuar a conexao,e deixar a aplicação configuravel a partir de um arquivo.

 

O dataset tb é um problema, por causa da query ficar fixa dentro do componente.

 

Gostaria de uma ajuda, para saber como devo realizar a construção do relatorio,trabalhando com uma conexao OLEDB, e Datareader.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query não precisa ficar dentro do componente, você pode muito bem alimentar um DataSet com a query que esta na sua classe.

O dataset tipado é serve mais como um auxilio na hora de você montar seu relatório, posicionar os campos e coisas afins.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query não precisa ficar dentro do componente, você pode muito bem alimentar um DataSet com a query que esta na sua classe.

O dataset tipado é serve mais como um auxilio na hora de você montar seu relatório, posicionar os campos e coisas afins.

 

Abraços...

 

quintelab,

 

Obrigado pela ajuda mais uma vez.

 

Mas ainda tenho umas duvidas de como proceder:

1º - Como inicio o relatorio?

2º - Como realizo a conexao, se o relatorio exige um datasource?

3º - Para o dataset, tenho que criar um dataset no relatorio (isso é possivel sem um datasource), a antes de abrir o form com o relatorio, passar como parametro a query para o dataset? Mas e a conexao com o banco?

 

Como minha aplicação esta toda em codigo, em nenhuma parte dela possuo datasource ou dataset, por isso que estou perdido em como gerar esse relatorio.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minhas aplicações também são assim, tudo via código, utilizo os DataSet tipados somente para relatórios, de uma olhada: http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=247

 

Abraços...

 

Quintelab,

 

Estou quase chegando no meu objetivo, e agora me deparei com o seguinte cenario:

 

Criei o arquivo de relatorio

Criei uma datatable, e nela adicionei os campos que preciso para construir o relatorio

Ate aqui ok, porem para o relatorio funcionar tenho que vincular o controle reportviewer ao relatorio, e desse modo é automaticamente vinculado o datatable e um databinding ao controle reportviewer.

Basta entao popular o datatable e o relatorio funciona de boa.

 

Porem, no sistema esta previsto mais de 10 relatorios, e desse modo, teria que criar 10 formularios de vizualizações iguais, porem com diferentes dataset.

 

Minha duvida é, como posso criar somente uma tela com o controle reportviewer, e nesse controle adicionar o relatorio que quero executar, e a fonte de dados desse relatorio dinamicamente.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nas minhas aplicações eu tenho somente uma página que possui o ReportViewe e todos os relatórios passam por ele, eu alimento os parâmetros de forma dinâmica pelo c#.

 

Abraços...

 

Poderia por favor me passar um exemplo de como fazer isso?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Nas minhas aplicações eu tenho somente uma página que possui o ReportViewe e todos os relatórios passam por ele, eu alimento os parâmetros de forma dinâmica pelo c#.

 

Abraços...

 

Poderia por favor me passar um exemplo de como fazer isso?

 

Obrigado!

 

Resolvido!

 

Public Class Frm_relatorio

    'variaveis
    Dim v_relatorio As String = Nothing 'nome do relatorio
    Dim dr As OleDb.OleDbDataReader = Nothing 'datareader de dados do relatorio
    Dim dts As String = Nothing 'nome do datasource do relatorio

    'Nome do relatorio
    Public Sub Nome_relatorio(ByVal v_nome As String)
        Me.v_relatorio = v_nome
    End Sub

    'Data reader
    Public Sub Dr_relatorio(ByVal v_dr As OleDb.OleDbDataReader)
        Me.dr = v_dr
    End Sub

    'Nome do datasource
    Public Sub Dt_relatorio(ByVal v_dt As String)
        Me.dts = v_dt
    End Sub


    Private Sub Frm_relatorio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            'Cria o datatable
            Dim dt_table As New DataTable()

            'Carrega o relatorio de modo local
            ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local

            'Limpa o relatorio
            Me.ReportViewer1.Reset() 'Reset control to clear previous report information

            'Carrega o relatorio
            ReportViewer1.LocalReport.ReportEmbeddedResource = v_relatorio

            'Limpa os data sources
            Me.ReportViewer1.LocalReport.DataSources.Clear()

            'Carrega o data table
            dt_table.Load(dr)

            'Define o datasource

            Dim myReportDataSource As ReportDataSource = New ReportDataSource(dts, dt_table)

            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource)

            Me.ReportViewer1.RefreshReport()
        Catch ex As Exception
            MsgBox("Houve um erro ao carregar o relatório!" + Chr(13) + ex.Message, MsgBoxStyle.Critical, "Aviso!")
        End Try

    End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.