Access - error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

 
Vista:

error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

Publicado por Carlos (17 intervenciones) el 08/04/2020 13:01:54
Buenos días,

Tengo un formulario que filtra una serie de registros. Cada registro es una caja, con sus correspondientes campos (codigo archivador, nombre unidad, serie documental, fecha inicio , fecha fin,..)
El usuario puede realizar un primer filtro por nombre unidad y serie documental de las cajas, seleccionado las opciones en dos cuadros combinados y ejecutando el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim Serie_documental As String
Dim Nom_unitat_vigent As String
Dim miFiltro As String
Dim rst As Recordset
Serie_documental = Nz(Me.Cuadro_combinado31.Value, "")
Nom_unitat_vigent = Nz(Me.Cuadro_combinado33.Value, "")
If Serie_documental <> "" Then
miFiltro = "[Serie documental]='" & Serie_documental & "'"
End If
If Nom_unitat_vigent <> "" Then
miFiltro = miFiltro & " AND [Nom unitat vigent] ='" & Nom_unitat_vigent & "'"
End If
Me.Filter = miFiltro
Me.FilterOn = True
Set rst = Me.Recordset.Clone
If rst.RecordCount = 0 Then
    MsgBox "No se ha encontrado ninguna caja", vbInformation, "Mensaje"
End If

Este filtro va muy bien.

A continuación, deseo hacer un filtro por fechas sobre el resultado del filtro anterior.
El usuario introduce en formato fecha corta la fecha inicial y la fecha final en dos cuadros de texto.Luego clica en un botón que ejecuta el siguiente código.

1
2
Me.Filter = "Fecha inicio]>=#" & Me.Texto58 & "# AND [Fecha final]<#" & Me.Texto60 & "#"
Me.FilterOn = True

Me hace el filtro por fechas correctamente. El problema es que me hace el filtro por fechas sobre la totalidad de los registros, no sobre el resultado del filtro anterior.

He hecho este código para resolver la cuestión:

1
Me.Filter = "[Nom unitat vigent]=" & Me.Cuadro_combinado33 & " AND [Serie documental] ='" & Me.Cuadro_combinado31 & "' AND [Fecha inicio]>=#" & Me.Texto58 & "# AND [Fecha final]<#" & Me.Texto60 & "#"

Pero me aparece el siguiente mensaje cuando lo ejecuto:

Se ha producido el error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta.

¿Alguien sabe cómo solucionarlo?

Muchas gracias.
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 Jhonattan
Val: 295
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

Publicado por Jhonattan (121 intervenciones) el 08/04/2020 14:41:16
En vez de mayor igual >= mejor utiliza Between que significa entre y lo continuas con la clausula AND

1
2
Me.Filter = "Fecha inicio]Between#" & Me.Texto58 & "# AND [Fecha final] #" & Me.Texto60 & "#"
Me.FilterOn = True
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

error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

Publicado por Carlos (17 intervenciones) el 08/04/2020 15:12:16
Gracias por responder tan rápido, pero me sigue dando el mismo error.
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

error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

Publicado por Anonimo (1962 intervenciones) el 09/04/2020 10:02:27
El error que aprecio es que uno de los parámetros que se le pasan en la expresión final es incorrecto.

En la primera versión esta esto (y funciona):
….. miFiltro & " AND [Nom unitat vigent] ='" & Nom_unitat_vigent & "'" …..

En la segunda esto (y no funciona):
Me.Filter = "[Nom unitat vigent]=" & Me.Cuadro_combinado33 & " AND [Serie documental] ='" & M ...….

la diferencia esta en que el parámetro que se le da en la primera versión a [Nom unitat vigent] es de texto (va entre comillas simples) y en la segunda sin las comillas (para Access es un dato numérico) y por ello el mensaje de error (por error del programador, no del programa)

Es curioso que al segundo parámetro si se le respeta el tipo de dato (en ambas versiones se le pasa como texto)

Cambia lo que sea adecuado:
.- bien el campo referente (para que se adapte al tipo de dato)
.- o el dato (para que adapte al tipo de datos del referente )

.- … también se le pueden añadir las comillas originales y ver si se soluciona el problema , pues en un caso el dato esta en 'Nom_unitat_vigent' y en el otro en 'Me.Cuadro_combinado33'.
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

error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta

Publicado por Carlos (17 intervenciones) el 11/04/2020 12:35:02
Gracias! Iré probando con lo que me has dicho.
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