Visual Basic - Filtro SQL - LIKE

Life is soft - evento anual de software empresarial
 
Vista:

Filtro SQL - LIKE

Publicado por marce (21 intervenciones) el 17/05/2011 14:17:50
Hola gente....la verdad que llevo una semana con este tema y no puedo resolverlo..!

Estoy trabajando con VB 6, ADO enganchado a ACCESS.
Tengo una consulta SQL que funciona correctamente para buscar palabras completas o parciales.
Lo que necesito es que busque también 2 palabras que se ingresan en un textbox.
La sentencia es:

strsql3 = "SELECT * from Agregados WHERE Nombre Like '%" & Text1.Text & "% ' ORDER BY nombre;"

Por ej: Si escribo en text1 "Auto" me trae: "Auto Verde, Auto Violeta, Auto Rojo" y si escribo: "Auto V" el filtro no trae nada..!

Como busco 2 palabras con ese filtro? 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
sin imagen de perfil

Filtro SQL - LIKE

Publicado por chiguer (17 intervenciones) el 24/05/2011 06:02:16
Te envio un codigo ya probado y que me funciona perfectamente.

en el formulario coloque un MSHFlexGrid1, un boton para ver todos y un cuadro de texto.

sobre una base de datos de access 2003 y con una tabla que se llama tabla 1 con la siguiente estructura
nombre texto
y otros campos que no importan porque lo hago sobre la base el dato nombre

Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset

'aqui me trae todos los registros
Private Sub Command2_Click()

Set rs = cn.Execute("SELECT * FROM Tabla1")
Set MSHFlexGrid1.DataSource = rs
Me.Caption = "Registros encontrados: " & CStr(rs.RecordCount)
End Sub

Private Sub Form_Load()

With MSHFlexGrid1
.SelectionMode = flexSelectionByRow
.FixedCols = 0
.ColWidth(1) = 2000
End With

Call Conectar
End Sub


Sub Conectar()

' Crea una nueva conexión y un recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

rs.CursorLocation = adUseClient
cn.CursorLocation = adUseClient
' abre la base de datos
cn.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "\bd1.mdb", , "Tabla1"


End Sub

Sub Desconectar()

If Not rs Is Nothing Then
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
End If
If Not cn Is Nothing Then
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call Desconectar
Set Form1 = Nothing
End Sub

''' ojo aqui es donde me hace la busqueda segun el criterio .. cuando cambia

Public Sub Text1_Change()
Set rs = cn.Execute("SELECT * FROM Tabla1 WHERE Nombre Like '%" & Text1.Text & "%'")

' Muestra los datos en el FlexGrid
Set MSHFlexGrid1.DataSource = rs
' Visualiza la cantidad de registros filtrados
Me.Caption = "Registros encontrados: " & CStr(rs.RecordCount)
End Sub

Y listo como te comente este codigo lo probe y funciona perfectamente Espero te sirva, me temo que es en el evento donde tienes el problema checalo
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

Filtro SQL - LIKE

Publicado por marce (21 intervenciones) el 24/05/2011 16:10:30
Gracias chiguer por tu respuesta.
Pero mi pregunta apuntaba a otra cosa...como filtro datos de palabras separadas por espacio.?

Por ejemplo si tengo que buscar "Auto Verde Descapotable" yo debo ingresar: "Au Desca" y me lo debe encontrar...!

Alguna idea...?
Palabras parciales separadas por espacio.
Saludos
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

Filtro SQL - LIKE

Publicado por Jesus (20 intervenciones) el 13/08/2011 17:34:51
Prueba separando los a ingresar en varios text
text1.text="Au"
text2.text="Desca"

La sentencia podria ser..

strsql3 = "SELECT * from Agregados WHERE Nombre Like '%" & Text1.Text & "%" & Text2.Text &"% ' ORDER BY nombre;"

lo he probado y a mi me funciona

si no quieres separar los datos en varias cajas de texto.. puedes trabajar un poco descomponiendo la cadena "Au Desca"
ejemplo: la cadena "Au Desca" la puedes separa identificando la posicion del espacio y dividirla en "Au" y "Desca" luego aplicar la instruccion

strsql3 = "SELECT * from Agregados WHERE Nombre Like '%Au%Desca%' ORDER BY nombre;"

algo asi...

saludos... epero haberte ayudado..
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