Access busqueda por Dlookup por "contiene"

Tengo un evento en un formulario que hace una búsqueda y si existe me abre otro formulario y si no, me abre el formulario de crear registro. Me funciona genial y esta hecho según la recomendación de un experto de todoexpertos que me ayudo muchísimo.

Bien, mi duda es la siguiente, cuando hago la búsqueda ( un email concretamente) me devuelve la lista con la coincidencia literal de todo el campo y me gustaría poder escribir una parte del texto y que me buscara por esa cadena.

El código del evento es el siguiente:

Private Sub Nombre_y_apellidos_AfterUpdate()
Dim miID As Long
Dim miNombre As String
'Si dejas el campo vacío, limpia Mail, Tfno y sale
If IsNull(Me.Nombre_y_apellidos) Then
Me.Email = ""
Me.movil_contactos = ""
Exit Sub
End If
'Si no, busca el nombre en la tabla tbClientes
miNombre = Me.Nombre_y_apellidos.Value
miID = Nz(DLookup("Id_contacto", "1_contactos_INDIVIDUALES", "[Nombre y apellidos] LIKE '" & miNombre & "*'"), 0)
'Si el cliente no está registrado (miID=0)
If miID = 0 Then
DoCmd.OpenForm "FCreaClientes_docentes", , , , acFormAdd
Forms!FCreaClientes_docentes.[Nombre y apellidos] = miNombre
Else
DoCmd.OpenForm "subformularios_insertar_cliente_individual_docentes", , , "[Nombre y apellidos] LIKE '" & miNombre & "*'"
End If
End Sub

1 respuesta

Respuesta
1

El código que pones no busca por email, sino por "Nombre y Apellidos" (aunque la dinámica sería la misma).

Lo que veo es que cuando pones: "[Nombre y apellidos] LIKE '" & miNombre & "*'", estás buscando por aproximación pero sólo al final, es decir, que si pones, por ejemplo, Car, te buscará Carlos, Carlota, Carmen, pero no Maricarmen.

Para que te busque en cualquier parte, tienes que ponerle un * al principio:

"[Nombre y apellidos] LIKE '*" & miNombre & "*'"

Ah, otra cosa, ten en cuenta que la función DLookUp te devolverá únicamente el primer registro que coincida con el criterio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas