Access - Error de ejecución 3142

 
Vista:

Error de ejecución 3142

Publicado por Zanga (26 intervenciones) el 16/05/2006 18:57:50
Hola,

estoy programando en visual basic una consulta sql para pasarselo como entrada a un formulario tal que así:

sql = sql + "SELECT * FROM Libro WHERE ((Libro.Género) Like '*' & [Forms]![ConsultaLibro]![Género] & '*');"
sql = sql + "SELECT * FROM Libro WHERE ((Libro.Fecha_Edición) Like '*' & [Forms]![ConsultaLibro]![Fecha_Edición] & '*') ORDER BY Nombre;"
Form_SubformLibro.RecordSource = sql
Form_SubformLibro.Requery

y al llegar a la línea del RecordSource me da este error de ejecución:

Se ha producido el error '3142' en tiempo de ejecución:

Se encontraron caracteres después del final de la instrucción SQL.

A ver si alguien sabe de qué se trata.

Un saludo y gracias de antemano!!!
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

Error "3142: Se encontraron caracteres después del final de la instrucción SQL"

Publicado por Alejandro (4142 intervenciones) el 18/07/2023 20:06:27
El error que estás experimentando generalmente ocurre cuando hay un problema con la sintaxis de la instrucción SQL que estás construyendo. En tu caso, el error específico puede estar relacionado con la concatenación de las variables en la instrucción SQL.

Aquí tienes algunas sugerencias para resolver este problema:

1. Asegúrate de que las variables utilizadas en la concatenación de la instrucción SQL sean del tipo de datos correcto. Por ejemplo, si estás concatenando una fecha en la instrucción SQL, asegúrate de que la variable [Forms]![ConsultaLibro]![Fecha_Edición] sea de tipo fecha.

2. Verifica la sintaxis de las concatenaciones en la instrucción SQL. En tu código, estás utilizando el operador "&" para concatenar las variables, lo cual es correcto en Visual Basic. Sin embargo, asegúrate de que las comillas y los asteriscos se estén agregando correctamente en la cadena SQL. Podrías intentar modificar tu código de la siguiente manera:

1
2
sql = sql + "SELECT * FROM Libro WHERE Libro.Género LIKE '*" & [Forms]![ConsultaLibro]![Género] & "*';"
sql = sql + "SELECT * FROM Libro WHERE Libro.Fecha_Edición LIKE '*" & [Forms]![ConsultaLibro]![Fecha_Edición] & "*' ORDER BY Nombre;"

3. Asegúrate de que la variable "sql" esté inicializada correctamente antes de concatenar las partes de la instrucción SQL.

4. Si las sugerencias anteriores no resuelven el problema, intenta imprimir la cadena "sql" en la ventana de depuración (utilizando la instrucción "Debug.Print sql") para verificar la sintaxis final de la instrucción SQL. Esto te ayudará a identificar si hay algún carácter adicional o inesperado en la instrucción SQL generada.

Recuerda que es importante asegurarte de que la instrucción SQL final tenga una sintaxis correcta y coherente con la estructura de la base de datos que estás utilizando. Si el problema persiste, puede ser útil mostrar más detalles de tu código y la estructura de la base de datos para obtener una ayuda más específica.

Espero que estas sugerencias te sean útiles para resolver el error "3142" en tu código. ¡Buena suerte!
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