Principales respuestas
Filtrar entre 2 fechas con MonthCalendar

Pregunta
-
Respuestas
-
Hola,
en el artículo que te pase te dice como hacer la consulta.
Para poder consultar por varios filtros te recomiendo el uso de los parámetros opcionales. En tu caso la consulta sería
select DATE_FORMAT(a.fecha, '%Y/%m/%d') as FECHA,a.hora, a.num_albaran, e.razon_social_empresa, c.razon_social, a.matricula, p.nombre, a.bruto, a.tara, a.neto from albaranes a, clientes c, empresas e, productos p where a.id_cliente=c.id_clientes and a.id_empresa=e.id_empresa and a.id_producto= p.id_producto and c.razon_social and ((@nombre is null) or (p.nombre = @nombre)) and ((@razon_social_empresa is null) or e.razon_social_mpresa = @razon_social_empresa)) and ((@fecha_inicio is null) or (a.fecha > @fecha_inicio)) and ((@fecha_fin is null) or (a.fecha < @fecha_fin))
como ves, si usas un null como parametros no se tiene en cuenta en la consulta porque devuelve true, en caso que tenga valor, la primera condiciones es falsa por lo que se evalua la segunda condición.
Y luego a la hora de rellenar los parámetros
If txtnombre.Text <> "" Then sqlCmd.Parameters.AddWithValue("@nombre", txtCateroria.Text); Else sqlCmd.Parameters.AddWithValue("@nombre", DbNull.Value); End If ' Idem para el resto de parametros
- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09
-
He omitido, porque en el artículo tienes como hacer, hacer uso de parámetros en la consulta en vez de concatenar strings. Básicamente en tu caso sería
Dim dt as DataTable Using conn as SqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString())) conn.Open(); Dim sql as string= "TU_CONSULTA"; Dim cmd as SqlCommand = new SqlCommand(sql, conn) If txtnombre.Text <> "" Then sqlCmd.Parameters.AddWithValue("@nombre", txtCateroria.Text); Else sqlCmd.Parameters.AddWithValue("@nombre", DbNull.Value); End If ' Idem para el resto de parámetros SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); DataGridView1.DataSource = dt End Using
- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09
-
Y para lo mi lo mas chungo es poder filtrar según que tengas selecionado para filtrar... ya que puedes poder fintrar por todos, por 2, por un campo.... de lo que acabo de poner arriba
como esto
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09
Todas las respuestas
-
Hola,
en el monthcalendar tienes dos propiedades, una llamada SelectionStart y otra llamada SelectionEnd, con estás propiedades podrás consultar la base de datos entre un rango de fechas. Te recomiendo este artículo para que veas como podrías hacerlo
[ADO.NET] Filtrar rango de fechas
Si saber como consultas la base de datos poca ayudas más te puedo dar...
-
Gracias de nuevo sergio,
asi es como cargo el grid
INICIO.llenargrid("select DATE_FORMAT(a.fecha, '%Y/%m/%d') as FECHA,a.hora, a.num_albaran, e.razon_social_empresa, c.razon_social, a.matricula, p.nombre, a.bruto, a.tara, a.neto from albaranes a, clientes c, empresas e, productos p where a.id_cliente=c.id_clientes and a.id_empresa=e.id_empresa and a.id_producto= p.id_producto and c.razon_social, DataGridView1)
Sobre esta consulta tengo que poder filtrar por c.razon social (hecho)
Por p.nombre (hecho)
Por e.razon_social_empresa (hecho)
Me queda filtar por fecha
Y para lo mi lo mas chungo es poder filtrar según que tengas selecionado para filtrar... ya que puedes poder fintrar por todos, por 2, por un campo.... de lo que acabo de poner arriba.
Ej: filtrar por nombre y fecha
empresa y producto
producto y fecha...
-
Hola,
en el artículo que te pase te dice como hacer la consulta.
Para poder consultar por varios filtros te recomiendo el uso de los parámetros opcionales. En tu caso la consulta sería
select DATE_FORMAT(a.fecha, '%Y/%m/%d') as FECHA,a.hora, a.num_albaran, e.razon_social_empresa, c.razon_social, a.matricula, p.nombre, a.bruto, a.tara, a.neto from albaranes a, clientes c, empresas e, productos p where a.id_cliente=c.id_clientes and a.id_empresa=e.id_empresa and a.id_producto= p.id_producto and c.razon_social and ((@nombre is null) or (p.nombre = @nombre)) and ((@razon_social_empresa is null) or e.razon_social_mpresa = @razon_social_empresa)) and ((@fecha_inicio is null) or (a.fecha > @fecha_inicio)) and ((@fecha_fin is null) or (a.fecha < @fecha_fin))
como ves, si usas un null como parametros no se tiene en cuenta en la consulta porque devuelve true, en caso que tenga valor, la primera condiciones es falsa por lo que se evalua la segunda condición.
Y luego a la hora de rellenar los parámetros
If txtnombre.Text <> "" Then sqlCmd.Parameters.AddWithValue("@nombre", txtCateroria.Text); Else sqlCmd.Parameters.AddWithValue("@nombre", DbNull.Value); End If ' Idem para el resto de parametros
- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09
-
He omitido, porque en el artículo tienes como hacer, hacer uso de parámetros en la consulta en vez de concatenar strings. Básicamente en tu caso sería
Dim dt as DataTable Using conn as SqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString())) conn.Open(); Dim sql as string= "TU_CONSULTA"; Dim cmd as SqlCommand = new SqlCommand(sql, conn) If txtnombre.Text <> "" Then sqlCmd.Parameters.AddWithValue("@nombre", txtCateroria.Text); Else sqlCmd.Parameters.AddWithValue("@nombre", DbNull.Value); End If ' Idem para el resto de parámetros SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); DataGridView1.DataSource = dt End Using
- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09
-
Y para lo mi lo mas chungo es poder filtrar según que tengas selecionado para filtrar... ya que puedes poder fintrar por todos, por 2, por un campo.... de lo que acabo de poner arriba
como esto
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Eder CostaModerator jueves, 17 de mayo de 2012 15:09