[ Foro de C# ]

Sumar campos por rango de fechas C#

20-Dec-2018 14:39
Invitado (LourdesUrban)
1 Respuestas

Hola!

Tengo un programa WindowsForm en Visual studio el cual se conecta a una base de datos SQL Server.

En una de las tablas "Pedido" se guarda toda la información de un pedido con la Fecha (DateTime) y Ganancia (Money), al igual que su clase en VisalStudio

Necesito que calcula el total de las ganancia según dos datepicker de un form (fecha desde y fecha hasta) que hagan referencia a la fecha del pedido. Para esto realizo lo siguiente????

Procedimiento almacenado en base de datos SQL


ALTER PRODECURE [Ganancias_Reporte]

@Fecha1 Datetime,

@Fecha2 Datetime

as

select sum(Ganancia) as Ganancias from Pedidos

where Fecha between @Fecha1 and @Fecha2



Luego realizo la conexión del programa a sp en la clase SQL que utiliza SqlClient


public DataTable Reporte_Ganancias(DateTime Fecha1, DateTime Fecha2)
{
string sql = "Ganancias_Reportes";
SqlConnection cn = new SqlConnection(connect);
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Fecha1", Fecha1);
cmd.Parameters.AddWithValue("@Fecha2", Fecha2);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
cn.Open();
da.Fill(dt);
cn.Close();
return dt;
}



Luego hago el llamado del StoredProcedure desde el Form para que muestre en pantalla en valor del DataTable:


private void btnCalcular_Click(object sender, EventArgs e)
{
DataTable dt = sql.Reporte_Ganancias(DateTime.Parse(dtpFechaDesde.Text), DateTime.Parse(dtpFechaHasta.Text));
MessageBox.Show("Ganancias = " + dt.ToString());
}


El valor que me devuelve es nulo. Haciendo el debug las fechas las asigna correctamente pero el dt lo retorna null.

Realizo la query en la base de datos reemplazando las variables por las fechas indicadas


select sum(Ganancia) from Pedidos
where Fecha between '13/12/2018 0:00:00' and '13/12/2018 0:00:00'


y me devuelve un valor de 2940

También probé asignando las variables como varhcar en el sp y como string en el programa para que pase las fechas con formato texto y tambien devuelve nulo.

¿Qué puedo hacer? Necesito ayuda


05-Jan-2019 11:46
Nacho Cabanes (+83)

No uso SQL Server, pero estas pidiendo el ToString de una tabla y no tengo claro que sea eso lo que necesitas:

https://docs.microsoft.com/es-es/dotnet/api/system.data.datatable.tostring?view=netframework-4.7.2

Me parece más esperable que debas obtener una fila y extraer un campo de ella.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)