none
Ajuda de pessoas experientes em C# RRS feed

  • Pergunta

  •    Boas, Galera..  estou com uma dificuldade que talvez seja apenas uma bobeira, mas que para mim que sou iniciante está sendo uma tortura e grande dor de cabeça.

      Pois bem, estou construindo um reportviewer, e para um dos cálculos eu preciso do parâmetro que tenha o primeiro dia do mês até o ultimo dia do mesmo mês. Eu encontrei uma rotina que faz isso, ela conta o número de dias de acordo com a data inicial / Final e me passar o número INT, por exemplo:

    O cliente selecionou a data inicial o dia 1 e a data final o  dia 20 (01/05/2012 ~~ 20/05/2012), ela vai me retornar uma int com o total 20. Se o cliente selecionou como data inicial o dia  e a data final como dia 31, então ele vai me retornar  uma int com o valor 31... Simplesmente faz contagem de dias.

    O problema: Eu tenho que setar esse parâmetro e enviá-lo ao meu reportviewer. O problema é que a minha string não tá recebendo o valor gerado pela minha rotina. Será que alguém poderia me dar uma ideia do meu erro? (E se possível explicar qual é  o erro para eu aprender, rs)...

     public partial class reports_Relatorio_Mes_totDefault : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
        int dia = Convert.ToInt32(DateTime.Today.ToString("dd")
        int mes = Convert.ToInt32(DateTime.Today.ToString("MM"));
        int ano = Convert.ToInt32(DateTime.Today.ToString("yyyy"));
        int Semana = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
    	
        string dtInicial = Request.QueryString["dtInicial"];
        string dtFinal = Request.QueryString["dtFinal"];
        string strIdShopping;
        string diaInicial = Request.QueryString["dtInicial"];
        string diaFinal = Request.QueryString["dtFinal"];
        string mesInicial = Request.QueryString["dtInicial"];
        string mesFinal = Request.QueryString["dtFinal"];
        string anoInicial = Request.QueryString["dtInicial"];
        string anoFinal = Request.QueryString["dtFinal"];
        string mes = Request.QueryString["QtdDias"];
        string strIdLoja;
        string GetTotal; 
    	 
        string strSQL = "SELECT @@language, @@langid as id";
        DataTable dt = new DataTable();
        ControlShopCS.DB d = new DB();
        d.ExecuteQuery(strSQL, ref dt);
        d = null;
    
        DataRow dr = dt.Rows[0];
    
        if (dr["id"].ToString() == "0")
        {
            dtInicial = dtInicial.Substring(6, 4) + "/" + dtInicial.Substring(3, 2) + "/" + dtInicial.Substring(0, 2);
            dtFinal = dtFinal.Substring(6, 4) + "/" + dtFinal.Substring(3, 2) + "/" + dtFinal.Substring(0, 2);
        }
        else
        {
            dtInicial = dtInicial.Substring(0, 2) + "/" + dtInicial.Substring(3, 2) + "/" + dtInicial.Substring(6, 4);
            dtFinal = dtFinal.Substring(0, 2) + "/" + dtFinal.Substring(3, 2) + "/" + dtFinal.Substring(6, 4);
        }
    
        strIdShopping = Session["Shop_Select"].ToString();
        strIdLoja = Request["id_loja"];
        int idLoja;
        if (strIdLoja != string.Empty)
        {
            idLoja = Convert.ToInt32(strIdLoja);
        }
        else
        {
            idLoja = 0;
        }
    
        Session["DataInicial"] = dtInicial;
        Session["DataFinal"] = dtFinal;
        Session["Loja"] = idLoja;
    
        strIdShopping = Session["Shop_Select"].ToString();
    
    	// Aqui eu seto o valor da rotina
    	VerificarSemana(Semana, ano, QtdLancamentos);
    	GetTotal = Request["QtdLancamentos"];
    	 
    	int GetQtdLan;
    	if ( GetTotal != string.Empity)
    	{
    	   GetQtdLan = Convert.Parse(GetSemana);
        }
    	Session["QtdDias"] = GetQtdLan;
    	// Aqui eu seto o valor da rotina
    
    
       if (Request["dtInicial"] != "")
        {
        diaInicial = Request["dtInicial"].Substring(0, 2);
        diaFinal = Request["dtFinal"].Substring(0, 2);
        mesInicial = Request["dtInicial"].Substring(3, 2);
        mesFinal = Request["dtFinal"].Substring(3, 2);
        anoInicial = Request["dtInicial"].Substring(6, 4);
        anoFinal = Request["dtFinal"].Substring(6, 4);
        dtInicial = Request["dtInicial"].Substring(0, 2) + "/" + Request["dtInicial"].Substring(3, 2) + "/" + Request["dtInicial"].Substring(6, 4);
        dtFinal = Request["dtFinal"].Substring(0, 2) + "/" + Request["dtFinal"].Substring(3, 2) + "/" + Request["dtFinal"].Substring(6, 4);
        }
    
        ReportParameter[] reportParams = new ReportParameter[5];
        reportParams[0] = new ReportParameter("DataInicial", dtInicial);
        reportParams[1] = new ReportParameter("DataFinal", dtFinal);
        reportParams[2] = new ReportParameter("Shopping", strIdShopping);
        reportParams[3] = new ReportParameter("Loja", strIdLoja);
    	reportParams[4] = new ReportParameter("QtdDias", GetQtdLan);
    
    
        ReportViewer1.LocalReport.SetParameters(reportParams);
        ReportViewer1.ShowParameterPrompts = false;
        ReportViewer1.LocalReport.Refresh();
        }
    
    // Aqui começa a rotina que vai me trazer o número de dias... Acho que é onde é o início dos problemas... 
    
    protected void Page_Load(int semana, int ano, int QtdLancamentos)
    {
      {
         CultureInfo culture = new CultureInfo("pt-BR");
         DateTimeFormatInfo dtfi = culture.DateTimeFormat;
    
         int days = 0;
         int QtdDiasLimite = 4;
         int QtdLancamentos;
    
         string hoje = dtfi.GetDayName(DateTime.Today.DayOfWeek).ToString();
         if (hoje == "domingo" || hoje == "segunda-feira" || hoje == "terça-feira" || hoje == "quarta-feira")
         { days = (semana - 2) * 7; }
         else
         { days = (semana - 1) * 7; }
    
         DateTime PrimeiroDiaAno = new DateTime(ano, 1, 1);
         DateTime DataInicioSemana = PrimeiroDiaAno.AddDays(days);
         DateTime DataFinalSemana = DataInicioSemana.AddDays(6);
         DateTime DataLimite = DataFinalSemana.AddDays(QtdDiasLimite);
         DateTime PrimeiroDiaMes = Convert.ToDateTime("1/" + DataInicioSemana.ToString("M/yyyy"));
         DateTime UltimoDiaMes = PrimeiroDiaMes.AddMonths(1).AddDays(-1);
    
         DateTime DataFinal = UltimoDiaMes;
    
         int Mes_Anterior = Convert.ToInt32(DataInicioSemana.ToString("MM"));
         int Mes_Atual = Convert.ToInt32(DateTime.Today.ToString("MM"));
    
         if (Mes_Anterior < Mes_Atual)
         {
             days = (semana - 1) * 7;
             QtdDiasLimite = 2;
    
             DataLimite = DataFinal.AddDays(QtdDiasLimite);
    
             if (DateTime.Today > DataLimite)
             {
                 days = (semana - 2) * 7;
                 QtdDiasLimite = 4;
                 DataLimite = DataFinalSemana.AddDays(QtdDiasLimite);
    
                 DataFinal = DateTime.Today.AddDays(-Convert.ToInt32(DateTime.Today.ToString("dd")));
                 DataInicioSemana = Convert.ToDateTime("1/" + DateTime.Today.ToString("M/yyyy"));
                 DataFinalSemana = DataInicioSemana.AddDays(((Convert.ToInt32(DataFinalSemana.ToString("dd"))) - Convert.ToInt32(DataInicioSemana.ToString("dd"))));
             }
             else
             {
                 DataFinal = DateTime.Today.AddDays(-Convert.ToInt32(DateTime.Today.ToString("dd")));
                 DataInicioSemana = PrimeiroDiaAno.AddDays(days);
                 DataFinalSemana = DataInicioSemana.AddDays(((Convert.ToInt32(DataFinal.ToString("dd"))) - Convert.ToInt32(DataInicioSemana.ToString("dd"))));
             }
         }
         PrimeiroDiaMes = Convert.ToDateTime("1/" + DataInicioSemana.ToString("M/yyyy"));
         QtdLancamentos = ((Convert.ToInt32(DataFinalSemana.ToString("dd"))) - Convert.ToInt32(DataInicioSemana.ToString("dd")) + 1);
      }
    }

    Por favor, quem puder avaliar meu código e retornar o pq QTDLANCAMENTOS não tá setando valor, vai me ajudar MUITOOO!


    Assunto = dúvida

    domingo, 5 de agosto de 2012 17:15