Como se utiliza el comando Like

Tengo un cuadro combinado y deseo que me busque un texto que este contenido dentro de la búsqueda, no que comience con lo que escribo.

1 respuesta

Respuesta
2

Textoquesea=Dlookup("campodondebuscar","nombretabla","campoX like ""*""&'" & Me.nombredelcombo & "' & ""*"""

Por ejemplo

Texto7=dlookup("nombrecliente","clientes","pais like ""*""& '" & me.nombredelcombo & "'&""*"""

Así, si en el combo eliges, por ejemplo, LEM te buscará en la tabla Clientes el nombre de aquellos clientes cuyo país tenga la cadena lem, por ejemplo aLEMania

Desde ya muchas gracias.... pero no se bien como utilizar esas sentencias en el cuadro combinado. Yo tengo estas sentencias en el AfterUpdate() y me busca el texto en el comienzo de la cadena. Como adapto tu código a esto ?

--------------------------------------------------------------------------------------------------------------

Private Sub Cuadro_combinado8_AfterUpdate()

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[CodCat] = " & Str(Nz(Me![Cuadro_combinado8], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub

Es mucho más sencillo que eso. Si tengo el formulario Clientes

Puedes ver que el "registro activo" es el 1. Si tengo un cuadro de texto(no me salió en esta imagen, pero en la siguiente sí), donde escribo una cadena de un país(para el ejemplo voy a poner INO

y pulso enter

Se vá al primer registro que tenga esa cadena en el campo Pais, en este caso reINO unido, y el código es ( te lo pongo en imagen, ya que por problemas de espacio aquí, si lo escribo lo corta)

En tu caso sería

........,"[codcat] like ""*""& '" & me.nombredelcombinado & "' &""*"""

Estoy suponiendo que codcat es texto, si fuera numérico

........,"[codcat] like ""*""& " me.nombredelcombinado & " &""*"""

Así, esté donde esté Codcat te busca la cadena.

Hola. Sigo sin poder hacer funcionar el cuadro combinado. A ver en que me estoy equivocando.

Es la Tabla Clientes, que tiene los Campos: "IdCliente" (Nro del Cliente) y "Cliente" (Nombre), el cuadro combinado esta creado con esos dos campos, se muestra solo el campo "Cliente" donde se hace la búsqueda, al seleccionar filtra el formulario por el campo "IdCliente"

Esta es la sentencia que pone Access por defecto cuando lo creo. Pero la búsqueda del cuadro combinado se efectúa solo con los caracteres del comienzo del nombre. Ej, si escribo HUG (me busca Hugo Gonzalez), si pongo GONZ (no me da ninguna opción por que no existe ningún nombre que comience con GONZ)

Private Sub Cuadro_combinado57_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[IdCliente] = " & Str(Nz(Me![Cuadro combinado57], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Lo que me gustaría, si se puede, es que en el cuadro combinado, ya filtre y muestre solo los nombres que contengan la cadena GONZ (entre ellos Hugo Gonzales y todos los Gonzales que existan, por ejemplo).

Texto7=dlookup("nombrecliente","clientes","pais like ""*""& '" & me.nombredelcombo & "'&""*"""

Esto funciona bien en un cuadro de texto, pero... ¿se puede aplicar esto a un cuadro combinado?

Me pregunto una cosa. Si vas a escribir algo ¿por qué hacerlo en un combinado? Dicho esto, si tengo el formulario, donde te muestro cual es el primer registro que cumple la condición de lo que voy a escribir

Si en el combinado escribo pa

y pulso Enter

Me lo ha convertido en el registro activo y el c´´odigo es el mismo que te dije la otra vez

Private Sub Elegir_AfterUpdate()
DoCmd.SearchForRecord acForm, "clientes", acFirst, "pais like ""*""&'" & Me.Elegir & "'&""*"""
End Sub

¡Gracias! Por tu atención... lo que yo necesito es que me filtre los datos, no que se posicione en el primer registro que cumpla la condición. Ej, Si busco un cliente "María" puedo tener varios, en distintos lugares de la tabla, y capaz que en el que se posicionó no es el que busco, yo necesito que me los filtre y muestre solo los que cumplan la condición para que sea más sencillo seleccionar uno. Lo del cuadro combinado es justamente para eso, Ej. Si busco "María del Rosario", con escribir "María" me gustaría que en el cuadro combinado muestre solo los nombres que contienen "María" y seleccionar uno, el cuadro combinado me filtra el formulario, que contiene los datos personales de cada cliente mostrándome solo los datos de quien yo selecciono.

Ahora me queda claro. En ese caso, en el evento Después de actualizar del combinado, al que llamaremos Elegir, puedes poner

me.recordsource="select * from clientes where nombrecliente like ""*""&'" &Me.Elegir & "'&""*"""

Entonces, el formulario sólo te mostrará aquellos registros en que el nombre del cliente contenga la cadena que hayas escrito.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas