Edito: encontre la solucion, en parte el problema venia de otro parte, el numero de semanas, era 1, por lo que solo me mostraba 1 semana en la grafica pero ya lo solucione asignando a la variable nosemanas, el numero 53.
Aqui el codigo de todo el boton
Código:
protected DataTable Semana(DataTable tabla, int año)
{
DataRow Row1; //Se crea un renglon de datos que servira para manejar los registros de la tabla
int noregistros = tabla.Rows.Count; //se cuenta el numero de registros
DateTime[] fecha = new DateTime[noregistros]; //se crean los arreglos para las fechas y cantidades de forma que puedan manejar mas libremente
double[] cantidad = new double[noregistros];
for (int i = 0; i < noregistros; i++)
{
Row1 = tabla.Rows[i]; //empieza a tomar los registros de la tabla del primero(0) hasta el ultimo (noregistros-1)
fecha[i] = (DateTime)Row1[6]; //toma la fecha del registro correspondiente convertida en datetime para poder ser comparada como una fecha
cantidad[i] = Convert.ToDouble(Row1[7]); //toma la cantidad del registro correspondiente convertida en numero de doble precision
}
DateTime v1 = new DateTime(año, 01, 01); //se crea un dato datetime con la fecha del primer dia del año especificado para obtener el numero de semanas de ese año
int nosemanas = 53;//System.Globalization.CultureInfo.CurrentUICulture.Calendar.GetWeekOfYear(v1, System.Globalization.CalendarWeekRule.FirstFullWeek, v1.DayOfWeek); //Esta instruccion toma el datetime antes mencionado y checa si
DateTime[] semanas = new DateTime[nosemanas];
double[] cantidades = new double[nosemanas];
DateTime esdomingo = new DateTime(año,01,01);//"01/01/" + año.ToString());
DateTime respaldo= new DateTime();
respaldo=esdomingo;
int cont=1;
while ("domingo" != respaldo.ToString("ddddd"))
respaldo = esdomingo.AddDays(cont++);
cont=1;
for (int i = 0; i < nosemanas; i++)
{
while("domingo" != respaldo.ToString("ddddd"))
respaldo=respaldo.AddDays(cont++);
semanas[i] = respaldo;//AQUI FALTA ENCONTRAR COMO OBTENER EL DIA DEL FIN DE SEMANA DE CADA SEMANA(DOMINGO)
cantidades[i] = 0;
respaldo = respaldo.AddDays(7);
}
DataTable table1 = new DataTable("Tabla"); //se crea una tabla donde se guardaran los dias y la cantidad de IA para cada dia, la cual sera utilizada para generar la grafica
table1.Clear(); //se limpia la tabla en caso de que tenga informacion
table1.Columns.Add("semanas"); //se agrega una columna donde iran las fechas
table1.Columns.Add("cantidades", typeof(float));
string[] ssemana = new string[nosemanas];
for (int i = 1; i <= nosemanas; i++)
ssemana[i - 1] = "Semana " + i.ToString();
DateTime ddomingo= new DateTime();
for (int i = 0; i < nosemanas; i++)
{
ddomingo = semanas[i].AddDays(-7);
for (int j = 0; j < noregistros; j++)
{
if (fecha[j] > ddomingo && fecha[j] <= semanas[i]) //aqui empieza a comparar fechas, si son iguales suma las cantidades de IA que contengan
cantidades[i] += cantidad[j]; //de esta forma solo quedaran fechas unicas desde el 01/01/año al 31/12/año con la
}
}
for (int i = 0; i < nosemanas; i++)
{
DataRow row = table1.NewRow(); //se crea un nuevo renglon de datos para almacenar de 1 por 1 registro
row[0] = ssemana[i]; //guardando la fecha (dia) en tipo cadena
row[1] = cantidades[i]; //la cantidad de IA correspondiente a esa fecha (dia)
table1.Rows.Add(row); //e irlos guardando en la tabla que finalmente sera la que genere la grafica
}
return table1; //se retorna la tabla para poder ser utilizada en el metodo que genera la grafica
}
Falta comentarlo bien y acomodar el codigo para buscar reducirlo o mejorar la logica de programacion, mañana empiezo a ver eso y tambien me pongo a hacer lo otro que les mencione para ya casi tener la parte principal del proyecto.