Saludos Cordiales,
Actualmente estoy desarrollando una aplicacion donde traigo unos datos de la base de datos y le realizo unos cambios y genero nuevos datos a partir de calculos que le realizo a estos campos.
Para ser mas especifico traigo de la base de datos dos campos que estipulan un rango de fecha, mediante unos sortilegios programaticos logre establecer cuantos días eran validos para cada mes entre los rangos de fechas es decir:
Fecha Inicio:10/10/2004
Fecha Fin: 20/12/2004
El resultado seria de octubre 22 (cuento el día de inicio) de noviembre 30 y de Diciembre 20.
Esto lo logro con varios bucles. Para obtener los resultados los coloco en un arraylist el cual es unidimensional.
pero el problema es que estos datos calculados necesito mostrarlos en un datagrid segun el registro correspondiente se me ha ocurrido que seria bueno un Array Multidimensional pero no se utilizarlo bien y tampoco se como cargarlo en el Datagrid segun el registro al que corresponda.
Aqui esta el codigo desde que me conecto y traigo los datos hasta cuando genero las fechas calculadas.
public void Sumar()
{
OleDbCommand myCommand = new OleDbCommand("Par_Client_Category",myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.CommandText = "[Par_Client_Category]";
OleDbParameter objParam = new OleDbParameter();
objParam = myCommand.Parameters.Add("clientName",OleDbType.Char);
objParam.Direction= ParameterDirection.Input;
objParam.Value = Client.SelectedItem.Value;
objParam = myCommand.Parameters.Add("cadName",OleDbType.Char);
objParam.Direction= ParameterDirection.Input;
objParam.Value = DropCate.SelectedItem.Value;
OleDbDataAdapter cmd = new OleDbDataAdapter(myCommand);
DataTable dt = new DataTable();
cmd.Fill(dt);
ArrayList a_dias = new ArrayList();
for(int i = 0; i<dt.Rows.Count; i++)
{
string rangoIni = dt.Rows
["rangeInitDate"].ToString();
string rangoEnd = dt.Rows["rangeEndDate"].ToString();
DateTime fechaComienzo = DateTime.Parse(rangoIni);
DateTime fechaTermina = DateTime.Parse(rangoEnd);
string comienzaAñoMes = fechaComienzo.ToString("yyyyMM");
string terminaAñoMes = fechaTermina.ToString("yyyyMM");
DateTime Valor01 = fechaComienzo;
if ((fechaComienzo.Month.CompareTo(fechaTermina.Month)== 0) && (fechaComienzo.Year.CompareTo(fechaTermina.Year)== 0))
{
TimeSpan DiferenciaDías =(fechaTermina.Subtract(fechaComienzo));
int Dif_Días = DiferenciaDías.Days;
Dif_Días++;
Response.Write( fechaComienzo.Month + "/" + Dif_Días);
a_dias.Add(Dif_Días);
}
else
{
while ( (fechaComienzo.CompareTo(Valor01) <= 0))
{
DateTime Valor = fechaComienzo;
fechaComienzo = fechaComienzo.AddMonths(1);
DateTime fecha_proxima = new DateTime(fechaComienzo.Year, fechaComienzo.Month,1);
string num_dias = fecha_proxima.AddDays(-1).ToShortDateString();
DateTime num_dias1 = DateTime.Parse(num_dias);
TimeSpan DiferenciaDías = (num_dias1.Subtract(Valor));
int Dif_Días = DiferenciaDías.Days;
Dif_Días++;
Response.Write( Valor.Month + "/" + Dif_Días + " ");
a_dias.Add(Dif_Días);
comienzaAñoMes = fechaComienzo.ToString("yyyyMMdd");
}
while( (fechaComienzo.Month.CompareTo(fechaTermina.Month)< 0))
{
DateTime Valor = fechaComienzo;
fechaComienzo = fechaComienzo.AddMonths(1);
DateTime fecha_proxima = new DateTime(fechaComienzo.Year, fechaComienzo.Month,1);
string num_dias = fecha_proxima.AddDays(-1).ToShortDateString();
DateTime num_dias1 = DateTime.Parse(num_dias);
DateTime fecha_ini = new DateTime(Valor.Year, Valor.Month,1);
TimeSpan DiferenciaDías = (num_dias1.Subtract(fecha_ini));
int Dif_Días = DiferenciaDías.Days;
Dif_Días++;
Response.Write( Valor.Month + "/" + Dif_Días + " ");
a_dias.Add(Dif_Días);
comienzaAñoMes = fechaComienzo.ToString("yyyyMMdd");
}
/**/while((fechaComienzo.Month.CompareTo(fechaTermina.Month)== 0)&& (fechaComienzo.Year.CompareTo(fechaTermina.Year)== 0))
{
DateTime Valor = fechaComienzo;
fechaComienzo = fechaComienzo.AddMonths(1);
DateTime fecha_proxima = new DateTime(fechaComienzo.Year, fechaComienzo.Month,1);
string num_dias = fecha_proxima.AddDays(-1).ToShortDateString();
DateTime num_dias1 = DateTime.Parse(num_dias);
DateTime fecha_ini = new DateTime(Valor.Year, Valor.Month,1);
TimeSpan DiferenciaDías = (fechaTermina.Subtract(fecha_ini));
int Dif_Días = DiferenciaDías.Days;
Dif_Días++;
Response.Write( Valor.Month + "/" + Dif_Días + " ");
a_dias.Add(Dif_Días);
comienzaAñoMes = fechaComienzo.ToString("yyyyMMdd");
}
}
}
}
Agradezco cualquier sugerencia o informacion que me puedan suministrar.
Atentamente,
Darío Bello