https://foro.gambas-es.org/viewtopic.php?f=1&t=1591
-----------------------------------
kexxya
Viernes, 29 Abril 2011, 12:30

Calcular La Edad Con DateDiff
-----------------------------------
Ubuntu 10.10 (Maverick Meerkat)
Gambas 2.22 (Escritorio Gnome)
Hola a todos!! Yo como siempre quedandome atascada :oops:  (Bueno en realidad soy nueva en Linux y Gambas) 
En esta ocasión se trata de calcular la edad del usuario a partir de la fecha de nacimiento que es introducida en un valuebox, a su vez la edad será mostrada en un textbox que esta con la propiedad enable en false para q no pueda ser modificada sino que solo se muestre..
Hasta el momento tengo este codigo que me lanza un error que no entiendo...
txtedadA.Text = DateDiff(Year(Now), Year(CDate(txtfechanacA.Text)), gb.year)
el error que me da cuando ejecuto es: Type mismatch: wanted Date, got String instead
Por favor agradezco de ustedes la ayuda que me puedan prestar!!
Gracias!!!


-----------------------------------
kexxya
Viernes, 29 Abril 2011, 12:54

Re: Calcular La Edad Con DateDiff
-----------------------------------
Hago una aclaratoria me di cuenta que el campo txtfechanacA lo tenia txtfechanacA.Text pero obviamente me daba ese error porque no es un area de texto sino un valuebox por eso le modifique el tipo a value asi => txtfechanacA.Value, el problema es que ahora me da edades negativas o superior a lo que deberian dar..
PD: La fecha y hora de mi computador esta bien, o sea, actualizada!!


-----------------------------------
DEATH
Viernes, 29 Abril 2011, 13:00

Re: Calcular La Edad Con DateDiff
-----------------------------------
hola que tal...

el error puede dar además por el formato de la fecha... pero veo que ya lo solucionaste...
a mi también me da edades negativas, pero hasta ahora me las ha dado buena... creo que con un replace se soluciona el factor negativo.
[code linenumbers=false syntax=gambas]
DIM fecha AS String
  fecha = DateDiff(Year(Now), Year(CDate(TextBox2.Text)), gb.Day)
  TextBox1.Text = Replace(fecha, "-", "")
[/code]

seguiré investigando...


-----------------------------------
DEATH
Viernes, 29 Abril 2011, 13:29

Re: Calcular La Edad Con DateDiff
-----------------------------------
ahora de esta otra forma funciona con el gb.year
[code linenumbers=false syntax=gambas]
TextBox1.Text = DateDiff(Date(2011, 04, 29, 0, 0, 0), Date(1982, 03, 08, 0, 0, 0), gb.Year)
[/code]

año,mes,dia,hora,minuto,segundo


sigue mostrando el número en negativo pero nada que un replace no arregle


-----------------------------------
kexxya
Viernes, 29 Abril 2011, 13:35

Calcular La Edad Con DateDiff [Solucionado]
-----------------------------------
Finalmente despues de revisar este enlace http://foro.gambas-es.org/viewtopic.php?f=3&t=1358
solucione mi problema de esta manera cambie el textbox de edad por un valuebox y el resultado lo multiplico por -1 para que me de resultado positivo quedando el codigo de esta manera: txtedadA.Value = DateDiff(Date(Now), CDate(txtfechanacA.Value), gb.Year) * (-1)


-----------------------------------
DEATH
Viernes, 29 Abril 2011, 13:54

Re: Calcular La Edad Con DateDiff
-----------------------------------
exelente!


-----------------------------------
soplo
Viernes, 29 Abril 2011, 14:25

Re: Calcular La Edad Con DateDiff
-----------------------------------
Gambas hace lo correcto. La fecha mayor tiene el número mayor de manea que si tu haces A-B y B es mayor que A el resultado es negativo.

La solución es en ese caso hacer B-1 o bien hacer ABS(A-B) para quedarse con el valor absoluto o bien multiplicar por -1 pero la mejor solución es ABS porque eso da la diferencia en cualquier caso. 

Al multiplicar por -1 puedes obtener una candidad negativa si A es mayor que B y haces A-B. Con ABS eso no te pasaría.

[code linenumbers=false syntax=gambas]textbox1.text=abs(DateDiff(Date(2011, 04, 29, 0, 0, 0), Date(1982, 03, 08, 0, 0, 0), gb.Year))[/code]

Es la mejor solución porque devuelve resultado correcto sea cual sea A y sea cual sea B.


-----------------------------------
DEATH
Viernes, 29 Abril 2011, 19:21

Re: Calcular La Edad Con DateDiff
-----------------------------------
exelente!!!!


