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: 308
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 (123 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 (3316 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
Imágen de perfil de Pablo

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

Publicado por Pablo (1 intervención) el 30/01/2024 17:41:18
Hola Antonio, buenos días, podrás apoyarme a mi también, tengo un detalle similar, te incorporo mi código:

Private Sub Recupera_Informacion()
Dim rst As DAO.Recordset, SQL As String

'On Error GoTo ManipulaError
SQL = " SELECT Cl.Nombre, Cl.rfc, Cli.cont, Cl.direcc, Cl.mail, Cl.telofi, Cl.telcont, '" _
& " FROM clientes " _
& " WHERE Rfc_clien = '" & Me.TRfc & " ' "
Set rst = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
With rst
Me.TRfc = !Rfc_clien
Me.TNombre_Clien = !Nombre_Clien
Me.TCont_Clien = !Cont_Clien
Me.TDirecc_Clien = !Direcc_Clien
Me.TMail_Cont_Clien = !Mail_Cont_Clien
Me.TTel_Ofi_Clien = !Tel_Ofi_Clien
Me.TTel_Cont_Clien = !Tel_Cont_Clien
End With
rst.Close: Set rst = Nothing
Me.TRfc = Null
Exit Sub

ManipulaError:
If Not rst Is Nothing Then rst.Close: Set rst = Nothing
End Sub
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 (3316 intervenciones) el 30/01/2024 23:48:27
La SQL no me parece correcta, si la tabla se llama 'clientes', de utilizarla para definir los/sus campos (algo que no es necesario si solo se utiliza una tabla) deberían denominarse:

Cl.Nombre ===> Cliente.Nombre

Detrás de 'telcont' espera un campo mas (hay una coma) si no hay mas campos elimínala para que no de error de que 'le falta algo'

Yo la escribiría así:

1
SQL = " SELECT Nombre, rfc, cont, direcc, mail, telofi, telcont FROM clientes WHERE Rfc_clien = '" & Me.TRfc & "'"

Si solo se desea leerla (obtener datos, no modificarlos) mejor abrirla asi:

1
Set rst = CurrentDb.OpenRecordset(SQL,, DbReadOnly)

Aconsejaría verificar que el Recordset obtiene datos (o todo lo que venga a continuación dará 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