Traslapados fechas (fecha_ini,fecha_fin) Access

Tengo la siguiente tabla en Access nombre tabla: PLANES, con los siguientes datos:

TELEFONO VALOR FECHA_INI      FECHA_FIN COD_PLAN   DESC_PLAN     DIAS

16888 92561 16/11/2014 15/12/2014 2405 PLAN 100 MINUTOS 30

16888 12342 16/11/2014 20/11/2014 2460 PLAN 110 MINUTOS 4

16888 12342 20/11/2014 24/11/2014 2460 PLAN 110 MINUTOS 4

16880 30854 16/11/2014 25/11/2014 2405 PLAN 100 MINUTOS 10

16880 27768 23/11/2014 01/12/2014 2405 PLAN 100 MINUTOS 9

16889 27768 23/11/2014 01/12/2014 2405 PLAN 100 MINUTOS 9

16889 27768 02/12/2014 04/12/2014 2405 PLAN 100 MINUTOS 2

Si es posible por medio de una consulta me muestre los datos traslapados primero tener en cuenta el teléfono y luego muestre el traslape entre la fecha_ini y fecha_fin en el ejemplo del telefono: 16888 hay tres traslapados, el telefono 16880 hay 2 fechas traslapadas y en el ultimo telefono: 16889 NO hay registros traslapados entre fechas.

1 respuesta

Respuesta

No conocía la palabra traslapados. Por lo que he encontrado es sinónimo de 'superpuestos'. Esto me da que pensar de lo arduo que debe de ser crear un diccionario completo de nuestra lengua.. Bueno, no me enrollo que aquí es ya muy tarde.

Siento decirte que a falta de que alguien de otra opinión, lo que intentas es imposible hacerlo por medio de una consulta.

En teoría puede hacerse usando recordsets desde código. Te explico como lo plantearía.

Creamos un recordset que contenga todos los registros con un primer orden de agrupamiento por el campo TELEFONO y segundo por el campo FECHA_INI. Con esto tenemos los datos agrupados por TELEFONO y dentro de cada grupo de registros de cada TELEFONO los tendremos ordenados por fecha.

Ahora vamos a ir recorriendo el recordset desde el primero al último registro, y usaremos variables para comprobar los valores de los campos teléfono, fecha inicial y final de cada registro y del siguiente. Detallando el proceso, al tener un primer registro de un número de teléfono asigno su valor a la variable Telefono1, la fecha inicial en este caso no importa, y uso la variable "FechaFin" para el valor de fecha final de este registro. Me muevo en el recordset al siguiente registro y compruebo si el teléfono es el mismo que tengo guardado en la variable.

Si es el mismo compruebo si fecha inicio es menor o igual a la fecha fin que tengo en la variable "FechaFin". En este caso tenemos traslapado y podemos copiar los dos registros en una tabla especialmente creada para ello (y luego contar registros o hacer estadísticas de un modo más sencillo con ella), o aumentar en dos unidades una variable que nos cuente cuantos registros hay traslapados...

Si al movernos a un nuevo registro vemos que el TELEFONO siguie siendo el mismo y que FECHA_INI no se traslapa con lo que tenemos en la variable "FechaFIN" (que tiene el valor de la fecha fin del registro previo) simplemente tomamos de nuevo sus valores para cargar las variables y pasamos al siguiente registro para repetir lo comentado y ver si hay traslapado.

Si vemos que ha cambiado el teléfono simplemente volvemos a cargar las variables con los nuevos valores de este registro y pasamos a comprobar el siguiente.

El proceso es sencillo pero hay que escribir correctamente el código y definir donde me llevo los registros traslapados para luego hacer algo con ellos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas