• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

reports

16 mensagens neste tópico

Boas pessoal tenho 2 problemas com reports

este código esta-me a dar erro:

If Not matriculatext.Text = String.Empty Then

            ' carrega o relatorio desejado

            Dim strReportName As String = "CrystalReport1"

            '

            'define o caminho e nome do relatorio

            Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\ _"
                                              CrystalReport1" & "\" & strReportName & ".rpt")


            '

            'verifiqa se o arquivo existe

            If Not IO.File.Exists(strReportPath) Then

                Throw (New Exception("Relatorio nao localizado :" & vbCrLf & strReportPath))

            End If

            '

            'instancia o relaorio e carrega

            Dim CR As New ReportDocument

            CR.Load(strReportPath)

            '

            ' atribui os parametros declarados aos objetos relacionados

            Dim crParameterDiscreteValue As ParameterDiscreteValue

            Dim crParameterFieldDefinitions As ParameterFieldDefinitions

            Dim crParameterFieldLocation As ParameterFieldDefinition

            Dim crParameterValues As ParameterValues

            '

            ' Pega a coleção de parametros do relatorio

            crParameterFieldDefinitions = CR.DataDefinition.ParameterFields

            '

            ' define o primeiro parametro

            ' - pega o parametro e diz a ela para usar os valores atuais

            ' - define o valor do parametro

            ' - inclui e aplica o valor

            ' - repete para cada parametro se for o caso (não é o caso deste exemplo)

            ' Vamos usar o parametro 'cidade'

            crParameterFieldLocation = crParameterFieldDefinitions.Item("matricula")

            crParameterValues = crParameterFieldLocation.CurrentValues

            crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue


            'obtem o valor da caixa de texto

            crParameterDiscreteValue.Value = matriculatext.Text

            crParameterValues.Add(crParameterDiscreteValue)

            crParameterFieldLocation.ApplyCurrentValues(crParameterValues)

            '

            ' Define a fonte do controle Crystal Report Viewer como sendo o relatorio definido acima

            CrystalReportViewer1.ReportSource = CR

        Else

            MsgBox("Informe o nome da cidade.", MsgBoxStyle.Information, "Nome da cidade. Ex: London, Paris, Roma, etc..")

        End If


    End Sub

Aqui:

  Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\ _"
                                              CrystalReport1" & "\" & strReportName & ".rpt")

2º como posso usar caminhos relativos aqui? é que o projecto é para entregar e depois nao funciona no outro PC

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código está a dar-te erro porque tens um granel com as aspas e com a quebra de linha.

Reparaste que o pseudo-parser do forum deixou de dar a cor certa às coisas, passando só a mostrar a cor das strings, depois de onde dizes que dá erro?

Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\ _"
                                              CrystalReport1" & "\" & strReportName & ".rpt")

Deveria ser:

Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\" & _
                                              "CrystalReport1" & "\" & strReportName & ".rpt")

Para a segunda, se o ficheiro estiver sempre com a raíz do binário:

Dim strReportPath As String = Replace(Application.StartupPath & "\" & strReportName & ".rpt", "\\", "\")

Se for dentro de uma pasta, na raíz do binário:

Dim strReportPath As String = Replace(Application.StartupPath & "\CrystalReport1\" & strReportName & ".rpt", "\\", "\")

E por aí fora.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se meter assim:

    Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\" & _

                                              "CrystalReport1" & "\" & strReportName & ".rpt")

dá erro no ultimo parenteses dizendo "end of statement expected. e depois nas variveis seguintes.. tenho erro a dizer que nao estao declaradas..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tira o parênteses do fim, não está lá a fazer nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tira o parênteses do fim, não está lá a fazer nada.

sim isso mesmo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiquei com o olho nas aspas que nem  vi o parentesis :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiquei com o olho nas aspas que nem  vi o parentesis :-[

acho que devo estar a meter a localização mal.. da-me erro aqui:

Throw (New Exception("Relatorio nao localizado :" & vbCrLf & strReportPath))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá te erro porque essa linha lança mesmo um erro.

Agora, temos é de perceber o âmbito em que ela corre para poder determinar se é realmente como ela diz ou se só a tens aí por ter, ou porque copiaste assim do macoratti e puseste no sítio errado ou coisa parecida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá te erro porque essa linha lança mesmo um erro.

Agora, temos é de perceber o âmbito em que ela corre para poder determinar se é realmente como ela diz ou se só a tens aí por ter, ou porque copiaste assim do macoratti e puseste no sítio errado ou coisa parecida.

dá erro no código, não erro tipo msgbox.

este código é para filtrar um report segundo ~um valor introduzido numa textbox.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol, não. Throw(New Exception("") lança-te uma excepção no código e não em messagebox.

Voltamos é à mesma história do âmbito.

Isto deve estar depois ou dentro de um IF ou coisa parecida. Mete aqui o bloco todo.

E já agora diz onde tens o RPT para determinar se estás a usar o caminho correcto.

Senão usa mas é um OpenFileDialog enquanto não atinas com as localizações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol, não. Throw(New Exception("") lança-te uma excepção no código e não em messagebox.

Voltamos é à mesma história do âmbito.

Isto deve estar depois ou dentro de um IF ou coisa parecida. Mete aqui o bloco todo.

E já agora diz onde tens o RPT para determinar se estás a usar o caminho correcto.

Senão usa mas é um OpenFileDialog enquanto não atinas com as localizações.

o meu report está no mesmo sitio onde é guardado os forms.. eu acho que estou a fazer isto mal.. eu nao quero abrir nenhum report á parte.. mas tambem nao tenho a certeza se se abre um relatorio da mesma forma que um form normal..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podias ter dito logo que estava na solution explorer :angry1:

Dim CR As New CrystalReport1

E tens acesso ao report.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podias ter dito logo que estava na solution explorer :angry1:

Dim CR As New CrystalReport1

E tens acesso ao report.

desculpa :$ então com esse código chamo o relatorio, e depois como o filtro? ou em vez de ter esse código todo:

    'define o caminho e nome do relatorio

            Dim strReportPath As String = "D:\Documents and Settings\Macoratti\Meus documentos\Visual Studio 2005\Projects\CrystalReports1\ _"

                                              CrystalReport1" & "\" & strReportName & ".rpt")

            '

            'verifiqa se o arquivo existe

            If Not IO.File.Exists(strReportPath) Then

                Throw (New Exception("Relatorio nao localizado :" & vbCrLf & strReportPath))

            End If

ter só esse?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Filtrar?

A instanciação só funciona se o relatório estiver embebido na solução.

E se estiver embebido na solução não precisas de verificar se o ficheiro existe, pois se ninguém o sacou do sítio ele está lá.

Podes verificar à mesma, mas terás de usar um caminho absoluto variável. Já te foram dadas soluções para isso.

Por defeito, penso que o que metas de ficheiros externos no solution explorer, passe para Copy always. Isso significa que a cada build o ficheiro é te copiado para junto do binário. Se queres procurar por ele, é lá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Filtrar?

A instanciação só funciona se o relatório estiver embebido na solução.

E se estiver embebido na solução não precisas de verificar se o ficheiro existe, pois se ninguém o sacou do sítio ele está lá.

Podes verificar à mesma, mas terás de usar um caminho absoluto variável. Já te foram dadas soluções para isso.

Por defeito, penso que o que metas de ficheiros externos no solution explorer, passe para Copy always. Isso significa que a cada build o ficheiro é te copiado para junto do binário. Se queres procurar por ele, é lá.

é melhor usar pelo solution explorer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora