Ir para o conteúdo
Nelson Sousa

The SubReport xxxxx Could not be found

Mensagens Recomendadas

Nelson Sousa

Olá a todos,

Este é meu primeiro tópico, e já venho com um probleminha para os amigos me ajudarem.

Estou usando o VS2010 no Win7.

Criei um relatório com dois sub-relatórios. Fiz todos os testes carregando cada um deles individualmente e funcionaram perfeitamente. Porém, quando carrego o relatório principal com os dois subs agregados, tenho essa mensagem de erro:

"The SubReport SubReport1 could not be found at the specified location Rpt_Bordero_Cred.rdlc.

Please verify that the subreport has been published and the name is correct."

Já tentei retirar a extensão .rdlc e também não funcionou.

No evento Load do form onde tenho o reportviewer tenho:

AddHandler RptViewer.LocalReport.SubreportProcessing, AddressOf Set_Bordero_Cred

e criei:

Public Sub Set_Bordero_Cred(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
 Try
	 Dim ds_Subs As DataSet
	 Dim Busca As New Cls_Dados
ds_Subs = Busca.RetornarDataSet(str_Sub(0))
	 Dim rptDataSource As New ReportDataSource ("DS_Bordero_Cred", ds_Subs.Tables(0))
	 e.DataSources.Add(rptDataSource)	
Catch ex As Exception
	 MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 End Try
End Sub

Acho que meu erro está justamente no código acima. Como saber a que subreport essa sub pertence?

Se alguém tiver alguma idéia de como posso resolver eu agradeço.

Um abraço,

Nelson

Editado por Caça
GeSHi

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá,

Sim, todos os meus reports estão na mesma pasta.

Quanto ao exemplo, foi exatamente ele que usei como base de raciocínio.

O evento SubReportProcessing não está ocorrendo, o que indica que o subreport não está sendo encontrado, estou certo?

AS propriedades de todos eles estão como EMBEDDED RESOURCE / DO NOT COPY, porém já tentei CONTENT / COPY ALWAYS e não obtive sucesso.

2uqhe0p.png

Editado por Nelson Sousa

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Ah sim,

Fiz referência ao subreport no campo [use this report as a subreport], na imagem que publiquei você pode conferir.

Inclusive testei colocando a extensão .rdlc, com ou sem a extensão o subreport não é localizado para ser carregado.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Peço desculpa mas ontem não vi a imagem (não me estava a aparecer) :/

Vê como tens definida a build action para os reports. Este artigo deve ajudar a explicar (caso seja este o problema)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Pois então,

A Build Action de todos eles está como Embedded Resource/Do not Copy, porém já testei como Content/Copy Always e também não funcionou.

No artigo que você me passou há uma função que extrai o relatório principal da aplicação, colocando numa stream que é usada mais tarde na carga do report, certo?

Todo este procedimento é feito de forma automática quando se trata dos subreports? Bastando para tanto referencia-lo nas propriedades do objeto subreport dentro do relatório principal?


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Se estiver definido como Embedded Resource então o relatório fica dentro do executável. Mas faz o seguinte, define o handler no final:

' definição dos ReportDataSource, etc

ReportViewer1.RefreshReport()

AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SubreportProcessingEvent

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Ainda não deu.

Private Sub Frm_VB_Report_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Me.RptViewer.RefreshReport()
 AddHandler RptViewer.LocalReport.SubreportProcessing, AddressOf Set_Sub_Report
End Sub

O problema está muito estranho pois, pela mensagem de erro, o subreport não está sendo localizado.

Parece que o problema está no próprio ReportViewer pois, como você pode conferir na imagem acima, não há erro no nome dos subrelatórios. O evento de SubReportProcessing nem chega a ocorrer.

Editado por Caça
GeSHi

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Então,

Depois da carga do report principal, ou no seu evento load, faço o Add do handler. Só que, pelo que entendi, esse handler é executado no SubreportProcessing, será que estou certo?

Acontece que o problema está no fato de o subreport não ser encontrado e carregado para que o evento SubreportProcessing ocorra.

Meu problema está justamente aí, o subreport não é encontrado para que seja processado.

Inclusive criei um novo projeto aqui com apenas os 2 reports(principal e sub), coloquei apenas uma caixa de texto em cada um deles.

O principal é carregado normalmente e o subreport não é localizado.

Já tô começando a achar que o problema está na instalação do meu VS2010.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Na verdade código pra carregar report só o do principal:

 Dim rptDataSource As ReportDataSource
 Dim Report_From As New Frm_VB_Report
 Dim Busca As New Cls_Dados
 Dim strSQL As String = ""
 Dim strSQL_Cred As String = ""
 Dim strSQL_Deb As String = ""
 Dim dsBordero As New DataSet
 Dim strFiltro As String = txtIDBordero.Text.Trim
 strSql = "SELECT Tbl_Bordero.*, Tbl_Entidades.Entidade" & _
 " FROM Tbl_Bordero INNER JOIN Tbl_Entidades ON Tbl_Bordero.IDEntidade = Tbl_Entidades.IDEntidade" & _
 " WHERE Tbl_Bordero.IDBordero=" & strFiltro & ";"
 dsBordero = Busca.RetornarDataSet(strSql)

 strSQL_Cred = "SELECT Tbl_Mov_Financeiros.[NotaFiscal] & '-' & Tbl_Mov_Financeiros.[Parcela] & '/' & Tbl_Mov_Financeiros.[TP] AS Titulo," & _
		 " Tbl_Bordero_Det.DataVencimento, Tbl_Bordero_Det.ValorTitulo," & _
		 " Tbl_Bordero_Det.Titular,Tbl_Bordero_Det.NumCheque" & _
		 " FROM Tbl_Bordero_Det INNER JOIN Tbl_Mov_Financeiros" & _
		 " ON Tbl_Bordero_Det.IDTitulo = Tbl_Mov_Financeiros.IDMovFinanceiro" & _
		 " WHERE (((Tbl_Bordero_Det.IDBordero)=" & strFiltro & ")" & _
		 " AND (Tbl_Bordero_Det.Tipo='C'));"
 strSQL_Deb = "SELECT Tbl_Mov_Financeiros.[NotaFiscal] & '-' & Tbl_Mov_Financeiros.[Parcela] & '/' & Tbl_Mov_Financeiros.[TP] AS Titulo," & _
		 " Tbl_Bordero_Det.DataVencimento, Tbl_Bordero_Det.ValorTitulo," & _
		 " Tbl_Bordero_Det.Titular,Tbl_Bordero_Det.NumCheque" & _
		 " FROM Tbl_Bordero_Det INNER JOIN Tbl_Mov_Financeiros" & _
		 " ON Tbl_Bordero_Det.IDTitulo = Tbl_Mov_Financeiros.IDMovFinanceiro" & _
		 " WHERE (((Tbl_Bordero_Det.IDBordero)=" & strFiltro & ")" & _
		 " AND (Tbl_Bordero_Det.Tipo='D'));"

 With Report_From
	 .Name = "Borderô"
	 .str_Sub(0) = strSQL_Cred
	 .str_Sub(1) = strSQL_Deb
	 .str_nome_rpt = "Rpt_Bordero.rdlc"
	 .WindowState = FormWindowState.Maximized
	 .Show()
 End With
 Try
	 With Report_From.RptViewer.LocalReport
		 Dim rptStream As IO.Stream = GetReport("Rpt_Bordero.rdlc")
		 .LoadReportDefinition(rptStream)
		 .DataSources.Clear()
	 End With
	 ' Use the same name as defined in the report Data Source Definition
	 rptDataSource = New ReportDataSource("DS_Bordero", dsBordero.Tables(0))
	 Report_From.RptViewer.RefreshReport()
	 Dim params(3) As Microsoft.Reporting.WinForms.ReportParameter
	 ReDim params(1)
	 params(0) = New Microsoft.Reporting.WinForms.ReportParameter("RPT_Titulo", "Borderô de Pagamentos", True)
	 params(1) = New Microsoft.Reporting.WinForms.ReportParameter("RPT_Sistema", Application.ProductName & " - " & Application.ProductVersion, True)
	 Report_From.RptViewer.LocalReport.SetParameters(params)
	 Report_From.RptViewer.LocalReport.DataSources.Add(rptDataSource)
	 Report_From.RptViewer.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)
 Catch ex As Exception
	 MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 End Try

O código acima é executado num formulário onde lanço as movimentações do borderô de documentos.

No formulário do reportviewer tenho:

Private Sub Frm_VB_Report_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Me.RptViewer.RefreshReport()
 AddHandler RptViewer.LocalReport.SubreportProcessing, AddressOf SubreportProcessingEvent
End Sub

Aqui o sureportprocessing:

Public Sub SubreportProcessingEvent(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
 Try
	 Dim ds_Subs As DataSet
	 Dim Busca As New Cls_Dados
	 Dim I As Integer
' Dim str_Nome_DataSet As String = ""

	 If e.DataSourceNames.ToString = "Rpt_Bordero_Cred.rldc" Then
		 I = 0
	 ElseIf e.DataSourceNames.ToString = "Rpt_Bordero_Pag.rldc" Then
		 I = 1
	 End If
	 ds_Subs = Busca.RetornarDataSet(str_Sub(I))
	 Dim rptDataSource As New ReportDataSource _
										 ("DS_Bordero_Cred", ds_Subs.Tables(0))
	 e.DataSources.Add(rptDataSource)
 Catch ex As Exception
	 MessageBox.Show(ex.Message, My.Application.Info.Title, _
									 MessageBoxButtons.OK, MessageBoxIcon.Error)
 End Try
End Sub

Editado por Caça
GeSHi

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Boas

Já tive um problema parecido, o de não encontrar o relatório, é que o relatório quando é feito fica na pasta do projecto do programa, e o programa quando é executado , é executado numa pasta diferente "bin\Debug", e o sistema não copia esses ficheiros automaticamente, tem de ser copiados para lá manualmente ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá, Calos,

Acho que a propriedade Embedded Resource resolve essa questão.

O problema está no fato de o relatório principal não encontrar o subrelatório, mesmo estando os 2 na mesma pasta.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá,

Eu de novo....rssrrs

Eu não gosto muito de pedir exemplo não mas, como cheguei a um beco sem saida, vou me arriscar.

Se alguém tiver como me mandar um exemplo de relatório e sub-relatório em funcionamento eu agradeceria muito.

Não precisa ser coisa muito elaborada, basta uma caixa de texto em cada um, só para que eu compare as propriedades com os meus aqui.

Meu email: nelsonasousa@yahoo.com.br

Obrigado!!!

Editado por Nelson Sousa

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Finalmente consegui resolver o problema.

Eu tenho o costume de criar pastas dentro do Solution Explorer para organizar os objetos da solução.

Meus reports estavam na pasta CamadaApresentacao\Relatorios.

Apenas retirei os reports da pasta acima e coloquei-os no raiz do Solution Explorer. Me parece que o reportviewer não trabalha muito bem com caracteres do tipo \.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.