Generar una consulta con un campo fecha

Mi intención es poder crear un consulta para conocer el tiempo que existe una fecha y otra en un solo campo fecha ej:

Fecha

10/01/2012

10/02/2012

10/04/2012

R: Entre la 1era fecha y la 2da existe 1 mes y 2da y 3era fecha existe 2 meses y así sucesivamente..

1 Respuesta

Respuesta
1

Podría valerte con:

DateDiff ("m", unafecha, otrafecha)

DateDiff ("m", unafecha, otrafecha)

De todas las maneras mira en la ayuda de VBA (editor de

Código) lo que dice al respecto de "Datediff" y verás las opciones que te da.

También visita Mi foro.

La función DateDiff hace referencia a 2 campos pero no encuentro nada que me permita contar en un solo campo...

Gracias por la ayuda

Saludos

Pues no. DateDiff hace referencia a 2 datos de tipo fecha. Estos datos pueden estar en el mismo campo, en campos distintos, introducirlos "a mano", venir de una variable...

Entiendo entonces que el problema lo tienes en decirle a Access a que fecha le tiene que restar que fecha. Y eso depende mucho de como lo tengas y de que es lo que desees. Explica esto un poco más para poder encontrar una solución.

Te aclaro estos datos lo tengo en el mismo campo. FECHA PREST

Mi pregunta es como le digo que reste el primero con el segundo y el segundo con el tercero y así sucesivamente?

Vale y yo te pregunto ¿Cuál es el primero y cuál es el segundo?, podemos guiarnos por el ID, ya que el primero dependerá de cómo este ordenado. ¿Introducimos los datos siempre consecutivamente? Es decir, hoy meto un dato con fecha 15/05/12 y después meto otro registro con fecha 01/05/12. ¿Qué pasa (o que quieres que pase) si cuando tengo introducidos 300 registros, elimino el registro 128?.

En fin que hay que plantearse todas las posibilidades.

Pero si lo que quieres es que cuando introduces un registro te marque la diferencia con la fecha mas alta anterior, eso es relativamente fácil con un Dmax.

la primera fecha la entrega otro campo en el que se ingresa el cod de profesional osea

COD_PROF FECHA PREST

11 05/05/2011

11 25/05/2011

14 30/04/2011

14 05/05/2011

14 15/05/2011

Bueno efectivamente puede pasar que se pueda ingresar alguna fecha del mes anterior...

pero son casos puntuales.. ahora en ese caso me imagino no se si estoy en lo correcto pero se me ocurre no sé...en SQL es hacer una consulta donde ordeno las fecha ingresadas por profesional y después calcular la diferencia entre días...

Saludos y gracias

Pues perdón pero sigo sin enterarme del todo. Repito, lo que quieres creo que se puede hacer con un simple Dmax, eso sí, condicionado. Pero si no lo explicas un poco más...

En tu ejemplo: En el Cod_Prof = 14, ¿Qué hay que hacer? ¿Para qué? (Por aquello de guardar el dato o calcularlo cuando sea necesario). Lo que quieres "entiendo" que se puede hacer, pero si quieres una contestación más amplia que "utiliza un Dmax", pues... explica un `poco mas lo que quieres.

Como sería la sintaxis con Dmax?

Saludos

Pues depende. Pongamos que tenemos una tabla "tabla1" con dos campos "cod_prof" y "fecha_prest".

La siguiente consulta te devuelve (creo) lo que quieres:

SELECT Tabla1.COD_PROF, Tabla1.FECHA_PREST, DMax("fecha_prest","tabla1","cod_prof= '" & [cod_prof] & "' and fecha_prest <" & CDbl([fecha_prest])) AS FechaAnterior, DateDiff("d",[fechaanterior],[fecha_prest]) AS diferencia
FROM Tabla1;

Si no entiendes esto, crea una tabla con ese nombre, crea dos campos con esos nombres, introduce una serie de datos. Abre una consulta en modo diseño y vete al menu "ver" y escoge "vista SQL". Copia las líneas anteriores. Vete de nuevo al menu "ver" y escoge "vista diseño". Veras cómo se ha construido la consulta.

Con la misma tabla y los mismos campos, un formulario basado en esa tabla y con un control llamado "diferencia" (un cuadro de texto). En el evento "al activar registro" coloco el siguiente código:

Me.DIFERENCIA = DateDiff("d", DMax("fecha_prest", "tabla1", "cod_prof= '" & [COD_PROF] & "' and fecha_prest <" & CDbl([FECHA_PREST])), [FECHA_PREST])

Y ... creo que tienes el resultado que quieres.

Para más información sobre las "funciones aquí utilizadas, dirígete a Mi Foro, dónde en breve colgare un ejemplo de cada una de ellas por separado y de ellas concatenadas.

(Creo que es interesante entenderlo, para así aplicarlo correctamente en este caso y en cualquier otro que se presente.)

Hola Experto, Excelente es lo que necesito solo tengo un detallito, es posible que el campo COD_PROF sea de tipo numérico? ya que la tabla principal es de tipo numérico solo me resulta la consulta dejándolo como texto...pero la verdad es un detalle...ya que una consulta de mi tabla Principal tendría que llevar los datos y copiarlo a la tabla1 y modificar el tipo de dato....

Saludos

Es cuestión de sintaxis. Si el valor es numérico tienes que quitarle las comillas simples, debe quedarte así:

Me.DIFERENCIA = DateDiff("d", DMax("fecha_prest", "tabla1", "cod_prof=
" & [COD_PROF] & " and fecha_prest <" &
CDbl([FECHA_PREST])), [FECHA_PREST])

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas