Discussion:
calcular trienios exactos empleados
(demasiado antiguo para responder)
carlos lagares
2004-07-16 13:25:14 UTC
Permalink
Hola Foro,

La duda de hoy es como relizar la fórmula para que cada
vez que un empleado cumpla un trienio, desde el día de
alta de la empresa, salga un msgbox que me lo anuncie. Yo
tengo un campo independiente que me pone los años que
lleva en la empresa, pero sólo por el año, osea, si yo
ingresé en la empresa el 16/10/2001, me pone que llevo 3
años en la empresa, y no es así, debería de ponerme 2 y el
día 16/10/2004, ponerme 3 y salirme el msgbox que que
cumplo un trienio, y a parti de ahí venirme en la nómina.

Me entendeis.
Gracias.
Carlos Lagares
unknown
2004-07-16 13:48:04 UTC
Permalink
La mejor solución, consiste en comparar la fecha actual con la de su ingreso a la que le añadirías (con la función 'DateAdd') tres años
Tras ello y si se cumple la condición, bastaría que calculases si la diferencia de los años es múltiplo de tres, o tomar la parte entera de esa diferencia dividida entre tres, para saber los trienios transcurridos.

Parece que al final indicas que deseas alterar un dato para que este intervenga en el calculo de su nomina... puedes actualizarlo, pero le veo un problema si la calculas y ejecutas esto el día exacto en que se cumple.
Imagina que este año se da esa circunstancia y el día se corresponde con uno no laborable (se supone que el Access no estará en funcionamiento, al estar el ordenador apagado)....

Un saludo E. Feijoo
P.D.

If DateAdd( "yyyy", 3, Fecha-de-inicio) = Date Then ....
Esto se cumpliría una vez únicamente, pero si has guardado los trienios en una tabla, seria así:
If DateAdd( "yyyy", 3+ (trienios * 3), Fecha-de-inicio) = Date Then ....
Así se le añadirían los trienios transcurridos y el calculo seria útil durante su vida laboral.




"carlos lagares" <***@discussions.microsoft.com> escribió en el mensaje news:2eae501c46b38$5446e750$***@phx.gbl...
Hola Foro,

La duda de hoy es como relizar la fórmula para que cada
vez que un empleado cumpla un trienio, desde el día de
alta de la empresa, salga un msgbox que me lo anuncie. Yo
tengo un campo independiente que me pone los años que
lleva en la empresa, pero sólo por el año, osea, si yo
ingresé en la empresa el 16/10/2001, me pone que llevo 3
años en la empresa, y no es así, debería de ponerme 2 y el
día 16/10/2004, ponerme 3 y salirme el msgbox que que
cumplo un trienio, y a parti de ahí venirme en la nómina.

Me entendeis.
Gracias.
Carlos Lagares
Chea
2004-07-15 23:16:50 UTC
Permalink
Prueba con

= Ent(DifFecha("aaaa";[Fecha_ de_Nacimiento];Fecha())/3)
Si se trata de un campo calculado. En un módulo de VB debería ser:

Trienios= Int(Datediff("yyyy",[Fecha_ de_Nacimiento],Fecha())/3)
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
"carlos lagares" <***@discussions.microsoft.com> escribió en el
mensaje news:2eae501c46b38$5446e750$***@phx.gbl...
Hola Foro,

La duda de hoy es como relizar la fórmula para que cada
vez que un empleado cumpla un trienio, desde el día de
alta de la empresa, salga un msgbox que me lo anuncie. Yo
tengo un campo independiente que me pone los años que
lleva en la empresa, pero sólo por el año, osea, si yo
ingresé en la empresa el 16/10/2001, me pone que llevo 3
años en la empresa, y no es así, debería de ponerme 2 y el
día 16/10/2004, ponerme 3 y salirme el msgbox que que
cumplo un trienio, y a parti de ahí venirme en la nómina.

Me entendeis.
Gracias.
Carlos Lagares
Chea
2004-07-16 14:05:43 UTC
Permalink
Ejem... donde puse Fecha_de_nacimiento quería decir Fecha_de_alta :-S
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Chea
Prueba con
= Ent(DifFecha("aaaa";[Fecha_ de_Nacimiento];Fecha())/3)
Trienios= Int(Datediff("yyyy",[Fecha_ de_Nacimiento],Fecha())/3)
--
Saludos.
José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Hola Foro,
La duda de hoy es como relizar la fórmula para que cada
vez que un empleado cumpla un trienio, desde el día de
alta de la empresa, salga un msgbox que me lo anuncie. Yo
tengo un campo independiente que me pone los años que
lleva en la empresa, pero sólo por el año, osea, si yo
ingresé en la empresa el 16/10/2001, me pone que llevo 3
años en la empresa, y no es así, debería de ponerme 2 y el
día 16/10/2004, ponerme 3 y salirme el msgbox que que
cumplo un trienio, y a parti de ahí venirme en la nómina.
Me entendeis.
Gracias.
Carlos Lagares
Búho
2004-07-16 14:33:51 UTC
Permalink
...otra con un poco mas de codigo... (Fei es el parametro que se pasa a la
funcion, o sea, fecha de ingreso en la empresa)

Function Tri(Fei As Date) As Integer
Dim Anos As Integer
Anos = DateDiff("yyyy", Fei, Date)
Select Case Month(Fei) - Month(Date)
Case Is > 0
Anos = Anos - 1
Case Is = 0
If Day(Fei) > Day(Date) Then
Anos = Anos - 1
Else
Anos = Anos
End If
End Select
Tri = Anos \ 3
End Function
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
---


---
Este correo está libre de virus ya que ha sido testeado en su expedición.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.719 / Virus Database: 475 - Release Date: 12/07/2004
Búho
2004-07-16 15:02:11 UTC
Permalink
...bueno...se puede optimizar un poco mas...me sobra un else que no sirve
para nada (Y seguro que habra mas cosas....)

Function Tri(Fei As Date) As Integer
Dim Anos As Integer
Anos = DateDiff("yyyy", Fei, Date)
Select Case Month(Fei) - Month(Date)
Case Is > 0
Anos = Anos - 1
Case Is = 0
If Day(Fei) > Day(Date) Then
Anos = Anos - 1
End If
End Select
Tri = Anos \ 3
End Function

Carlos, si quisieras que te pasara solamente los años cumplidos y no los
trienios, simplemente quita \3 de la parte final

! Que paseis buen fin de semana todos/as !
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
---


---
Este correo está libre de virus ya que ha sido testeado en su expedición.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.719 / Virus Database: 475 - Release Date: 12/07/2004
Continúe leyendo en narkive:
Loading...