Jump to content

Microsoft Reports | Problemas com SubReport


Recommended Posts

Posted

Precisava da vossa ajuda / dicas para o seguinte:

Necessito de fazer uma serie de listagens.

A BD que uso é o Access, mas não tenho definido nenhum dataset no projecto pois faço a ligação e carrego

os dados por código.

Outra situação é que tanto o nome da BD de dados bem como a sua localização são variaveis mas não é

problema pois carrego esta informação quando o programa arranca.

A minha questão é os Reports (rdlc) que vem com o VS 2008 funcionam bem?

Existem alguns exemplos de reports sem datasets?

O que necessitava era quando um utilizador carrega-se num botão o programa criava a instrucção SQL

e chamava o report com esses parâmetros.

É possivel?

Já procurei em diversos sitios na NET mas não consegui nada.  ?

Obrigado

Posted

Os Microsoft Reporting Services (*.rdls) funcionam muito bem e alias só uso eles actualmente. Na minha opinião são mais rápidos e fáceis de utilizar do que os Crystal Reports.

Já à questão que colocas não sei se é possivel, e até porque se desse para o fazer não era nada prático. Os datasets servem para colocar os campos no relatório e depois, através do código, define-se a datasource. É muito mais fácil assim.

Podes também passar parametros e colocar no relatório muito facilmente.

Podes ver alguns exemplos e mais detalhes nestes sites.

http://www.gotreportviewer.com/

http://msdn.microsoft.com/en-us/library/ms251712(VS.80).aspx

http://www.neodynamic.com/ND/FaqsTipsTricks.aspx?tabid=66&prodid=7&sid=30

Se tiveres dúvidas diz que eu estou farto de os usar 😛

Posted

Os Microsoft Reporting Services (*.rdls) funcionam muito bem e alias só uso eles actualmente. Na minha opinião são mais rápidos e fáceis de utilizar do que os Crystal Reports.

Já à questão que colocas não sei se é possivel, e até porque se desse para o fazer não era nada prático. Os datasets servem para colocar os campos no relatório e depois, através do código, define-se a datasource. É muito mais fácil assim.

Podes também passar parametros e colocar no relatório muito facilmente.

Podes ver alguns exemplos e mais detalhes nestes sites.

http://www.gotreportviewer.com/

http://msdn.microsoft.com/en-us/library/ms251712(VS.80).aspx

http://www.neodynamic.com/ND/FaqsTipsTricks.aspx?tabid=66&prodid=7&sid=30

Se tiveres dúvidas diz que eu estou farto de os usar 😛

Em primeiro lugar obrigado pela rápida resposta  😛

Em relação aos dataset com faço em virtude de usar nome de DBs e localizações variaveis?

Vou dar uma leitura aos links.

Obrigado,

cumpts

Posted

Isso não interessa ... depois no código vais preencher uma dataset que terá a indicação  para a localização da base de dados.

Ok  😛

Vou fazer uns testes.

Cumpts

Posted

Para começar fiz uma listagem simples e sem parametros, mostra todos os registos usando um query da BD.

- Criei o report.rdlc

- Criei um form e adicionei o Report Viewer

Agora como e onde altero a "Connection String" por codigo  ?  :wallbash:

Obrigado

Posted

Bem, tens aqui um exemplo que está mais ou menos modificado. Precisas de alterar para Access!

- Crias a dataset com a informação que precisas (neste caso era a tabela myTable)

- Colocas um reportviewer no form

- Utilizas o seguinte código (depois de adaptares)

        Try
            ReportViewer1.LocalReport.ReportPath = reportPath & "\Report1.rdlc"
            ' Preenche a listagem do relatório
            Using da As New SqlDataAdapter("SELECT * FROM myTable WHERE ID=?", connString)
                With da.SelectCommand.Parameters
                    .Add("@id", SqlDbType.Int).Value = 123
                End With
                Using ds As New DataSet
                    da.Fill(ds)
                    ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("Nome Do DataSet", ds.Tables(0)))
                End Using
            End Using
            ' Um parametro definido no report
            Dim parameters(0) As ReportParameter
            parameters(0) = New ReportParameter("ID", 123)
            ReportViewer1.LocalReport.SetParameters(parameters)
            With ReportViewer1
                .SetDisplayMode(DisplayMode.PrintLayout)
                .ZoomMode = ZoomMode.Percent
                .ZoomPercent = 80
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
Posted

Depois de alguns testes:

O código disponibilizado pelo jpaulino e adaptado para o MSAccess aparentemente funciona pois não dá qualquer erro durante a execução mas ... quando o reportviewer abre aparece a mensagem de cancelado e apenas mostra os títulos, header e o valor do parâmetro

http://img98.imageshack.us/img98/4269/rpt1.png

http://img98.imageshack.us/img98/674/rpt2.png

Posted

Aqui está

       Dim strSQL As String = _
            " SELECT LBK_Record, LBK_nome1, LBK_nome2, LBK_Nome3, " & _
            " FROM qryLBSimples " & _
            " WHERE LBK_Record = ?"

        Try

            'ReportViewer1.LocalReport.ReportPath = "Report1.rdlc"

            'Preenche a listagem do relatório
            Using da As New OleDbDataAdapter(strSQL, CnnString)
                With da.SelectCommand.Parameters
                    .Add("@RecID", OleDbType.Integer).Value = 25
                End With

                Using ds As New DataSet
                    da.Fill(ds)
                    ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("LBKDataSet", ds.Tables(0))) 
                End Using

            End Using

            ' Um parametro definido no report
            Dim parameters(0) As ReportParameter
            parameters(0) = New ReportParameter("RecID", 25)
            ReportViewer1.LocalReport.SetParameters(parameters)

            With ReportViewer1
                .SetDisplayMode(DisplayMode.PrintLayout)
                .ZoomMode = ZoomMode.Percent
                .ZoomPercent = 80
            End With

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        Me.ReportViewer1.RefreshReport()

Posted

Parece estar correcto.

E tens estes campos no dataset que criaste LBKDataSet e está definido correctamente na datasource do report ?

Sim,

Este é o meu problema e estou farto de dar voltas e voltas e não chego lá.

Acho que vou eliminar o dataset, report, form e código e fazer novamente com calma.

Pode estar "algo" a baralhar isto  😛

Obrigado

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.