Inquiridor
Quando informo um parâmetro via programação fica carregando eternamente

Pergunta
-
Boenas!!!
Pessoal o negócio é o seguinte eu to passando via programação um parâmetro para o ReportViewer, porque a intenção é não deixar o usuário informar um parâmetro. Quando faço isso o relatório fica com a caixinha de carregando e não sai disso. Se eu permito que o usuário informe o parâmetro funciona muito bem e fica bem rápido.
Relatorio.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote Relatorio.ServerReport.ReportServerUrl = New Uri("http://localhost/ReportServer") Relatorio.ServerReport.ReportPath = "/Sistema/NomeRelatório" Dim pInfo As ReportParameterInfoCollection Dim paramList As New Generic.List(Of ReportParameter) paramList.Add(New ReportParameter("Cod", "1", False)) Relatorio.ServerReport.SetParameters(paramList) pInfo = RelatorioRomaneio.ServerReport.GetParameters() Relatorio.ServerReport.Refresh()
Alguém já passou por esse problema e sabe como resolver? Já tentei abrir em vários navegadores diferentes e sempre acontece o mesmo.
Obrigado!
Todas as Respostas
-
Marcus, veja se o valor que o parâmetro espera receber está correto. No parâmetro é possível parametrizar o "Value Field" que é o valor que ele passa para o dataset para executar a query e o "Label Field" que é o valor apenas para visualização no prompt.
Exemplo: Eu posso ter no Parametro @produto com o "Value Field" = idProduto e o "Label Field"=ds_Produto. Quando referencio o parâmetro no dataset principal que trará os dados, eu preciso utilizar o campo que corresponda ao ID do produto, no caso o idProduto.
select dados from tb_produtos where idProduto in (@produto)
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
O parâmetro esta correto, seguindo o seu exemplo do produto o nome do parâmetro é Cod e ali eu setei = 1.
Tanto que se eu deixar para o usuário informar e for informado o 1 ele funciona.
Fiz um teste que foi o seguinte mandei o parâmetro e ele fico com a tela de load nesse meio tempo alterei o código tirando o parâmetro e o relatório foi aberto como deveria ou seja aquela tela de load fica recarregando a página e ele já tinha recebido o parâmetro e o valor então ele atualizou manteve na tela o valor e então o relatorio foi montado. Mas isso só funciona se eu altero o código fonte enquanto ele esta com aquele balão de load.
Como vc usa isso? Eu não posso deixar o usuário informar o parâmetro ele já tem que montar o relatório e só mostrar para o cliente dando a ele apenas a opção de imprimir. Isso e um documento não posso deixar que ele puxe outro documento a seu gosto.
Valeu
-
Alguém usa o componente ReportViewer? Eu peguei os próprios códigos da biblioteca da MSDN ( http://msdn.microsoft.com/en-us/library/aa337091.aspx ) e fica na tela de load e não sai disso..... Pelo que eu vi não tem outro jeito de mostrar o relatório que não seja pelo ReportViewer!
Alguem me ajuda por favor.
-
-
Como assim original da minha aplicação? Local ou remoto vc quer dizer? Se for isso é remoto, o relatório ta no servidor de relatório.
'Set the processing mode for the ReportViewer to Remote ReportViewer1.ProcessingMode = ProcessingMode.Remote Dim serverReport As ServerReport serverReport = ReportViewer1.ServerReport 'Set the report server URL and report path serverReport.ReportServerUrl = _ New Uri("http://marcus-pc/ReportServer") serverReport.ReportPath = _ "/Sistema/Relatorio" 'Create the sales order number report parameter Dim salesOrderNumber As New ReportParameter() salesOrderNumber.Name = "Cod" salesOrderNumber.Values.Add("1") 'Set the report parameters for the report Dim parameters() As ReportParameter = {salesOrderNumber} serverReport.SetParameters(parameters)
-
Marcus,
Este processamento eterno que esta ocorrendo no Reporting Services não ocorre se você processar a mesma query diretamente no Management Studio?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
Não não, nem no prórprio relatorio não acontece isso se eu não informo o parametro.
O que eu relatei só acontece quando informo o parâmetro via programação.
Se eu só comentar a linha que adiciona o parametro o relatorio pede o paramentro e eu informo e ele gera tranquilo.- Editado Marcus Costa Braga terça-feira, 2 de abril de 2013 18:12
-
Marcus,
Então o problema esta ocorrendo somente quando os parâmetros estão sendo passados através do seu aplicativo?
Talvez seja o caso de tentar utilizar a Query Hint Optimizer, para tentarmos otimizar o processamento do SQL Server por parte do uso de variáveis durante o tempo de execução da query.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
-
Marcus,
Não estou falando que é performance!!!! Estou somente pensando em eliminar uma possibilidade com o Optimizer.
Em relação a relatórios, acredito que o problema esta ocorrendo no conjunto de dados que estão sendo passados para o seu componente de visualização.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
-
Marcus, baseado na proposta do Junior, tenta o seguinte
Quando o relatório começar a renderizar, vá no SQL manamagent Studio e digite no banco master o seguinte comando: sp_who2 active
Vai aparecer os processo ativos. Veja se existe um outro processo bloqueando o select do seu relatório. Para identificar a sua query pegue o número SPID e digite DBCC INPUTBUFFER(SPID)
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
-
Nao entendi...o relatório ja esta rederizando? Nao aparece a tela "carregando"? Me adiciona no msn. Se aparece esta tela é sinal de que o sql esta sendo executado. Edugp_sp@hotmail.com
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
-
Marcus,
Posso estar errado, mais já passei por algo do tipo com um programador, porém era C# que estavamos usando e quando ele executava o ReportViewer dentro do C# ficava igual ao seu exemplo, ai descobrimos que no código ele tava passando metódo parecido com "Relatorio.ServerReport.Refresh()" , porém se não me falha a memória ele passou no inicio do código e com isso fez com que o refresh exibisse os dados, pois pelo que entendi ele busca corretamente os dados mais não consegue dar o refresh na tela para exibir os mesmos.
Assim que possivel posto os código usado aqui para exemplo.
Att.:
Chilipi_10
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 24 de dezembro de 2018 00:28