Visual Basic.NET - La expresión contiene un operador "Between" no compatible

 
Vista:
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La expresión contiene un operador "Between" no compatible

Publicado por Miguel (281 intervenciones) el 06/09/2017 19:27:07
Tengo el siguiente código para filtrar datos de un tabla y me da un error indicado en el titulo. Les pongo el código haber si me pueden indicar lo que hago mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub filtrar()
    Try
        Dim vista As New DataView
        vista.Table = ds.Tables("Diario")
        Dim str As String = String.Empty
        str = "[Year(Fecha)]=" & CStr(vaño) & " And [Month(Fecha)] Between " & CStr(vmes) & " And " & CStr(vmes1) & ""
        vista.RowFilter = str
        Me.dgv.DataSource = vista
        Me.dgv.Update()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Advertencia", MessageBoxButtons.OK)
    End Try
End Sub

Si lo hago solo para el año se ejecuta bien pero para el mes falla.

Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 16
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La expresión contiene un operador 'Between' no compatible

Publicado por john (4 intervenciones) el 06/09/2017 19:40:37
Lo que haces mal es escribir un query directo desde la vista.

Elabora un stored procedure y consumelo desde el lado de la vista
es mas seguro, legible y te permite flexibilidad.




Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La expresión contiene un operador "Between" no compatible

Publicado por Miguel (281 intervenciones) el 10/09/2017 13:31:22
Gracias por tu atención. Hice esto por probar otras formas y ademas veo que cuando el DataGridWiew tiene muchos campos ahorra muchas lineas de código. Yo lo tengo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub cargaDatos()
    Try
        Open()
        consulta = "Select * From diario Where Year(Fecha) = " & CStr(vaño) & " And  Month(Fecha) Between " & CStr(vmes) & " And " & CStr(vmes1) & ""
        da = New OleDbDataAdapter(consulta, cn)
        ds = New DataSet
        da.Fill(ds, "Diario")
        dgv.DataSource = ds.Tables("Diario")
        Me.dgv.Update()
        formato()
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Information, ToString)
    End Try
End Sub

De todas formas me gustaría si te es posible me aclararas un poco la forma que dices tu y además los riesgos por falta de seguridad,

Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 26 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La expresión contiene un operador "Between" no compatible

Publicado por Ismael (1 intervención) el 06/09/2017 22:27:18
Hola,

Lo que dice John en parte tiene razón, respecto a tu error, has comprobado debugando y recogiendo la consulta entera antes de lanzarla?
Por otro lado, el filtrado de un datagrid no soporta el operador between, puedes hacer lo siguiente aunque no está recomendado, ya que lo suyo sería realizar este filtro en la select y no en memoria.


1
and [Month(Fecha)]>=" & CStr(vmes) & " and [Month(Fecha)]<=" & CStr(vmes1) & ""


Te paso el enlace: https://social.msdn.microsoft.com/Forums/es-ES/5f0348b2-582b-4219-ad9e-5a4fb02ff867/error-al-actualizar-contenido-de-un-griview?forum=netfxwebes

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La expresión contiene un operador "Between" no compatible

Publicado por Miguel (281 intervenciones) el 09/09/2017 22:44:46
Gracias por vuestro comentario. Lo tengo funcionando con una Select, pero quería probar esta forma pues en muchos casos ahorra lineas de código.

Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar