none
Problemas ao passar parâmetros via Form RRS feed

  • Pergunta

  • Pessoal,

     

    Estou com um enorme problema aqui, eu fiz uma página na qual o usuário vai escolher o parâmetros (empresa, cliente, tipodocumento, data inicial e final) até ai tudo bem. Não coloquei os parâmetros como hidden para pode ver oque eu estava enviando, até ai tudo bem, porém se eu escolho mais de um cliente, ou mais de uma empresa, ou mais de um tipodocumento o relatório não sai. (ps.: Deixei os parametros como multi-valeu no meu relatório)

     

    Para passar mais de um parametro, eu fiz um for que varre um componente parecido com o que aceita multi-value no reporting service e monto uma string com os parâmetros, já tentei passar os parametros seguidos de aspa e virgula (ex:'01','02'), mas não deu certo, retirei as aspas e deixei só as virgulas (ex:01,02) e não deu certo ainda.

     

    Não sei mais oque tentar.

     

    Alguém pode me ajudar?

    segunda-feira, 4 de agosto de 2008 14:51

Respostas

  • Pessoal,

     

    Resolvi o problema. Bom, foi bem simples, como eu estava fazendo acima, o reporting service estava recebendo apenas uma "string gigante" que correspondia aos meus parametros e por conseguinte não conseguia tratar, porém quando eu passei um ARRAY, ele consegui se entender lá com o SQL e funcionou perfeitamente, a única coisa que fiz foi dar um SPLIT na hora de passar o parâmetro desejado. Fica ai a dica pra quem está passando pelo mesmo problema.

     

     

     

     

    quarta-feira, 6 de agosto de 2008 14:50

Todas as Respostas

  • Duan,

     

          Neste link vc encontra uma solução para este problema que eu ajudei a resolver aqui mesmo no fórum

           http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=3359023&SiteID=21

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    segunda-feira, 4 de agosto de 2008 15:30
  • Laércio, perdoe a minha ignorância, vi o link que vc me mandou mas não consigui enxegar uma solução para o meu problema, vou postar aqui o meu código para explicar melhor a minha situação.

     

    Code Snippet

    public partial class RelContasReceberEmAbertoClienteUI : System.Web.UI.Page

    {

    protected void Page_Load(object sender, EventArgs e)

    {

    if (!IsPostBack)

    {

    IList lstEmpresas = new EmpresaDAO().listar();

    foreach (Empresa oEmpresa in lstEmpresas)

    {

    ListItem oListItem = new ListItem(oEmpresa.razaosocial, oEmpresa.isn.ToString().PadLeft(2, '0'));

    oListItem.Attributes.Add("emp", oEmpresa.isn.ToString().PadLeft(2, '0'));

    lvpEmpresa.Items.Add(oListItem);

    }

    DataTable dtClientes = new ConsultaOutroBdDAO().obterClientes();

    foreach (DataRow dr in dtClientes.Rows)

    {

    ListItem oListItem = new ListItem(Convert.ToString(dr["NOMEUSUAL"]), Convert.ToString(dr["CTACONTABIL"]));

    oListItem.Attributes.Add("emp", Convert.ToString(dr["CODEMPR"]));

    lvpCliente.Items.Add(oListItem);

    }

    DataTable dtTipoDoc = new ConsultaOutroBdDAO().obterTiposDoc();

    foreach (DataRow dr in dtTipoDoc.Rows)

    {

    ListItem oListItem = new ListItem(Convert.ToString(dr["DESCRICAO"]), Convert.ToString(dr["TIPODOC"]));

    lvpTipoDoc.Items.Add(oListItem);

    }

    }

    }

    protected void btnVisualizar_Click(object sender, EventArgs e)

    {

    RepViewer.AsyncRendering = true;

    RepViewer.ServerReport.ReportServerUrl = new Uri(new AppSettingsReader().GetValue("ReportsURL", typeof(string)).ToString());

    RepViewer.ServerReport.ReportPath = "/rpts/RelContasReceber";

    RepViewer.ShowCredentialPrompts = false;

    RepViewer.ServerReport.ReportServerCredentials = new ReportServerAutenticacao();

    ReportParameter[] aRP = new ReportParameter[5];

    StringBuilder sbEmpresa = new StringBuilder();

    bool bPrimeiro = true;

    foreach (ListItem oItem in lvpEmpresa.Items)

    {

    if (oItem.Selected)

    {

    if (!bPrimeiro)

    {

    sbEmpresa.Append(",");

    }

    sbEmpresa.Append(oItem.Value);

    bPrimeiro = false;

    }

    }

    aRP[0] = new ReportParameter("emp", "'" + sbEmpresa.ToString() + "'");

    StringBuilder sbCliente = new StringBuilder();

    bPrimeiro = true;

    foreach (ListItem oItem in lvpCliente.Items)

    {

    if (oItem.Selected)

    {

    if (!bPrimeiro)

    {

    sbCliente.Append(",");

    }

    sbCliente.Append(oItem.Value);

    //sbCliente.Append(oItem.Value);

    bPrimeiro = false;

    }

    }

    aRP[1] = new ReportParameter("cli", "'" + sbCliente + "'");

    StringBuilder sbTipoDoc = new StringBuilder();

    bPrimeiro = true;

    foreach (ListItem oItem in lvpTipoDoc.Items)

    {

    if (oItem.Selected)

    {

    if (!bPrimeiro)

    {

    sbTipoDoc.Append(",");

    }

    sbTipoDoc.Append(oItem.Value);

    bPrimeiro = false;

    }

    }

    aRP[2] = new ReportParameter("tpd", "'" + sbTipoDoc + "'");

    aRP[3] = new ReportParameter("dt1", wdcDataInicial.Value.ToString());

    aRP[4] = new ReportParameter("dt2", wdcDataFinal.Value.ToString());

    RepViewer.ServerReport.SetParameters(aRP);

    RepViewer.ServerReport.Refresh();

    }

    }

     

     

    Pois bem, como você pode ver, eu não quero passar o Where inteiro dinâmicamente,a apenas os valores dos parâmetros.

     

    Repetindo, já tentei passar os parametros seguidos de aspa e virgula (ex:'01','02'), mas não deu certo, retirei as aspas e deixei só as virgulas (ex:01,02) .

     

     

    Grato pela ajuda,

     

    Duan Brito

    segunda-feira, 4 de agosto de 2008 17:52
  • Pessoal,

     

    Resolvi o problema. Bom, foi bem simples, como eu estava fazendo acima, o reporting service estava recebendo apenas uma "string gigante" que correspondia aos meus parametros e por conseguinte não conseguia tratar, porém quando eu passei um ARRAY, ele consegui se entender lá com o SQL e funcionou perfeitamente, a única coisa que fiz foi dar um SPLIT na hora de passar o parâmetro desejado. Fica ai a dica pra quem está passando pelo mesmo problema.

     

     

     

     

    quarta-feira, 6 de agosto de 2008 14:50