Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Dudas sobre código
Rafael
Nivel 5
Mensajes: 200
Registrado: Dom Dic 27, 2015 10:33 am

Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor Rafael » Mar Jul 30, 2019 8:56 am

Hola, buenos días a todos.

Decía ayer en otro hilo a modo de aperitivo que:

"Sigo con 'CONTROL HORARIO' -que por cierto si soy capaz de que furrule bien pienso subir a la red para que si a alguien le sirve de algo...-; pero aunque está bastante avanzada I need help... mucha help para ser preciso :mrgreen: . Cuando acariciaba casi el fin me he dado cuenta que era conveniente añadir nada más y nada menos que un campo en la tabla principal, lo he llamado 'FechaFichado' ... pero cuando en el formulario de Fichado de Entrada, el código encargado de insertar los campos escritos en él en la tabla principal, con el nuevo campo ya incluido, lo intenta, éste se me queja :oops: -error de sintaxis- y lo mismo me pasa con el cierre del Fichado de Salida, pareja del de la Entrada, en el que también incluyo el nuevo campo, en esta ocasión al intentar Updatear los datos en él introducidos, puesto que el registro ya estaba creado con la entrada... :oops: Digo todo esto a modo de aperitivo, mañana intentaré hacerme entender..."

Intento dar detalle del problema ahora. Tengo en la aplicación este código que se ejecuta al grabar el registro con los datos escritos en el formulario desde el que lo intento:

Código: Seleccionar todo

QryEntr = "INSERT INTO T_Control_Diario (IdControl, FechaFichado, IdTrabajador, FechaEntrada, TipoEntrada, HoraEntrada, Obs_Entrada) "
QryEntr = QryEntr & "VALUES ('" & ElNumControl & "', " & Me.IdTrabajador & ", "
QryEntr = QryEntr & "" & "#" & Format(Date, "dd/mm/yyyy") & "#" & ",'" & Me.TipoEntrada & "'," & "#" & Format(Time, "hh:nn") & "#" & ",'" & Me.Observaciones & "')"


Fijaos que en la primera línea aparece el nuevo campo al que me refería en lo que he dicho decía ayer y que transcribo al principio: "FechaFichado". Y como en la tercera línea no 'digo' nada de él, es lógico que VBA me mande el mensaje: "Se ha producido el error 3346 en tiempo de ejecución. El número de valores de consulta y el número de campos de destino son diferentes". El caso es que para hacerlos coincidir intento escribir, con la misma sintaxis que la "FechaEntrada" -incluida la instrucción de formato 'dd/mm/yyyy'- y en esta ocasión el mensaje es: Se ha producido el error '3075' en tiempo de ejecución: Error de sintaxis (falta operador) en la expresión de consulta '30/07/2019##30/07/2019'. Observo algo anómalo en el mensaje enviado: un doble almohadillado y la fecha duplicada... Pero por más que intento reparar la sintaxis no consigo el resultado apetecido.

Alguien es tan amable de decirme dónde he metido la gamba? :oops:
Última edición por Rafael el Mar Jul 30, 2019 11:28 am, editado 1 vez en total.

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor pitxiku » Mar Jul 30, 2019 9:44 am

La lista de valores debe ser igual en número a la lista de campos. Y los valores deben ir delimitados correctamente, y en el orden que corresponde.

A lo que me refiero, es que no puedes ir colocando un dato en cualquier lado, a ver si suena la flauta. Si el nuevo campo lo has colocado en segunda posición, el valor que vas a grabar debe estar en segunda posición, para que se correspondan. Y debes revisar que las comillas están delimitando un texto, y las almohadillas una fecha.

P.D.: en las consultas en vista SQL, las fechas se deben formatear como mes/día/año (mm/dd/yyyy) o año/mes/día (yyyy/mm/dd). Si usas el formato día/mes/año te puedes encontrar con resultados extraños, como que el 1 de mayo se convierta en 5 de enero.

Rafael
Nivel 5
Mensajes: 200
Registrado: Dom Dic 27, 2015 10:33 am

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor Rafael » Mar Jul 30, 2019 11:50 am

Hola pitxiku, gracias por contestar :)

Verás, la verdad es que siempre he utilizado el formato 'dd/mm/yyyy' y nunca me ha dado problemas y renunciar a él no me resulta especialmente grato, aunque estaré ojo avizor con este tema a partir de ahora.

