Pergunta

Então eu tenho um relatório "dashboard diária" no SSRS 2005. Ele tem um parâmetro, @pDate, cujo padrão é "= Now".

Eu gostaria de usar este mesmo relatório em um relatório vinculado para mostrar painel final, de ontem (que seria, então, enviado para fora através de subscrição), e substituir o padrão parâmetro com outra expressão, "= dateadd (d, 1, Agora)." Mas quando eu mudar o parâmetro padrão, eu recebo um erro de incompatibilidade de dados (natch).

Estou assumindo que é o fim da linha e eu só preciso implantar uma cópia do relatório de painel diariamente com uma @pDate padrão de ontem, mas eu pensei que eu ia postar aqui e ver se alguém tinha algum atalho bacana para alcançar este objetivo sem ter que manter dois RDLs.

UPDATE: Eu achei essa mensagem em MSDN :

Se Valor padrão aceita um valor, você pode digitar um constante ou sintaxe que é válido para o processamento de dados extensão usado com o relatório.

"extensão de processamento de dados" aparentemente se traduz em servidor SQL, então eu tentei seleciona únicas válidas que não eram constantes (GETDATE () "27/4 /" + ANO (GETDATE ()), etc ...) e ainda nada.

Foi útil?

Solução

Então eu descobri o meu problema: se você tiver sub-relatórios dentro de seu relatório principal que estão usando parâmetros de passagem do relatório principal, certifique-se de que todos os parâmetros em seus sub-relatórios estão usando o mesmo tipo de dados . Dois dos meus sub-relatórios estavam usando um tipo de dados string para o campo @pDate vez de DateTime, de modo a subscrição estava falhando (embora por algum motivo a versão ao vivo do relatório tolera esta inconsistência.)

Agora estou usando uma assinatura controlada por dados para definir @pDate dinamicamente e tudo parece estar funcionando bem.

Outras dicas

Eu não testei isso, mas você poderia tentar adicionar um segundo parâmetro para o relatório (sem um padrão - chamá-lo pDateOverride por causa do argumento) e altere o valor padrão para pDate ser uma expressão usando o novo valor se ele está presente, caso contrário Now (). Algo como:

=Iif(IsEmpty(Parameters!pDateOverride.Value),Now(),Parameters!pDateOverride.Value)

Você pode então definir pDateOverride ao chamar o relatório para gerar painel final, de ontem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top