Access - Calculos con registro anterior sin autoID

 
Vista:

Calculos con registro anterior sin autoID

Publicado por Ancefalus (9 intervenciones) el 18/05/2016 11:11:15
Hola!

Sobre una base de datos en Access, tengo una tabla con información personal (nombre, edad...) donde el campo clave es el numero de habitación. Otra tabla donde se va registrando mensualmente el peso de cada uno, (campos autoID, fecha, habitación y peso). Las dos tablas estan relacionadas entre si por el numero de habitación.

También tengo un formulario para visualizar todos los datos. Y donde sólo me interesa ver la diferencia entre los dos últimos pesos.

La fórmula de restar el registro anterior no me sirve, ya que al ser autonúmerico el registro anterior es de otra persona.

Alguna idea?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Calculos con registro anterior sin autoID

Publicado por Enrique Heliodoro (1664 intervenciones) el 18/05/2016 13:17:42
El ID anterior es útil (y necesario para el propósito), solo que no se puede utilizar solo, se ha de utilizar en conjunto con el ID de la persona.

Si acaso, en lugar del ID, seria factible utilizar la fecha para obtener el registro anterior (que seria 'el ultimo' existente si aun no se ha guardado el registro actual)

Y si no se esta añadiendo un nuevo registro (en el que el ultimo es el anterior), seria el que tenga la fecha anterior mas alta con respecto a la fecha de referencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculos con registro anterior sin autoID

Publicado por Ancefalus (9 intervenciones) el 18/05/2016 13:54:23
Hola,

ante todo muchas gracias por la respuesta.
Pero en realidad necesito un poco más de ayuda, com escribo la fórmula y dónde?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Calculos con registro anterior sin autoID

Publicado por Enrique Heliodoro (1664 intervenciones) el 18/05/2016 21:09:25
Si expones lo que has intentado, se podría corregir o encaminar, sin esas premisas todo 'el peso' recae sobre el que responde a una pregunta de la que carece de datos reales.

Has de tener en cuenta que se puede proporcionar ayuda, las soluciones 'completas' las ha de completar el que tiene el problema y si le supera ... hay médicos para cuando el dolor no se calma con una aspirina.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculos con registro anterior sin autoID

Publicado por Ancefalus (9 intervenciones) el 19/05/2016 10:25:35
Pues mis disculpas si mi pregunta ha sonado de esa manera.
En realidad no estoy pidiendo que nadie me haga el trabajo y mucho menos que se tenga que encargar quien se ha tomado la molestia de dar la primera respuesta. Tengo una aplicación completa creada y sólo estoy pidiendo ayuda con una fórmula, si es demasiado pedir, lo admito y desisto. O quizá, alguien no piensa así y aún puede guiarme.

Detallo un poco más el dolor y las aspirinas que he probado hasta el momento:
Residencia de ancianos: Tabla con datos personales (nº habitación como clave), subtabla con pesajes periódicos (se les pesa cuando se puede, o sea, que las fechas no siguen ningún patrón). Formulario, que muestra, uno por uno, los datos de los residentes, y donde se pretende una casilla que calcule la diferencia entre los dos últimos pesajes disponibles.

He probado:

*Una consulta, con los campos "habitación" "fecha_pesaje" y "peso", en el campo "habitación" como criterio, la casilla "habitación" del formulario, Por si sóla funciona, introduciendo manualmente la habitación, pero no como origen de datos en el formulario.

*Hacer referencia al último registro de la tabla y al último -1 desde el formulario con la fórmula:
=DLookUp("[Field]","Table","[ID]=Forms![Form1]![ID]-1")
Pero obtengo resultados incorrectos, y supongo que como expongo en la primera pregunta, será porque el ID anterior corresponde a otra persona.

Espero no estar pidiendo demasiado y haberme explicado correctamente, muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Calculos con registro anterior sin autoID

Publicado por Enrique Heliodoro (1664 intervenciones) el 19/05/2016 15:23:11
Como criterio en la consulta tienes:
[ID]=Forms![Form1]![ID]-1

Lo primero es que falta una segunda condición: que el ID del paciente sea igual al ID del paciente del formulario (supongo que el formulario presenta al paciente del que se desea el dato).

Bastaria añadírsela mediante un:
.... [ID]=Forms![Form1]![ID]-1 & " And IDpaciente = " & Forms! ......

Dado que eso nos lleva a que el ID actual (menos uno) puede ser de otro paciente, lo correcto seria obtener el mayor ID de ese paciente (función DMax filtrando por paciente).

En este punto se pueden dar varias circunstancias:
.- que no exista un dato anterior de ese paciente
.- que el ID actual (de ese paciente) aun no exista (estamos en un registro nuevo y sin guardar), en este caso el ultimo ID del paciente seria el anterior.
.- que el ID actual sea un cualquiera intermedio (ni el primero ni el ultimo), el anterior seria el mayor de los inferiores a el

Analiza las posibilidades y aplica la adecuada (si solo se da una) o diséñalas todas y (mediante un 'Select Case' o un clásico If ...ElseIf) opta en tiempo de ejecución por la adecuada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculos con registro anterior sin autoID

Publicado por Ancefalus (9 intervenciones) el 19/06/2016 19:05:40
Gracias de nuevo por la respuesta.

Pero en realidad, no es un problema de planteamiento. El problema, por si no lo había explicado con claridad suficiente, es que mis conocimientos en Access, se limitan a lo que pueda hacer a golpe de ratón, o unas pocas expresiones o fórmulas báscias.
Si supiera diseñar todas las opciones, como me recomiendas, o estuviera familiarizado con Select Case ó If Elself... Te aseguro que no estaría aquí pidiendo ayuda con una fórmula.
Ahora, por si a alguien le interesa, explicaré como lo he resuelto, aunque quizá haya tomado el camino más largo.

En la tabla de pesos (que es subtabla de datos personales) he creado los registros en blanco, con los ID correlativos para cada habitación, o sea, del 101 al 112, serán pesajes de este año del residente de la habitación 1, del 201 al 212 habitación 2.....
En la consulta, ordeno los pesajes por fecha descendente y con la dicha fórmula, resto el anterior registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar