none
Report Viewer com Cross Table não carrega todos os campos RRS feed

  • Pergunta

  • Bom dia

    Estou com um problema há alguns dias e estou pesquisando na internet mas está difícil para encontrar o erro, também não tenho muito conhecimento com relatórios e preciso de ajuda.

    Tenho um form que precisa de data inicial e final como parâmetros obrigatórios e outros 3 que não são obrigatórios e são passados para uma procedure no sql server. A procedure executa corretamente.

    Preciso usar uma cross table para mostrar os meses de cada item. No relatório optei pela opção de criar uma matriz.

    Fiz essa aplicação em 3 camadas no windows form. Na minha camada de apresentação ao clicar no botão para gerar o report viewer está passando um bindingsource com o resultado da minha procedure para o report viewer.

    O report viewer carrega apenas os campos de valor e os meses os outros campos não carrega.

    Debuguei a aplicação e não apresenta erro, ao passar pelo binding source mostra as informações corretas.

    Já tentei passar o data set e o data table como parâmetro para o relatório e acontece o mesmo, não mostra as informações.

    Minha classe do report viewer

     public partial class VisualizaRPT : Form
        {

            private DateTime ini_strParam;
            private DateTime fim_strParam;
            private string dep_intParam = string.Empty;
            private string grupo_strParam = string.Empty;
            private string subgrupo_strParam = string.Empty;
            private string item_strParam = string.Empty;


            public VisualizaRPT(DateTime dtini, DateTime dtfim, string dep, string grupo, string subgrupo, string item)
           
            {
                InitializeComponent();

                ini_strParam = dtini;
                fim_strParam = dtfim;
                dep_intParam = dep;
                grupo_strParam = grupo;
                subgrupo_strParam = subgrupo;
                item_strParam = item;
            }

            public void VisualizaRPT_Load(object sender, EventArgs e)
            {
                PRMV_BLL.Parametros pr = new PRMV_BLL.Parametros();
                parametrosBindingSource.DataSource = pr.BuscaInformacao(ini_strParam, fim_strParam, dep_intParam, grupo_strParam, subgrupo_strParam, item_strParam);

                ReportDataSource rpt = new ReportDataSource("rpt", parametrosBindingSource);
                this.reportViewer1.LocalReport.DataSources.Add(rpt);
                
                this.reportViewer1.RefreshReport();
               

            }

    Minha classe de regras de negócios

     public DataTable BuscaInformacao(DateTime DTINIC, DateTime DTFINAL, string CODDEP, string CODGRUPO, string CODSUBGRUPO, string CODITEM)       
            {
           
                DataTable dt = new DataTable();           
                
                PRMV_DAL.PRMV_DAL acc = new PRMV_DAL.PRMV_DAL();

                try
                {
                    acc.con.Open();              
                    SqlCommand cmd = new SqlCommand("RPRMV_H001_SEMPTBL", acc.con);
                    
                    cmd.CommandType = CommandType.StoredProcedure;                

                    cmd.Parameters.AddWithValue("@DTINIC", DTINIC);
                    cmd.Parameters.AddWithValue("@DTFINAL", DTFINAL);
                    cmd.Parameters.AddWithValue("@CD_DEPOSITO", CODDEP);
                    cmd.Parameters.AddWithValue("@CD_GRUPO", CODGRUPO);
                    cmd.Parameters.AddWithValue("@CD_SUBGRUPO", CODSUBGRUPO);
                    cmd.Parameters.AddWithValue("@CD_ITEM", CODITEM);

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                    return dt;
                }

                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    acc.con.Close();
                    acc.con.Dispose();                
                }


            }

    Minha classe de apresentação

    private void btnExportar_Click(object sender, EventArgs e)
            {
                if ((ValidaDataInicial() == true) && (ValidaDataFinal() == true))
                {
                    try
                    {
                        Parametros pr = new Parametros();


                        pr.DTINIC = DateTime.Parse(maskdtinicial.Text);
                        pr.DTFINAL = DateTime.Parse(maskdtfinal.Text);
                        pr.CODDEP = Convert.ToString(lblmostradep.Text);
                        pr.CODITEM = Convert.ToString(lblmostraitem.Text);

                        //Separar o grupo e o subgrupo do caracter Hifen (-) e passar para procedure caso o grupo seja selecionado;
                        if (!String.IsNullOrEmpty(lblmostragrupo.Text))
                        {
                            string grupo = lblmostragrupo.Text;
                            string subgrupo = lblmostragrupo.Text;
                            string[] delimitg = grupo.Split(new char[] { '-', ',' }, StringSplitOptions.RemoveEmptyEntries);

                            for (int i = 0; i < delimitg.Length; i += 2)
                            {
                                pr.CODGRUPO = pr.CODGRUPO + ',' + delimitg[i].ToString();
                            }

                            //Separar o subgrupo do caracter Virgula (,);
                            for (int j = 1; j < delimitg.Length; j += 2)
                            {
                                pr.CODSUBGRUPO = pr.CODSUBGRUPO + ',' + delimitg[j].ToString();
                            }

                            //Retira a vírgula do inicio do codgrupo e subgrupo
                            if (lblmostragrupo.Text != "")
                            {
                                if (pr.CODGRUPO.Length > 1)
                                {
                                    pr.CODGRUPO = pr.CODGRUPO.Substring(1);
                                }

                                if (pr.CODSUBGRUPO.Length > 1)
                                {
                                    pr.CODSUBGRUPO = pr.CODSUBGRUPO.Substring(1);
                                }
                            }
                        }
                        else
                        {
                            pr.CODGRUPO = lblmostragrupo.Text;
                            pr.CODSUBGRUPO = lblmostragrupo.Text;
                        }


                        VisualizaRPT fr = new VisualizaRPT(pr.DTINIC, pr.DTFINAL, pr.CODDEP, pr.CODGRUPO, pr.CODSUBGRUPO, pr.CODITEM);
                        fr.Show();

                    }
                    catch (Exception ex)
                    {

                        MessageBox.Show("Erro ao gerar os registros." + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        LimparTela();
                        maskdtinicial.Focus();

                    }
                }

            }

    Agradeço se alguém puder me ajudar.

    Obrigada.

    Adriana L.S.Martinelli

    terça-feira, 8 de outubro de 2013 12:33