none
Sumar un campo por rango de fechas C# RRS feed

  • Pregunta

  • 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

    jueves, 20 de diciembre de 2018 13:35

Respuestas