Formato de fecha

Resuelto
Ouistiti73 Mensajes publicados 18 Estado Miembro -  
Ouistiti73 Mensajes publicados 18 Estado Miembro -
Hola,
Tengo un formulario con una fecha de nacimiento. En la tabla está registrada en formato dd/mm/aaaa.
Al solicitante le resulta indiferente por ahora el día y el mes; le gustaría que se pueda completar solo el año y que aparezca 01/01/ y solo se ingrese el año. He mirado los diferentes formatos, pero creo que habrá que hacer una macro. Solo voy a ingresar el año y luego, con la macro, forzaré el día y el mes a 01.
¿Qué opinas y si tienes el código y la forma de hacerlo, te lo agradezco?
Que tengas una buena noche
PD por cierto, no quiero modificar el día y el mes para los registros ya creados.

Configuración: Windows / Firefox 88.0

11 respuestas

yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
 
hola, ¿cuál es el tipo de campo en la tabla?
no dices nada de tu formulario, ni de cómo el formulario provoca la creación de un registro.
quizá puedas usar la función DateSerial, para transformar el año en una fecha, por ejemplo:
DateSerial(2054,1,1)
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Hola, gracias por tu respuesta rápida.
Es un formulario para actualizar una tabla de Socios, en esta tabla hay un campo Nacido el -
(en privado no me gusta ese nombre de campo, pero no fui yo quien creó esta BD). Solo vengo a hacer modificaciones y solucionar algunos problemas.
El formato de Nacido el es de Fecha, general y el formato es 00/00/00;0;_
El usuario querría no escribir más que el año al registrarse y que eso escriba en la tabla 01/01/1972 por ejemplo.
Por otro lado quiere conservar para los socios ya creados su fecha de cumpleaños porque si se va hacia atrás, solo habrá que modificar los nuevos.
Hay un botón "Nueva Inscripción" con este contenido al hacer clic:

Private Sub Commande193_Click()
On Error GoTo Err_Commande193_Click

DoCmd.GoToRecord , , acNewRec
If Month(Date) < 8 Then
INSCRADH = Year(Date) - 1

Else
INSCRADH = Year(Date)

End If
[Insen cours] = DLookup("[AnnéeCours]", "Année en cours")

Me.CivADH.SetFocus
Me.Code_intervenant = 1

Exit_Commande193_Click:
Exit Sub

Err_Commande193_Click:
MsgBox Err.Description
Resume Exit_Commande193_Click

End Sub

El formato de la fecha en el formulario es texto plano con una máscara de entrada 00/00/00;0;_

Me gustaría que en el campo Nacido el, el cursor llegara directamente a
el año tipo 01/01/???? al crear un nuevo registro y en la Edición, no es grave, se modifica rara vez fechas de cumpleaños, a menos de un error. Y así en la tabla obtendríamos 01/01/1972
Espero que te resulte claro.
Gracias a ti

Hace mucho que no practico y se olvidan muchas cosas y hay novedades impresionantes. Estilo en punto en la tabla principal y haces clic en formulario y ahí aparece todo.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Puedes confirmar que el tipo del campo "nacido" es "Fecha/Hora"? El formato, en general, tiene muy poca importancia.

Lo más limpio, creo, sería crear un campo año en la tabla, en lugar de registrar una fecha de nacimiento falsa en este caso.

Si no, añadir un control
año de nacimiento
en el formulario y, cuando se modifique este control, adaptar el valor del control
nacido
del formulario.
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Sí, lo siento, olvidé precisar que es “Fecha/Hora”.
Ella no quiere otro campo, se lo había pedido.
Lo que yo pensaba es modificar el formulario. Reemplazar el campo “nacido” por “AñoNacimiento” y después de la modificación, crea 01/01/Año ingresado en el campo “AñoNacimiento” y actualiza el campo “nacido” que podría permanecer en el formulario como no visible. (ya no sé si debe aparecer en el formulario o no para que se actualice)
El día que quieran volver a la introducción completa, bastará con modificar ese campo por “nacido”
¿Qué opinas? Por otro lado, las fechas a veces producen cosas extrañas, no sé muy bien cómo hacer eso.
Esto corresponde a tu segundo punto. Puedo dejar los 2 visibles pero no poder modificar que el campo “AñoNacimiento” del formulario.
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Hola,

¿Cómo crear un campo independiente en un formulario para registrar un valor que será año de nacimiento y poder mediante VBA inscribir en nacido el 01/01/año de nacimiento?
Gracias a ustedes
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Puedes compartir tu archivo?
0
Ouistiti73 Mensajes publicados 18 Estado Miembro > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
 
Hola, he reducido mi base al mínimo, pero no sé cómo enviársela. Es la primera vez.
Gracias
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > Ouistiti73 Mensajes publicados 18 Estado Miembro
 
hay que publicar el archivo en Internet (Google Drive, OneDrive, cjoint.com, ...) y luego compartir aquí un enlace al archivo publicado.
0
Ouistiti73 Mensajes publicados 18 Estado Miembro > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
 
https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://drive.google.com/file/d/1vUGeyH1_WIwEMUyks8HbGDmzQMxD0HOt/view?usp%3Dsharing&followup=https://drive.google.com/file/d/1vUGeyH1_WIwEMUyks8HbGDmzQMxD0HOt/view?usp%3Dsharing

Con la esperanza de una buena recepción.
De hecho, solo quisiera ingresar un año de nacimiento y forzar 01/01 como día y mes para alimentar mi campo fecha de nacimiento.
Así, si algún día queremos volver atrás, será posible volver a modificar el campo de fecha de nacimiento.
Gracias a ustedes.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > Ouistiti73 Mensajes publicados 18 Estado Miembro
 
el archivo no es público.
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Buenas noches
Sí, gracias, pero ¿qué archivo en una base de datos Access?
Gracias
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Tienes varias?
0
Ouistiti73 Mensajes publicados 18 Estado Miembro > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
 
Hola, he reducido mi base al mínimo, pero no sé cómo enviársela. Es la primera vez.
Gracias
0
castours
 
https://www.cjoint.com/c/KEeu1m0mLqE
buenas noches
en ese enlace encontrarás un archivo comprimido con diferentes formatos de fecha
ponme al corriente
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Gracias a ustedes.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
 
a continuación, propongo esto:
- crear un nuevo control de tipo "cuadro de texto" llamado "andn" en el formulario, destinado a contener el año de nacimiento
- hacer no modificable el control llamado "Né__e_" (o esconderlo, pero no eliminarlo)
- añadir este código en el formulario:
Private Sub Form_Current() If Not IsNull(Me.Né__e_) Then Me.andn = Year(Me.Né__e_) Else Me.andn = Null End If End Sub Private Sub andn_AfterUpdate() If Not IsNull(andn) Then If IsNumeric(andn) Then If Int(andn) = CSng(andn) And Int(andn) > 0 Then Me.Né__e_ = DateSerial(andn, 1, 1) End If End If End If End Sub
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Genial, eso responde exactamente a mis necesidades, he añadido una máscara de entrada: 0000;;_ a este campo "andn" para que solo se puedan introducir 4 dígitos.
No conocía el código CSng o no me acuerdo, ya que lleva mucho tiempo la programación.
Me gustaría que me lo explicaran, ¿por otro lado es útil porque he puesto una máscara de entrada?
Muchas gracias a ustedes
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
csng() convierte el texto en un número (de tipo
single
).
como ya adivinaste, las líneas 10, 11, 13 y 14 son inútiles en presencia de esta máscara de entrada. verifican que el texto es un número entero positivo.
las añadí después de haber eliminado la máscara de entrada que había creado inicialmente, sin saber si podías o querías usar una máscara así (especialmente para evitar explicar la máscara).
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Ok, eso es lo que hice. La máscara es mejor, de lo contrario te van a poner una coma por error o algo así.
Gracias
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Puedes marcar la conversación como resuelta?
0
Ouistiti73 Mensajes publicados 18 Estado Miembro
 
Volveré más tarde a otro problema si no logro resolverlo, es para la inserción de una foto en mi formulario.
Hasta pronto
0