|
Responder
|
| Autor | |
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Tema: Relío con string para insertarlo como tipo FechaEnviado: 03/Junio/2024 a las 20:35 |
|
Hola Tengo una tabla Pedidos2 con un campo string pero que muestra la fecha sin las barras, por ejemplo 20240429, 20240430, etc. Y yo lo que quiero es insertar ese campo a otra tabla y con el campo de tipo fecha que se llama tblPedidosPRUEBA. Quiero decir, ese campo ya está definido en la tabla como Fecha, formato fecha corta. Si paso la sentencia SQL directamente del sigiente modo, me inserta en la tabla destino, los valores convertidos en fecha: 29/04/2024, 30/04/2024, etc. OK. Pero si lo que quiero es pasar el INSERT INTO a través de vba ahí ya no me funciona, me pone: 30/12/1899... Esta es la sentencia SQL que funciona: INSERT INTO tblPedidosPRUEBA ( FECHA_DOCUMENTO) SELECT Format(CDate(Right(Pedidos2.FECHA_DOCUMENTO,2) & "/" & Mid(Pedidos2.FECHA_DOCUMENTO,5,2) & "/" & Left(Pedidos2.FECHA_DOCUMENTO,4)),"dd/mm/yyyy") AS FECHA_DOCUMENTO FROM Pedidos2 Lo que le hago al string es poner los 2 últimos dígitos que representan el día al principio, el 5º y el 6º dígito a continuación y al final los 4 primeros dígitos para ordenar el valor como: dd/mm/yyyy Y el código vba que no funciona: strAnexo1 = "INSERT INTO tblPedidosPRUEBA ( FECHA_DOCUMENTO) SELECT" _ & " Format(CDate(Right(Pedidos2.FECHA_DOCUMENTO, 2)/Mid(Pedidos2.FECHA_DOCUMENTO, 5, 2)/Left(Pedidos2.FECHA_DOCUMENTO, 4)), ""dd/mm/yyyy"") AS FECHA_DOCUMENTO" _ & " FROM Pedidos2" CurrentDb.Execute strAnexo1 Todo parece indicar que son las comillas las que me están dando problemas. Antes me venía conformando con pasar el string y añadir las barras de separadores pero es que sigue siendo un valor string y yo lo que quiero es que sea Fecha, que funciona en SQL pero no a través de vba. He probado sin Formato, con Formato, con Formato delante, detrás, con ValueDate, con intentar convertirlo una vez insertado, mil vueltas y tiempo que estoy perdiendo que me da una rabia... ¿pero cómo puedo solucionarlo? He hecho miles de pruebas ya Muchas gracias, Saludos, Editado por paloma - 03/Junio/2024 a las 20:42 |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 03/Junio/2024 a las 20:44 |
|
Esa cadena está mal construida, además de que le faltan las # para delimitar la fecha y que esta si la formateas tiene que ir en formato yanqui, es decir mm/dd/aa.
Tiene que quedar: ... SELECT #" & format(fecha, "mm/dd/yy") & "# .... Comprueba siempre en la ventana inmediato lo que le estás obteniendo en el sting que construyes. |
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 03/Junio/2024 a las 20:55 |
|
Hola Mihura, gracias por responder, ¿te refieres a la cadena de vba verdad? ¿y cómo debería armarla? Así me da error: strAnexo1 = "INSERT INTO tblPedidosPRUEBA ( FECHA_DOCUMENTO) SELECT" _ & " # Format(CDate(Right(Pedidos2.FECHA_DOCUMENTO, 2)/Mid(Pedidos2.FECHA_DOCUMENTO, 5, 2)/Left(Pedidos2.FECHA_DOCUMENTO, 4)), ""mm/dd/yyyy"") # AS FECHA_DOCUMENTO" _ & " FROM Pedidos2" CurrentDb.Execute strAnexo1 Y de esta forma me dice que se requiere un objeto: strAnexo1 = "INSERT INTO tblPedidosPRUEBA ( FECHA_DOCUMENTO) SELECT" _ & " #" & Format(CDate(Right(Pedidos2.FECHA_DOCUMENTO, 2) & "/" & Mid(Pedidos2.FECHA_DOCUMENTO, 5, 2) & "/" & Left(Pedidos2.FECHA_DOCUMENTO, 4)), "dd/mm/yyyy") & " # AS FECHA_DOCUMENTO" _ & " FROM Pedidos2" CurrentDb.Execute strAnexo1 Del formato yanki que dices, pero en SQL, osea en la ventana de inmediato como dices, no necesito ponerla en mm/dd/yyyy ¿solo afecta a vba entonces no?
Editado por paloma - 03/Junio/2024 a las 21:06 |
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 03/Junio/2024 a las 21:08 |
|
Y aquí me dice que no coinciden los tipos: strAnexo1 = "INSERT INTO tblPedidosPRUEBA (FECHA_DOCUMENTO) SELECT #" & Format(CDate(Right("Pedidos2.FECHA_DOCUMENTO", 2) & "/" & Mid("Pedidos2.FECHA_DOCUMENTO", 5, 2) & "/" & Left("Pedidos2.FECHA_DOCUMENTO", 4)), "dd/mm/yyyy") & " # AS FECHA_DOCUMENTO FROM Pedidos2" CurrentDb.Execute strAnexo1 |
|
![]() |
|
mounir
Colaborador
Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6521 |
Enviado: 03/Junio/2024 a las 22:02 |
|
Un Saludo.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 03/Junio/2024 a las 22:25 |
|
LLORO de por Dios, de por Dios. Pero qué maravilla es esa!! Mil gracias mounir, esto es una joya. Voy a guardar ese formulario como oro en paño MIS DIESES!!! strSql = "INSERT INTO tblPedidosPRUEBA ( FECHA_DOCUMENTO) SELECT Format(CDate(Right(Pedidos2.FECHA_DOCUMENTO,2) & ""/"" & Mid(Pedidos2.FECHA_DOCUMENTO,5,2) & ""/"" & Left(Pedidos2.FECHA_DOCUMENTO,4)),""dd/mm/yyyy"") AS FECHA_DOCUMENTO FROM Pedidos2" CurrentDb.Execute strSql Solo una dudilla. Yo aquí sigo poniendo el formato tipo No yanki pero me devuelve las fechas bien ¿es porque no pongo las almohadillas? Saludicos
|
|
![]() |
|
mounir
Colaborador
Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6521 |
Enviado: 03/Junio/2024 a las 22:31 |
|
Hola!
Pues me pillas!. Ni idea la verdad. Haz las pruebas y mira lo que te sale. Me alegro de que te haya servido. |
|
|
Un Saludo.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 03/Junio/2024 a las 22:33 |
|
Mil gracias!!!!!!
![]() |
|
![]() |
|
pitxiku
Colaborador
Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1536 |
Enviado: 09/Junio/2024 a las 00:00 |
Es más posible porque la fecha que estés insertando sea del tipo "30 de mayo". Es decir, 30/05/2024. Como no existe mes 30, Access entiende que está mal puesto el formato. Otra cosa será cuando insertes el 8 de junio, por ejemplo (08/06/2024): Access ahí sí que puede entender que es el 6 de agosto. Por eso la importancia de las almohadillas y los formatos.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 22/Septiembre/2024 a las 15:06 |
|
Muchas gracias, pueden cerrar el hilo
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |