Visual Basic - Filtro con operadores <= en un grid

Life is soft - evento anual de software empresarial
   
Vista:

Filtro con operadores <= en un grid

Publicado por DarkRusel (9 intervenciones) el 10/03/2009 19:16:46
Antes que nada Buenas Tardes:
Estoy trabajando en un pequeño proyecto donde mi motor de base de datos es access 2003. Mi Pregunta es la Siguiente:

Dentro de mi base de datos tengo la tabla "Repuestos" que contiene el campo "Stock". El campo stock es númerico entero. y lo que quiero lograr es que al buscar los datos de esta tabla se haga un filtrado. Voy a intentar explicar mejor.

En el proyecto tengo un MSHFlexGrid un textbox y un command button. La idea es que cuando escriba un número x en el textbox y precione el command Button Se realize un filtrado de los Datos del campo Stock en la tabla repuestos. El filtrado que quiero lograr es que me muestre todos los campos menores o iguales al número que ingrese en el textbox. (por ejemplo si ingreso el nº 30 me muestre todos los datos que posean en el campo stock los valores menores o iguales a 30). El código que eh utilzado es el siguiente:

Option Explicit
Dim Aux As Recordset
Dim sql As String

Private Sub Command1_Click()
Set Aux = New ADODB.Recordset
sql = "SELECT Repuestos.Cod_Repuesto, Repuestos.Repuesto, Repuestos.Descripcion, Repuestos.Precio_Venta, Repuestos.Stock " & _
"From Repuestos " & _
"WHERE (((Repuestos.Stock)<= '" & Text1.Text & "%'))"

Aux.Open sql, inicial.cn, adOpenDynamic, adLockOptimistic

DibujarGrilla
End Sub

Private Sub DibujarGrilla()
Set MSHFlexGrid1.DataSource = Aux
With MSHFlexGrid1
.ColWidth(0) = 300
.ColWidth(1) = 500
.ColWidth(2) = 2500
.ColWidth(3) = 700
.ColWidth(4) = 2500
.ColWidth(5) = 600

End With
End Sub

Private Sub MSHFlexGrid1_Click()
If Me.MSHFlexGrid1.CellForeColor = &H800000 Then
Call PintarFila(&H80000008, False) 'LetraNegro
Me.MSHFlexGrid1.TextMatrix(Me.MSHFlexGrid1.Row, 0) = ""
Else

Call PintarFila(&H800000, True) 'LetraAzul
Me.MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) = "->"
End If
End Sub

Sub PintarFila(color As Variant, SiNo As Boolean)
Dim i As Integer

For i = 0 To Me.MSHFlexGrid1.Cols - 1
Me.MSHFlexGrid1.Col = i
Me.MSHFlexGrid1.CellForeColor = color
Me.MSHFlexGrid1.CellFontBold = SiNo
Next
End Sub


El problema es que cuando aprieto el command Button obtengo el siguiente error:

"No coinciden los tipos de datos en la expresión de criterios". Ahora bien si cambio el tipo de dato en la base de datos al campo Stock. (lo cambio de numérico a Texto). la busqueda se realiza. pero el filtrado que realiza es incorrecto (muestra valores que no son. por ejemplo si pongo el nº 30 me muestra entre los datos mostrados valos como 50 que son mayores a 30).

Si alguien pudiera ayudarme a corregir este error estaría muy agardecido.

Muchas gracias
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

RE:Filtro con operadores <= en un grid

Publicado por Pedro Luis (1 intervención) el 10/03/2009 22:19:28
Quita comillas y parentesis

"WHERE Repuestos.Stock<= " & Text1.Text
Los parentesis porque no hacen falta y las comollas porque el campo es numerico
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

RE:Filtro con operadores <= en un grid

Publicado por DarkRusel (9 intervenciones) el 11/03/2009 17:13:06
El Código funciona perfectamente. Muchisimas gracias
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