Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Consulta por palabras

Estas en el tema de Consulta por palabras en el foro de Visual Basic clásico en Foros del Web. hola a todos: Tengo en mibase de datos un campo que se llama descripcion y por medio de el quiero hacer la consulta, cuando le ...
  #1 (permalink)  
Antiguo 09/10/2008, 08:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 93
Antigüedad: 16 años, 7 meses
Puntos: 0
Consulta por palabras

hola a todos:
Tengo en mibase de datos un campo que se llama descripcion y por medio de el quiero hacer la consulta, cuando le ponga por ejemplo: incendio que me muestre el texto donde se encuentra dicha palabra.
Les mando el codigo, pero solo me muestra un palabra que es boda y si le pongo incendio o otra me dice que ya no hay mas, la verdad no se en que estoy mal
Cita:
Private Sub CmdConsultas_Click()
Dim palabra, caracter, letras, t As String

buscar = InputBox(" Ingrese la palabra que desea consultar.", "Palabra")
Data1.Recordset.FindFirst "[descripcion]=" & " '" + buscar + " '"
If (descripcion <> "") Then
SQL = SQL + " and ((descripcion like '%"
Else
SQL = SQL + " and ((descripcion like '%"
End If
tam = Len(descripcion)
letras = ""
palabras = 1
' ciclo para la obtencion de palabras
For c = 1 To tam
If Mid(descripcion, c, 1) <> " " Then
caracter = Mid(descripcion, c, 1)
If (caracter = "." Or caracter = "," Or caracter = "'") Then
letras = letras + Mid(descripcion, c, 1)

Else
If palabra = 1 Then
SQL = SQL + letras + "%') "
letras = ""
palabra = 2
Else
SQL = SQL + "and (descripcion like'%" + letras + "%') "
letras = ""
End If

End If

If palabra = 2 Then
SQL = SQL + "and (descripcion like '%" + letras + "%'))"
Else
SQL = SQL + letras + "%'))"
End If
t = 1
End If
Next

If Data1.Recordset.NoMatch Then
mensaje = MsgBox("No hay mas archivos.", vbCritical, "FINAL DE LA CONSULTA")
CmdConsultas.Visible = False
Else
CmdConsultas.Visible = True
End If

End Sub
me pueden decir en donde estoy mal
  #2 (permalink)  
Antiguo 09/10/2008, 10:59
 
Fecha de Ingreso: julio-2007
Mensajes: 5
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Consulta por palabras

Prueba reemplazando % por * a ver como te va y me indicas
  #3 (permalink)  
Antiguo 09/10/2008, 11:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Consulta por palabras

Hola, nachoalm.

Está bien como %, se usa en la consulta SQL con el operador LIKE.

El problema que veo es que estás almacenando en la variable SQL la consulta pero al final no realizas nada con esa variable.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 09/10/2008, 11:24
 
Fecha de Ingreso: julio-2007
Mensajes: 5
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Consulta por palabras

si se como se utiliza el like pero yo uso el * me da muy buenos resultados siempre lo uso si deseas te paso un codigo y unos trabajitos con este codigo y con respecto a la variable tienes razon pero como explicas que si hace una primera busqueda en todo caso a mi me paso algo asi pero me di cuenta que era porque usaba la version portable del VB y me daba este error, porque lo ejecutba en el portable y salie el error y opte por ponerle * y salia normal, incluso en la version instalada asi que mejor uso el *
  #5 (permalink)  
Antiguo 10/10/2008, 08:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 93
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Consulta por palabras

Cita:
Iniciado por nachoalm Ver Mensaje
si se como se utiliza el like pero yo uso el * me da muy buenos resultados siempre lo uso si deseas te paso un codigo y unos trabajitos con este codigo y con respecto a la variable tienes razon pero como explicas que si hace una primera busqueda en todo caso a mi me paso algo asi pero me di cuenta que era porque usaba la version portable del VB y me daba este error, porque lo ejecutba en el portable y salie el error y opte por ponerle * y salia normal, incluso en la version instalada asi que mejor uso el *
ok, lo voy a probar como lo dices y luego te aviso que onda, una pregunta esta bien la logica de mi codigo?
  #6 (permalink)  
Antiguo 10/10/2008, 09:42
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Consulta por palabras

Cita:
Iniciado por ariesagv Ver Mensaje
ok, lo voy a probar como lo dices y luego te aviso que onda, una pregunta esta bien la logica de mi codigo?
Si como dices al principio:

"quiero hacer la consulta, cuando le ponga por ejemplo: incendio que me muestre el texto donde se encuentra dicha palabra"

entiendo que lo que quieres es que busque el primer registro que incluya la palabra en cualquier posición del campo, si así sólo tienes que hacer esto:

Código:
Private Sub CmdConsultas_Click()
Dim buscar As String
buscar = InputBox(" Ingrese la palabra que desea consultar.", "Palabra")
Data1.Recordset.FindFirst "[descripcion] LIKE '*" + buscar + "*'"
If Data1.Recordset.NoMatch Then
    MsgBox "No hay mas archivos.", vbCritical, "FINAL DE LA CONSULTA"
    CmdConsultas.Visible = False
Else
    CmdConsultas.Visible = True
End If
End Sub
Supongo que "Data1" es un control DAO, si lo fuera de ADO sustituye los comodines (*) por %

  #7 (permalink)  
Antiguo 11/10/2008, 07:51
 
Fecha de Ingreso: septiembre-2007
Mensajes: 93
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Consulta por palabras

Cita:
Iniciado por Avellaneda Ver Mensaje
Si como dices al principio:

"quiero hacer la consulta, cuando le ponga por ejemplo: incendio que me muestre el texto donde se encuentra dicha palabra"

entiendo que lo que quieres es que busque el primer registro que incluya la palabra en cualquier posición del campo, si así sólo tienes que hacer esto:

Código:
Private Sub CmdConsultas_Click()
Dim buscar As String
buscar = InputBox(" Ingrese la palabra que desea consultar.", "Palabra")
Data1.Recordset.FindFirst "[descripcion] LIKE '*" + buscar + "*'"
If Data1.Recordset.NoMatch Then
    MsgBox "No hay mas archivos.", vbCritical, "FINAL DE LA CONSULTA"
    CmdConsultas.Visible = False
Else
    CmdConsultas.Visible = True
End If
End Sub
Supongo que "Data1" es un control DAO, si lo fuera de ADO sustituye los comodines (*) por %

ok., lo voy a probar , luego te aviso que onda
  #8 (permalink)  
Antiguo 14/10/2008, 08:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 93
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Consulta por palabras

Cita:
Iniciado por Avellaneda Ver Mensaje
Si como dices al principio:

"quiero hacer la consulta, cuando le ponga por ejemplo: incendio que me muestre el texto donde se encuentra dicha palabra"

entiendo que lo que quieres es que busque el primer registro que incluya la palabra en cualquier posición del campo, si así sólo tienes que hacer esto:

Código:
Private Sub CmdConsultas_Click()
Dim buscar As String
buscar = InputBox(" Ingrese la palabra que desea consultar.", "Palabra")
Data1.Recordset.FindFirst "[descripcion] LIKE '*" + buscar + "*'"
If Data1.Recordset.NoMatch Then
    MsgBox "No hay mas archivos.", vbCritical, "FINAL DE LA CONSULTA"
    CmdConsultas.Visible = False
Else
    CmdConsultas.Visible = True
End If
End Sub
Supongo que "Data1" es un control DAO, si lo fuera de ADO sustituye los comodines (*) por %


Hola muchas gracias, ya me salio. una pregunta si quiero hacer la consulta de x palabra y que me muestre los registros que tiene dicha palabra; debo usar if anidados y un contador.?
  #9 (permalink)  
Antiguo 14/10/2008, 21:32
Avatar de jc_moty  
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 477
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Consulta por palabras

No soy muy bueno usando DAO, pero con ADO te quedaria algo asi:
Código:
Dim Data As New Connection
Dim mrs As Recordset
Data.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\Data.mdb;Persist Security Info=False;JET OLEDB:DATABASE PASSWORD=427J592C558M"
Data.Open
Set mrs = Data.Execute("SELECT * FROM tabla WHERE campo LIKE '%busqueda%'") 
La linea en negrita es la clave de todo; simplemente haces un SQL que filtre los registros de la tabla que necesitas, con x condicion y ya. Me imagino que en DAO podes usar sentencias SQL ¿o no?

  #10 (permalink)  
Antiguo 15/10/2008, 14:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 93
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Consulta por palabras

Cita:
Iniciado por jc_moty Ver Mensaje
No soy muy bueno usando DAO, pero con ADO te quedaria algo asi:
Código:
Dim Data As New Connection
Dim mrs As Recordset
Data.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\Data.mdb;Persist Security Info=False;JET OLEDB:DATABASE PASSWORD=427J592C558M"
Data.Open
Set mrs = Data.Execute("SELECT * FROM tabla WHERE campo LIKE '%busqueda%'") 
La linea en negrita es la clave de todo; simplemente haces un SQL que filtre los registros de la tabla que necesitas, con x condicion y ya. Me imagino que en DAO podes usar sentencias SQL ¿o no?

ya lo hice pero me sale un error donde dice que los parametros estan fuera del intervalo o hay un conflicto con otros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:13.