Comparar valor de un registro de una tabla con el del registro siguiente

Que tengo entre manos.

Tengo una bd (Access 2007) con una tabla con los campos NOMBRE (texto), VALOR (entero) y MARCADO (si/no). Dicha tabla se obtiene mediante una consulta y está ordenada por nombre y por valor.

Lo que necesito es recorrer toda la tabla comparando cada registro con el siguiente de tal forma que si el campo NOMBRE de ese registro es igual al del siguiente y además el campo VALOR se diferencia en menos de 5 del del siguiente registro, se modifique el campo MARCADO a -1.

He estado revisando foros pero la verdad es que he probado varias opciones y no consigo lo que necesito.

2 respuestas

Respuesta
1

Este ejemplo de ayuda.

https://sites.google.com/site/jerrmex/descargas 

Descargue el ejemplo 88_RestarValoresConsecutivos

También puede seguir este ejemplo con una función y SQL

http://www.accessaplicaciones.com/ejemplos.html#sqf01 

Respuesta
1

Para una respuesta concreta sería necesario que, a ser posible, pusieras una imagen de como querrías que quedara. Me explico, supongamos que estoy en un registro con Pepe y un valor de 40 y en el siguiente registro está Pepe con un valor de 37. La diferencia es de menos de 5. ¿Tendría qué marcar los dos? ¿Cómo 37 es menor a 40 no debería tenerlo en cuenta, y sí sólo los valores superiores a los que figuran en ese registro activo? ¿Si la diferencia con el siguiente es mayor de 5, debería no marcar el actual y el siguiente o sólo el siguiente? Etc.

Por otro lado, ¿Cómo quieres hacerlo, por consulta, por formulario?

Hola Julián.

La tabla está ordenada por NOMBRE y por VALOR. Me serviría con que apareciera el nombre (Pepe) de los registros de PEPE que tuvieran esa diferencia <5 con el inmediatamente siguiente y si pudieran aparecer marcados los 2 registros, mejor.

Gracias.

Como te decía, sin ver una imagen es muy difícil poder concretar. Mira, si tengo una tabla

Entre el primero y segundo de Pepe no hay más de cinco. Lo mismo pasa con el 8 y 9 de Ramon.

Si construyo una consulta de actualización como en la imagen

Cuando la ejecuto, me deja la tabla

En el caso de Pepe=49, aunque con el siguiente hay más de cinco, no me lo marca, porque llevaría a confusión, ya que ese de 49 se diferencia en menos de 5 del de Pepe=45. Es decir, sólo marca aquellos registros en que la diferencia con su anterior de ese cliente sea mayor de 5. En el caso de Ramón, sí me marca el de 84 porque la diferencia con su inmediato anterior 77 es mayor de cinco, pero no me marca el siguiente porque entre 84 y 86 no hay más de 5.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas