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