Ignorar acentos en una consulta con parámetros en Microsoft Access

Desde hace muchos años, soy un apasionado de las bases de datos, y más concretamente, las bases de datos de Access. Pero hay un tema que no consigo resolver. Me gustaría que en una consulta, al introducir lo que solicita el parámetro (en este caso utilizo éste: Como "*" & [Introduce el Nombre] & "*"), se ignoraran los nombres con o sin acentos de la tabla correspondiente. Por ejemplo, si el usuario escribe Maria, que me encontrara tanto las María con acento o sin él; o si se introduce Capitán, me encuentre tanto Capitán o Capitana.
Nunca he sido un experto en programación, de hecho, aunque he estudiado Visual Basic, no es una cosa que se me dé del todo bien; pero en mis bases de datos siempre he puesto algunos módulos, normalmente buscándolos por internet y modificando yo lo necesario en cada momento; pero en este caso, aunque he encontrado algún módulo para ignorar acentos, no he conseguido implementarlo en la consulta, ni tampoco sé si se puede hacer.

1 Respuesta

Respuesta

Puede utilizar algo como;

TABLA

SELECT Clientes.Id, Clientes.Apellidos, Clientes.Nombre
FROM Clientes
WHERE ((StrConv([Nombre],2,1042) Like '*Angel*'));

RESULTADO DE LA CONSULTA

Observe como la consulta retorna el id 18 con nombre Miguel Ángel que tiene acento.

Muchas gracias por la respuesta!

Pero no es exactamente lo que yo quiero. En este caso, sería una consulta que me devolvería todos los nombres "Ángel" de la tabla. Pero lo que yo tengo es una consulta que al hacer clic, en el formulario correspondiente, te pregunta qué nombre quieres buscar, y devuelve como resultado el nombre que le has puesto; y ahí es donde me gustaría que, aunque se le pusiera, como en este caso Angel sin acento, devolviera todos los Ángel con o sin acento.

Mi base de datos es de Cómics, y en esta tabla en concreto, que es de personajes, hay tanto "Ángel" con acento, como "Angel" sin acento; también hay "André" con acento, como "Andre" sin acento... y así algunos personajes más. Y mi idea es que cuando la consulta te pregunte, al introducir tanto Angel, como Andre, como cualquier otro personaje, te devuelva los que tienen acento como los que no tienen. Y mi duda es si se pueden compaginar las dos cosas: la pregunta que te hace la consulta, "*" & [Nombre del Personaje] & "*", y que a la vez se le pueda introducir un código que devuelva cualquier nombre con o sin acento.

De nuevo muchas gracias!

Tiene razón falta el StrConv() después del Like.

Tengo la siguiente tabla que contiene la palabra Café, Cafe y cafe

Creo el siguiente formulario:

Y obtengo este resultado, como puede ver aparecen los 3 registros. Ahora vamos a buscar pero con la palabra Cafe sin acento:

Obtengo el mismo resultado.

CODIGO DEL BOTÓN BUSCAR

Private Sub btnBuscar_Click()
 If Not IsNull(Me.ctlbuscar) Then
   Dim strSQL As String
  strSQL = "SELECT Productos.[Nombre del producto] FROM Productos WHERE " & vbCrLf
  strSQL = strSQL & " StrConv([Nombre del producto],2,1042)  Like '*" & StrConv(Me.ctlbuscar, 2, 1042) & "*'"
 Me.RecordSource = strSQL
End If
End Sub

Muchas gracias por la respuesta!
Bueno, a ver si con este código intento hacer algo parecido a lo que busco. Ya que las consultas para las que quiero el código son algo más complejas que solo buscar el nombre, ya que tienen varias tablas asociadas: Título, Cómic Original, Guionista, Dibujante, etc, y el resultado, que es un formulario con todos los datos, me devolvería, en este caso, todos los cómics en los que saliera el personaje "X", introducido en la ventana que devuelve la consulta al hacer clic, y toda la información del Cómic en sí.
Le agradezco mucho su ayuda.
Un saludo.

Esta es la idea puede incluir más like en la consulta, lo que comenta se puede hacer, no es difícil.

Pues sí, al final era más fácil de lo que yo creía ;-)
He tomado el primer código que me mandó, ya que como le he dicho quería que la consulta preguntara qué nombre de personaje había que buscar, y he modificado la última línea así:
WHERE ((StrConv([Personajes.Nombre],2,1042) Like "*" & StrConv([Nombre del Personaje], 2, 1042) & "*"))

Creo que lo he hecho bien, ya que me saca los mismos resultados tanto si le pongo acento como si no se lo pongo.
Muchísimas gracias! Es usted un crack! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas