Como leer datos de otra tabla?

Lo siento por mi ignorancia pero estoy trabajando con una BBDD en access 2007 y me gustaría saber si es posible leer datos de una tabla para hacer cálculos en otras mediante códigos. Me explico:

Tengo un formulario con datos recogidos en la tabla y uno de ellos (Fecha de nacimiento) lo utilizo para el cálculo de edades (en función de otras fechas que aparecen en los otros subformularios y tablas).

En mi ejemplo necesito saber la edad de una persona que se ha operado la fecha2 DD/MM/AAAA. Siendo la fecha1 la fecha de nacimiento de la que haría la resta. A la vez he creado la función pública siguiente:

Public Function fncEdadtx(fecha1As Date) As Integer
'Analizamos el mes de la fecha2
Select Case Month(fecha2)
Case Is > Month(fecha1)
'Si es mayor que el mes de la fecha1, la edad es la diferencia de años
          fncEdadtx = DateDiff("yyyy", fecha1, Date)
Case Is < Month(fecha1)
'Si es menor , la edad es la diferencia de años menos uno,
'pues aún no ha cumplido este año
          fncEdadtx = DateDiff("yyyy", fecha1, fecha2) - 1
Case Is = Month(fecha1)
'Si estamos en el mismo mes, hay que analizar el día, para saber si ya ha cumplido o no
If Day(fecha2) < Day(fecha1) Then 'Si el día es menor, aun no cumplió
          fncEdadtx = DateDiff("yyyy", fecha1, fecha2) - 1
Else
          fncEdadtx = DateDiff("yyyy", fecha1, fecha2)
End If
End Select
End Function

Y luego en el subformulario2 donde necesito el cálculo tengo puesto:

Private Sub fecha2_AfterUpdate()
If IsNull(Me.fecha2.Value) Then Exit Sub
If Me.fecha2.Value > Date Then
MsgBox "La fecha1 no puede ser superior a fecha2", vbCritical, "Error: Fecha Incorrecta"
Exit Sub
End If
          Me.EDADTX.Value = fncEdadtx(Me.fecha2.Value)
End Sub

¿Cómo puedo ponerlo para leer esa fecha de nacimiento del subformulario1 y poder obtener ese cálculo en el subformulario2?

1 Respuesta

Respuesta
2

Jordi, si lo que quieres es saber la edad en años, la función Datediff es una porquería, es mejor poner

Edad=fix((fecha2-fecha1)/365.24)

Las fechas como tal no existen, todos los ordenadores trabajan con números correspondientes al día. Por tanto, si a la fecha2 que sería por ejemplo, 42101 le restas la fecha1(fecha de nacimiento), que sería, también por ejemplo 41840 y la diferencia la divides por los días que tiene un año te da la edad exacta, sin tener que pensar en el mes, día, etc.

En el caso de que la fecha de nacimiento estuviera en otra tabla podrías usar

Edad=fix(fecha2-dlookup("fecha1....

Y aún cambiando el código, como hago para usar una variable (fecha1) de una tabla y otra variable (fecha2) de otra tabla?

Ese código que me pones, lo creo como función pública o dentro del subformulario2 de destino?

Jordi, creo que tienes mi correo. Por si no, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un par de ejemplos. Si lo haces, en el asunto del mensaje pon tu alias Jordi, ya que si no sé quien me escribe no los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas