Usuário com melhor resposta
Report Viewer + SubReport

Pergunta
-
Caros Colegas, depois de várias e várias tentativas de estudo e consulta estou aqui para solicitar um auxilio de vocês.
É o seguinte:
Tenho 2 ObjectDataSource's (Pai e Filho) sendo que pretendo fazer o relatório "Mestre/Detalhe" ou "Pai/Filho" conforme a forma de falar de cada um.
Na figura abaixo mostra como estão meus ObjectDataSource - todos eles com parâmetros.
Já no relatório "Pai", coloquei um SubReport com os seguintes os parâmetros ID_INCIDENTES e apontando para meu campo ID do Pai.
No código coloquei os parâmetros e tudo...
Só que ao executar o relatório aparece a seguinte mensagem: "An error occurred during local report processing. Valor não pode ser nulo. Nome do parâmetro: value"
O que eu posso fazer para solucionar este problema?
Obrigado a todos...!!!
Respostas
-
Ola Marcos.
Obrigado pela resposta. Mas não funcionou desta forma q vc tinha comentado. Consegui resolver da seguinte forma:
* Retirei o Parameters do SubReport.
* E no código alterei para:
- Marcado como Resposta Vinicius Rossi Manduruca sexta-feira, 10 de agosto de 2012 12:30
Todas as Respostas
-
Olá amigo,
Primeiramente, vá no report que está sendo usado como subreport. Selecione o parametro que faz referência, e então nas propriedades do mesmo marque as opções "Allow blank Value" e "Allow Null Value".
Depois, No código da pagina fica assim no evento do subreport (exemplo didático):
objEmpresa obj = new objEmpresa();
List<objEmpresa> lista = obj.GetDetalhes(e.Parameters[0].Values[0]));
e.DataSources.Add(new ReportDataSource("Data", lista));Dessa forma o subreport trará os detalhes da empresa que faz referência pelo id. Pelo que vi acima, você está dando o select do subreport no evento "Page_Load". Dessa forma o subreport não trará os dados do id referente. Você deve dar o select no evento do subreport passando como parametro do método, o parametro passado para o subreport (como mostrado acima) para conseguir o efeito desejado.
Espero ter ajudado. Abraço!
-
Ola Marcos.
Obrigado pela resposta. Mas não funcionou desta forma q vc tinha comentado. Consegui resolver da seguinte forma:
* Retirei o Parameters do SubReport.
* E no código alterei para:
- Marcado como Resposta Vinicius Rossi Manduruca sexta-feira, 10 de agosto de 2012 12:30
-
Cara, mas desse jeito que você está fazendo não precisa de subreport. Basta colocar duas tabelas no report principal com diferemtes fontes de dados e então vincula-las como você está fazendo acima. SubReports são para detalhar registros por registros de um outro select.
Fica a sugestão. Abraço!
-
Marcos, muito boa sua colocação... Vou rever a forma q estou fazendo.
Pensando desta forma que vc sugeriu, como vou fazer para ter 3 select's distintos. Por exemplo: Tenho meu cabeçalho, meus detalhes (que são minhas ações) e tenho anexos (que são minhas imagens e gravo no banco somente o nome do arquivo, ou seja, "Foto1.png").
O cabeçalho está saindo perfeitamente... Já meus detalhes, estão saindo, porém o ReportViewer não está conseguindo administrar em uma página e passar para outra página. Qual a melhor forma de controlar isso?
E por último minha imagem: na Grid eu coloquei a imagem com a seguinte expression: "~/Imagens/Anexos/"+Fields!Path_Arquivo.Value" e não está saindo a imagem. O que vc sugere?
Mais uma vez, obrigado pela atenção.
"Imagens/Anexos/"+Fields!PATH_ARQUIVO.Value
-
vamo lá, por partes:
- Para ter 3 selects distintos, você deve ter 3 fontes de dados no seu report cada uma apontando para um select. Para administrar facilmente as fontes de dados do report, abra a janela View -> Report Data no visual stuido 2010.
- Quanto a marcação da página... Se você colocar o conteúdo variável do report na sessão Body, o report paginará perfeitamente.
- Quanto a imagem... Nunca utilizei imagem de diretório no report, apenas do Banco de Dados. Mas acho que basta você colocar o elemento de imagem no report e setar a opção de fonte para "external" e setar o diretório. Coloca assim:
"=Imagens/Anexos/"+Fields!PATH_ARQUIVO.Value (Coloque o símbolo de "=")
caso não funcione, pesquise como você deve fazer para acessar diretório no VB. O report utiliza vb em sua programação.