Jump to content
diego_10

VB.NET + ReportViewer

Recommended Posts

diego_10

Boas,

Estou na construção dos relatorios com o reportViewer e o report.rdlc, e escolho os meus filtros e crio o relatorio a primeira x tudo bem, mas na segunda x se alterar os filtros e criar novamente ele não me actualiza o relatorio, já coloquei um breakpoint e ele passa outra novamente em todo o lado e o dataset fica correcto, mas na hora de actualizar o no reportViewer não actualiza, já coloquei o me.ReportViewer1.RefreshReport, mas não consegui resolver, alguém tem uma solução?

Cumprimentos a todos!

Share this post


Link to post
Share on other sites
Caça

E limpaste o DataSource anterior ou passaste a ficar com dois?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Ele limpa o datasource, porque é como te digo quando passa o breakpoint e vou la ver a Variavel oTable e ele esta correcto:

Fica aqui o codigo:


Dim strConexao As String = Ler_String_Conexao(ofdTeste)
        Dim oConn As New SqlConnection
        Dim strSQL As New StringBuilder
        Dim oTable As New DataTable()
        Dim oCmd As SqlCommand = Nothing
        Dim strReportPath As String = ""

        Try

            '1 passo: carregar o relatório
            ReportViewer1.LocalReport.ReportPath = ("Relatorios\CosturaFiltros.rdlc")
            
            '2 passo: passar os dados para o relatório 
            'abrindo conexão com o banco de dados
            oConn.ConnectionString = strConexao
            oConn.Open()

            'definindo o SQL do relatório
            strSQL.Append("SELECT CodigoCapa,Descricao, IDTurno,Turno, Gap, Linha, Processo, SUM(TotalPecasEmbaladas) AS Total FROM (SELECT dbo.CodigoCapa.CodigoCapa, dbo.CodigoCapa.Descricao, dbo.PecasProduzidas.IDLinha, dbo.PecasProduzidas.TotalPecasEmbaladas, dbo.PecasProduzidas.Data, dbo.Gap.Nome AS Gap, dbo.Linhas.Nome AS Linha, dbo.PecasProduzidas.IDTurno, dbo.Turno.Descricao AS Turno, dbo.ZonaDeAccao.ZonaAccao AS Processo FROM dbo.PecasProduzidas INNER JOIN dbo.CodigoFinal ON dbo.PecasProduzidas.IDCodigoFinal = dbo.CodigoFinal.IDCodigoFinal INNER JOIN dbo.Gap ON dbo.PecasProduzidas.IDGap = dbo.Gap.IDGap INNER JOIN dbo.CodigoCapa ON dbo.CodigoFinal.IDCodigoCapa = dbo.CodigoCapa.IDCodigoCapa INNER JOIN dbo.Linhas ON dbo.PecasProduzidas.IDLinha = dbo.Linhas.IDLinhas INNER JOIN dbo.Turno ON dbo.PecasProduzidas.IDTurno = dbo.Turno.IDTurno INNER JOIN dbo.ZonaDeAccao ON dbo.PecasProduzidas.IDZonaAccao = dbo.ZonaDeAccao.IDZonaAccao WHERE (dbo.PecasProduzidas.Data >= '" & dtpInicio.Text & "') AND (dbo.PecasProduzidas.Data <= '" & dtpFim.Text & "') AND (dbo.PecasProduzidas.IDZonaAccao = " & lblidprocesso.Text & ") AND (dbo.PecasProduzidas.IDLinha = " & lblidlinha.Text & ") GROUP BY dbo.PecasProduzidas.IDLinha, dbo.PecasProduzidas.Data, dbo.Gap.Nome, dbo.PecasProduzidas.TotalPecasEmbaladas, dbo.CodigoCapa.CodigoCapa, dbo.CodigoCapa.Descricao, dbo.Linhas.Nome, dbo.PecasProduzidas.IDTurno, dbo.Turno.Descricao, dbo.ZonaDeAccao.ZonaAccao) AS t Where TotalPecasEmbaladas >0  GROUP BY CodigoCapa, Descricao, IDTurno, Gap, Linha, Processo,Turno order by t.CodigoCapa")


            oCmd = New SqlCommand(strSQL.ToString, oConn)
            oCmd.CommandText = strSQL.ToString
            oCmd.CommandType = CommandType.Text

            'definindo o parametro do SQL 
            'oCmd.Parameters.Add(New SqlParameter("@Color", SqlDbType.Char)).Value = "Red"

            'executando o SQLCommand
            Dim oDataReader As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
            'converter o DataReader para DataTable 
            oTable.Load(oDataReader)



            'definindo o DataSource do relatório
            Dim myReportDataSource As ReportDataSource = New ReportDataSource("Producao", oTable)
            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource)
            ReportViewer1.ShowParameterPrompts = False
            ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WinForms.ReportParameter("DtInicio", dtpInicio.Value.ToString()))
            ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WinForms.ReportParameter("DtFim", dtpFim.Value.ToString()))
            ReportViewer1.RefreshReport()

            If oTable.Rows.Count = 0 Then
                MsgBox("Filtros sem valores!", vbInformation, "Informação")
            End If

        Catch ex As Exception
            System.Diagnostics.Debug.WriteLine(ex.Message)

        Finally

            oConn.Dispose()
            oTable.Dispose()

            oConn = Nothing
            oTable = Nothing

        End Try

Este o meu codigo para criar o relatorio!

Share this post


Link to post
Share on other sites
jpaulino

Tens de apagar é a informação que lá está antes de definires nova informação. Do tipo:

ReportViewer1.LocalReport = Nothing
ReportViewer1.LocalReport.Parameters.Clear()

Share this post


Link to post
Share on other sites
diego_10

Boas JPaulino, mas isso ja estou a fazer aqui:


oConn.Dispose()
            oTable.Dispose()

            oConn = Nothing
            oTable = Nothing


Experimentei colocar o codigo que me mandas t mas nao esta a funcionar, porque o "LocalReport" is readOnly.

Share this post


Link to post
Share on other sites
Caça

Tenta assim

ReportViewer1.LocalReport.ReportPath = Nothing
ReportViewer1.LocalReport.Parameters.Clear()
ReportViewer1.LocalReport.DataSources.Clear()


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Boas Caça,

Consegui limpando o datasource, mas aquilo que tenho no final da sub nao me esta a fazer nada, é isso?

Cumprimentos

Share this post


Link to post
Share on other sites
Caça

Convém sempre libertar a memória ;)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.