Respecto al orden del campo 'FechaFichado', creo que es el correcto -sin estar cien por cien seguro-, de lo que estoy seguro es que la sintaxis que empleo no es la adecuada. Mira, esto es lo que intercalo en la SQL -voy a poner el código incorrecto añadido en negrita para distinguilo del bueno...-:

QryEntr = QryEntr & "" &"#" & Format(Date, "dd/mm/yyyy") & "#" & "#" & Format(Date, "dd/mm/yyyy") & "#" & ",'" & Me.TipoEntrada & "'," & "#" & Format(Time, "hh:nn") & "#" & ",'" & Me.Observaciones & "')"
Última edición por Rafael el Mar Jul 30, 2019 12:31 pm, editado 1 vez en total.

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1104
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor Sveinbjorn » Mar Jul 30, 2019 12:40 pm

Rafael escribió:QryEntr = QryEntr & "" &"#" & Format(Date, "dd/mm/yyyy") & "#" & "#" & Format(Date, "dd/mm/yyyy") & "#" & Me.TipoEntrada ....


Estás duplicando el valor de la fecha, por eso te sale dos veces seguidas (con razón... :roll: )

Tendrías que ponerlo así, sin entrar a revisar el resto de la SQL:

Código: Seleccionar todo

QryEntr = QryEntr &"#" & Format(Date, "dd/mm/yyyy") & "#" & Me.TipoEntrada & ....
Sveinbjorn El Rojo

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor pitxiku » Mar Jul 30, 2019 12:49 pm

Cuando se usan consultas SQL (o la vista SQL del diseñador de consultas), access y otros gestores de datos esperan que las fechas estén el formato norteamericano o ISO.

Tomando como base de tu consulta, podemos crear 1 consulta de inserción tal como esta:

INSERT INTO T_Control_Diario (FechaFichado) VALUES (#5/3/2019#);

Prueba si la fecha guardada es 5 de marzo o 3 de mayo.

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor pitxiku » Mar Jul 30, 2019 1:04 pm

Se me olvidó una cosa: puedes copiar la consulta que he puesto y pegarla en el diseñador de consultas (vista SQL). Luego cambia de vista SQL a vista diseño, y observa qué hace access con la fecha.

Rafael
Nivel 5
Mensajes: 200
Registrado: Dom Dic 27, 2015 10:33 am

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor Rafael » Mar Jul 30, 2019 1:13 pm

Por partes:

Svein, hago lo que me dices:

Código: Seleccionar todo

QryEntr = QryEntr & "#" & Format(Date, "dd/mm/yyyy") & "#" & Me.TipoEntrada & "'," & "#" & Format(Time, "hh:nn") & "#" & ",'" & Me.Observaciones & "')"


pero: https://mega.nz/#!fEdkQSxL!i5WHsMW5wwdsCcelR_N-W89iA1Iv9P1ajfZljbQVR00

Seguramente, además, hay alguna otra 'cosa'...

P.S.- Pitxiku voy contigo :) ... a ver si soy capaz de seguirte...

Rafael
Nivel 5
Mensajes: 200
Registrado: Dom Dic 27, 2015 10:33 am

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor Rafael » Mar Jul 30, 2019 1:29 pm

Svein, ten en cuenta que en la SQL que insertará los campos correspondientes en la Tabla de destino hay dos campos de fecha distintos [FechaFichado] y [FechaEntrada], aunque casi por definición contendrán la misma fecha, en definitiva el mismo dato.

Pitxiku, perdón pero no te sigo.... :oops:

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor pitxiku » Mar Jul 30, 2019 1:29 pm

Falta la otra parte de la consulta, para que Sveinjorn pueda indicarte bien las comillas y las almohadillas en el lugar adecuado. Más o menos, desde la cláusula VALUES:

"VALUES (#" & Format(Date, "mm/dd/yyyy") & "#, '" & Me.TipoEntrada & "'," & "#" & Format(Time, "hh:nn") & "#" & ",'" & Me.Observaciones & "')"

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Error de sintaxis por incorporación de un campo fecha en una Qry!!!

Mensajepor pitxiku » Mar Jul 30, 2019 1:34 pm

Rafael escribió:Pitxiku, perdón pero no te sigo.... :oops:


Crea una consulta nueva en Access. Usa una tabla cualquiera que tenga un campo fecha. Usa ese campo fecha para filtrarlo por una fecha cualquiera, pero que el día y el mes tengan valores distintos, y menores que 12. Ahora cambia de vista diseño a vista SQL, y observa cómo cambia la fecha.


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados