Access - ¡¡¡Error 2423 con BuildCriteria!!!

 
Vista:

¡¡¡Error 2423 con BuildCriteria!!!

Publicado por Victor Manuel (101 intervenciones) el 19/06/2007 17:04:17
Tengo este codigo en un boton para filtrar informacion a un subformuario:

Dim strOrganizacion As String

If Not IsNull(Me.Organizacion) And Me.Organizacion <> "" Then
strOrganizacion = BuildCriteria("Organizacion", dbText, Me.Organizacion)
Else
strOrganizacion = ""
SubPendientes.Form.FilterOn = False
SubPendientes.Form.Filter = ""
End If

Me.Oganizacion es un combobox que contienes 4 opciones de filtrado:

ASTROMAR S.A., CONSULTANTES, INSPECTORES, SISTEMARIN

Me filtra muy bien con las ultimas tres opciones pero cuando quiero filtrar por ASTROMAR S.A. me manda el error numero 2423 que dice:

Error "2423" en tiempo de ejecución:
La expresión que se introdujo tiene un .(dot) no válido o! O paréntesis ( ) no válidos.

No entiendo que me quiere decir con .(dot) no valido y cuales parentesis.

Espero puedan ayudarme.

Saludos.
Victor
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
Imágen de perfil de Alejandro

Solución para filtro de organización con punto (.) en consulta subformulario

Publicado por Alejandro (4142 intervenciones) el 14/08/2023 16:08:00
El error que estás experimentando, el error 2423, generalmente se produce cuando hay un problema en la construcción de la expresión de filtro en Access. En tu caso, parece que el problema está relacionado con la presencia de un punto (.) en el valor que estás utilizando para filtrar ("ASTROMAR S.A.").

Cuando se trabaja con expresiones en Access, el punto (.) puede ser interpretado como un operador y no como parte del valor de texto. Para resolver esto, puedes modificar tu código para manejar adecuadamente los caracteres especiales, como el punto. A continuación, te muestro cómo puedes hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim strOrganizacion As String
 
If Not IsNull(Me.Organizacion) And Me.Organizacion <> "" Then
    ' Escapar caracteres especiales en la organización antes de construir la expresión de filtro
    strOrganizacion = BuildCriteria("Organizacion", dbText, Replace(Me.Organizacion, ".", "\."))
Else
    strOrganizacion = ""
    SubPendientes.Form.FilterOn = False
    SubPendientes.Form.Filter = ""
End If
 
' Aplicar el filtro a SubPendientes.Form
SubPendientes.Form.Filter = strOrganizacion
SubPendientes.Form.FilterOn = True

En este código, utilizamos la función `Replace` para reemplazar cualquier punto (.) en el valor del combo "Organizacion" con "\." antes de construir la expresión de filtro. Esto permite que Access interprete correctamente el punto como parte del valor de texto en lugar de como un operador.

Recuerda ajustar el código según las necesidades específicas de tu base de datos y la estructura de tu formulario y subformulario. Espero que esta solución te ayude a resolver el problema con el filtro, Víctor.
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