Access - Convertir texto 6 digitos sin barras en fechas

 
Vista:
sin imagen de perfil
Val: 16
Ha aumentado su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir texto 6 digitos sin barras en fechas

Publicado por Salva Solbes (8 intervenciones) el 03/02/2019 10:18:03
Hola,
Desde Access, necesito hacer una conversión de un campo tipo texto con 6 digitos que representa la fecha y se rellena de esta manera: "090319, representa ls fecha 09/03/2019. Ahora debo convertirlo en fecha con las barras puestas y cambiar tipo texto a fecha corta para hacer calculos con ellas. He probado de añadirle las barras, con izq, der, right, le añade las barras pero lo toma como texto. Y luego, si el campo está vacío devuelve error. La función la coloco en una consulta.
¿Alguien me puede ayudar?
Gracias por todo
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

Convertir texto 6 digitos sin barras en fechas

Publicado por Anonimo (2283 intervenciones) el 03/02/2019 20:32:23
Si el campo es de texto, su contenido tendrá que ser texto.

Una vez añadidas las barras (y el dato represente a una fecha valida), se podría utilizar una función como CDate para que el valor representase una fecha para Access, pero se tendría que guardar en un campo de tipo Fecha (y lo de que sea corta o larga no tiene importancia para el caso).
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir texto 6 digitos sin barras en fechas

Publicado por Salva (8 intervenciones) el 03/02/2019 21:17:11
Genial, funciona.He adaptado según tus instrucciones de esta manera:
FFIN_EL: SiInm([FINALIZADO_EL]="";Nulo;CVFecha((Izq([FINALIZADO_EL];2) & "/" & Medio([FINALIZADO_EL];3;2) & "/" & Der([FINALIZADO_EL];2))))

Para que:
Si FINALIZADO_EL está vacío (nulo), convierte el texto de 6 dígitos(090319) en fechas con barras 09/03/2019 y luego con lo que indicas,
CDate la convierte en fecha con formato como tal.

Por cierto, campo NULO y VACÍO ¿es lo mismo no?. en mi expresión he utilizado Nulo =>>> SiInm([FINALIZADO_EL]="";Nulo....
Y funciona bien, pero no se si habrá algun caso donde no.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Convertir texto 6 digitos sin barras en fechas

Publicado por Anonimo (2283 intervenciones) el 04/02/2019 18:40:26
Vacío y nulo no son lo mismo …..

.- Vacío es un campo que esta inicializado y no contiene valor (sea porque así lo han definido o porque se le borro el contenido)

.- Nulo es un campo que NO esta inicializado y nunca ha tenido valor, estos campos si se les asigna un valor y tras ello se le borra, pierden su calidad de nulos y pasan a ser vacíos

Si admites un consejo: huye de los campos nulos, esa condición se propaga y suele dar problemas cuando menos se espera.
Es tan sencillo como asignarles un valor por defecto (una cadena vacía, el valor cero …… etc.) en el propio diseño de la tabla, cuando se dimensiona una variable esta (según el tipo) adquiere un valor por defecto, con la excepción de las variables de tipo Variant que si admiten un valor de tipo 'Null', pero este tipo de variable es cara en recursos y excepto por su versatilidad puntual, no son las mas útiles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 16
Ha aumentado su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir texto 6 digitos sin barras en fechas

Publicado por Salva (8 intervenciones) el 04/02/2019 18:52:29
Siguiendo tus consejos y si lo he entendido bien, es mejor añadir una cadena vacia(""), quedando mi función así, sustituyendo Nulo, por "" si el campo FINALIZADO_EL está vacio("")

SiInm([FINALIZADO_EL]="";"" ;CVFecha((Izq([FINALIZADO_EL];2) & "/" & Medio([FINALIZADO_EL];3;2) & "/" & Der([FINALIZADO_EL];2))))

Mil gracias
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

Convertir texto 6 digitos sin barras en fechas

Publicado por Anonimo (2283 intervenciones) el 05/02/2019 22:41:02
Un campo de tipo NULL es incomodo por naturaleza al poder ser confundido por un campo vacío.

Lo adecuado es darle un tratamiento que abarque ambas posibilidades, por una parte que sea un NULL y por la otra que este vacío (pero no NULL), Access provee de una función para esto, la función NZ que evalúa si es NULL y de serlo permite devolver un dato alternativo, se aplicaría así:

IIF (Nz([finalizado_el]; "") = ""; ………..
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir texto 6 digitos sin barras en fechas

Publicado por Salva (8 intervenciones) el 09/02/2019 14:41:31
Perfecto, muchísimas gracias por ayudarme. He añadido a la expresión la funcion Nz, y funciona.
Un saludo
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