Ayuda con filtro

Te molesto con otras dos preguntas:

Necesito hacer un filtro, yo uso este comando:

If Combo1.ListIndex = 0 Then
Data2.RecordSource = ( Select * FROM STOCK00 WHERE ID le '* & Text1.Text & *' )
End If

1. Una forma para que no búsquelo que NO dice el text (lo que pretendo es que busque todos los productos cuyo stock sea distinto a 0

2. Una forma de que el código filtre específicamente la tabla que esta en el data (de forma provisional use selectcase pero son 53 cases con 5 sentencias de if en cada una, funciona pero es demasiado código)

1 Respuesta

Respuesta
1

Ok bueno si el Combo tiene la propiedad Style En 2 entonces

Agregale como especie de una casilla en blanco para luego hacer esto

If Combo.ListIndex = 0 then

''lo detienes

Exit sub

''de lo contrario

else

'''Sentencia SQl

Data2.RecordSource = ( Select * FROM STOCK00 WHERE ID le '* & Text1.Text & *' )

end if

Y a tu segunda pregunta vamos a especificar mejor lo que desea hacer porque no la entiendo muy bien

Mañana pruebo el código que me diste que ahora no estoy en la pc del trabajo

La segunda pregunta:

Es largo para pegar el código, así que pongo un un ejemplo

'En el general

Dim X as Integer

Private Sub Combo2_Change()

X = Combo2.ListIndex

Call FILTRO

Perdon, me mando el mensaje sin completar por accidente

el codigo es asi

'En el general
Dim X as Integer


Private Sub Combo2_Change()
X = Combo2.ListIndex
Call FILTRO

Data2.refresh

MSFlexGrid1.refresh

End Sub

Private Sub FILTRO()

Select Case X

Case 0

If Combo1.ListIndex = 0 then

Data2.RecordSource = ( Select * FROM STOCK00 WHERE ID like '* & Text1.Text & *' )

End If

If Combo1.ListIndex = 1 then
Data2.RecordSource = ( Select * FROM STOCK00 WHERE Product like '* & Text1.Text & *' )
End If

Case 1

If Combo1.ListIndex = 0 then
Data2.RecordSource = ( Select * FROM STOCK01 WHERE ID like '* & Text1.Text & *' )
End If
If Combo1.ListIndex = 1 then
Data2.RecordSource = ( Select * FROM STOCK01 WHERE Producto like '* & Text1.Text & *' )
End If

End Select

End Sub

En el codigo "STOCK00" y "STOCK01" son la tabla que se filtra, y el "ID" o "Producto" son el campo en que busca el texto, pero como son 5 campos, me produce 265 sentencias if repartidas en 53 cases

Lo que quiero es que en lugar de tener que especificar en el codigo la tabla que va a filtrar, use por defecto la tabla que esta activa en el data que uso para llenar el MSFlexGrid

Bueno Yo que Tu No Usuario Tantos if Con Uno Solo Basta Me Explico Dentro De Un case Solo Colocas Esto

If Combo1.ListIndex = 0 then
Data2.RecordSource = ( Select * FROM STOCK00 WHERE ID like '* & Text1.Text & *' )

ElseIf Combo1.ListIndex = 1 then
Data2.RecordSource = ( Select * FROM STOCK00 WHERE Product like '* & Text1.Text & *' )
End If


Esto Te Puede Disminuir Un Poco Mas El Código y se puede Entender Mucho mas Lo Que Tratas de hacer

En otro Caso si lo que nesecitas es cargar un producto insertando varios campos en visual y que te devuele lo parecido de los datos del producto

Te recomiendo Usar La Funcion AND en la sentencia SQl

Me Explico

Select * From productos Where Campo Like '%"& Objeto &"%' AND Campo Like '%"& Objeto &"%' AND Campo '%"& Objeto &"%'

Con esta sentencia te devolvera el registro donde los datos sean parecidos a lo que introduciste en los objetos

Esto te cortara el codigo de 200 lineas a 5 Creeme Muy sencillo

Si no es lo que buscas pido Aclarar mas la duda

Ese código para buscar de varios campos a la vez también te lo iba a pedir así que me viene perfecto, pero no es lo que pido

Lo que necesito es que en la parte del código donde determino el recordsource, una forma de determinar la tabla (STOCK00, STOCK01, STOCK03, STOCK04 [...] STOCK52) desde algo como un textbox o desde un data para ahorrarme los 53 cases

Y no, la primer pregunta tampoco era eso:

La idea es que la tabla solo muestre los productos que tienen stock, es decir que el filtro busque todos los recordset cuyo campo "Stock" sea distinto a "0"

Prueba a ver si te sirve algo así como esto

Select * From tabla Where Campo > '0'

Muy sencillo a mi me sirve y me devuelve todos los campos que son mayores de 0

Perdón sin las comillas ok seria

Select * From tabla Where Campo > 0

Ya que estamos con el operador ok

Esto funcionaria si tu campo es numero o moneda ya que estas trabajando con access si no me equivoco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas