| |||
fechas en visual basic 6.0? hola, quisiera que me ayudaran con esto. estoy realizando un sistema y no encuentro o no se como validar que cuando se valla a ingresar a un empleado nuevo su fecha de nacimiento no sea igual a la fecha actual del sistema. por ejemplo si hoy es 06/06/2008 y se este registrando a un empleado su fecha de nacimiento no puede ser la misma fecha de hoy y, creo que tampoco 1 i 2 ni 3 etc años menos, ayudenme porfa , espero me entiendan. |
| |||
Respuesta: fechas en visual basic 6.0? Cita: Si necesitas ver la diferencia entre 2 fechas, te recomiendo la funcion "DateDiff"
Iniciado por principefreddy ![]() hola, quisiera que me ayudaran con esto. estoy realizando un sistema y no encuentro o no se como validar que cuando se valla a ingresar a un empleado nuevo su fecha de nacimiento no sea igual a la fecha actual del sistema. por ejemplo si hoy es 06/06/2008 y se este registrando a un empleado su fecha de nacimiento no puede ser la misma fecha de hoy y, creo que tampoco 1 i 2 ni 3 etc años menos, ayudenme porfa , espero me entiendan. Por ejemplo Dim fechaNac As Date fechaNac = "17/09/1978" 'Aca estaria la fecha de nacimiento de tu empleado dif = DateDiff("yyyy", fechaNac, Date) 'El resultado de la variable diff seria un entero con los años entre fechaNac y date (que es la fecha de hoy) Espero que te sea útil |
| |||
Respuesta: fechas en visual basic 6.0? Cita: Hola,
Iniciado por principefreddy ![]() hola, quisiera que me ayudaran con esto. estoy realizando un sistema y no encuentro o no se como validar que cuando se valla a ingresar a un empleado nuevo su fecha de nacimiento no sea igual a la fecha actual del sistema. por ejemplo si hoy es 06/06/2008 y se este registrando a un empleado su fecha de nacimiento no puede ser la misma fecha de hoy y, creo que tampoco 1 i 2 ni 3 etc años menos, ayudenme porfa , espero me entiendan. para calcular la edad, puedes utilizar una función como esta, que devuelve un Long con la edad exacta:
Código:
Y la llamarías así desde un CommandButton o el evento LostFocus (suponemos que la fecha se ha escrito en un TextBox <Text1>):Function CalculaEdad(ByVal DataIni As Date) As Long CalculaEdad = DateDiff("yyyy", DataIni, Date) If (Month(DataIni) > Month(Date)) Or (Month(DataIni) = Month(Date) _ And Day(DataIni) > Day(Date)) Then CalculaEdad = CalculaEdad - 1 End Function
Código:
Dim iAños As Integer If Not IsDate(Text1.Text) Then MsgBox "La fecha no es correcta" Text1.SetFocus Exit Sub End If iAños = CalculaEdad(Text1) MsgBox "Tienes " & iAños & " años." If iAños < 14 Then MsgBox "Los menores de 14 años no pueden trabajar" ![]() |
| ||||
Respuesta: fechas en visual basic 6.0? O más fácil aún:
Código:
Internamente, las fechas se tratan como números (Double, para ser exactos, la parte decimal tiene la hora). Si haces operaciones directamente con fechas, el resultado es el número de días entre ambas. Las fechas se cuentan a partir del 30 de diciembre de 1899, puedes ver la fecha correspondiente a cero días si ejecutas esta instrucción:Public Function CalculaEdad(ByVal DataIni As Date) As Long CalculaEdad = Year(Date - DataIni) - 1900 End Function
Código:
Por tanto, de ahí que haya que restar 1900 al resultado de Year.format(cdate(0), "dd/MM/yyyy hh:mm:ss") Realmente, la forma óptima de calcularlo sería:
Código:
ya que así te curas en salud por si más adelante Microsoft decide que el día 0 corresponde a otra fecha, tienes en cuenta los años bisiestos y haces menos comprobaciones. CalculaEdad = Year(Date - DataIni) - Year(0) - 1 ![]() Yo había entendido que lo que te interesaba era saber si el día y el mes coincidían, independientemente del número de años. Pues si era eso, esto es mejor aún que lo que te había propuesto al principio:
Código:
Public Function MismoDiaYMes(Fecha As Date) as Boolean MismoDiaYMes = Format(Date, "ddmm") = Format(Fecha, "ddmm") End Function ![]() Última edición por Txoco; 07/07/2008 a las 03:05 Razón: Yo entendí... =] |