Inquiridor
Ajuda de pessoas experientes em C#

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
- Movido C. Augusto Proiete [MVP] segunda-feira, 6 de agosto de 2012 12:05 Movido para o forum mais apropriado (De:C#)