Página 1 de 2

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

Publicado: Mar Jul 30, 2019 8:56 am
por Rafael
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:

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

Publicado: Mar Jul 30, 2019 9:44 am
por pitxiku
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.

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

Publicado: Mar Jul 30, 2019 11:50 am
por Rafael
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 & "')"

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

Publicado: Mar Jul 30, 2019 12:40 pm
por Sveinbjorn
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 & ....

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

Publicado: Mar Jul 30, 2019 12:49 pm
por pitxiku
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.

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

Publicado: Mar Jul 30, 2019 1:04 pm
por pitxiku
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.

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

Publicado: Mar Jul 30, 2019 1:13 pm
por Rafael
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...

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

Publicado: Mar Jul 30, 2019 1:29 pm
por Rafael
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:

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

Publicado: Mar Jul 30, 2019 1:29 pm
por pitxiku
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 & "')"

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

Publicado: Mar Jul 30, 2019 1:34 pm
por pitxiku
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.