Eu tenho um relatório com um parâmetro que geralmente obtém seus valores padrão executando uma consulta que recebe outro parâmetro como entrada. Isso funciona bem quando o relatório é executado interativamente.
No entanto, tenho um requisito para chamar este relatório do código onde todos os filtros são fornecidos pelo código. O código que tenho para os outros parâmetros funciona bem:
string report = "Analysis/Report.aspx?ReportPath=/MyReport";
string fullReportPath = string.Format("{0}&LocationId={1}&BatchNumber={2}&SearchReference={3}", report, locationId, batchNumber, reference);
RunReport(fullReportPath);
Há uma lista suspensa onde os valores disponíveis e os valores padrão são recuperados do banco de dados por meio de uma consulta que tem locationId
como parâmetro. Isso é para que todos os valores sejam selecionados por padrão.
O que preciso mudar no relatório e/ou no código para que funcione como agora e eu possa fornecer os valores selecionados para esta lista suspensa como parâmetro?
Encontrei esta postagem de blog que usa o conceito de parâmetros de controle internos ou ocultos para usar ao definir os valores de outros parâmetros, mas o exemplo dado apenas define o outro parâmetro como um valor padrão ou o deixa em branco. Eu preciso que o parâmetro execute a consulta atual.
Parece que o SQL Reports realmente faz o que eu quero automaticamente, mas somente se o parâmetro com a consulta dependente seguir imediatamente a primeira consulta .
Estávamos modificando o relatório por outros motivos e movemos o menu suspenso incorreto para cima na lista de parâmetros para que fosse o segundo (após a consulta que preenchia o menu suspenso de localização). Feito isso, o menu suspenso foi preenchido automaticamente.
A postagem do blog que vinculei na pergunta menciona que a ordem dos parâmetros é importante e há uma postagem separada sobre isso do mesmo autor.