none
Cómo hacer el siguiente calculo por fechas RRS feed

  • Pregunta

  • Hola de nuevo, tengo una consulta que supongo que será fácil para los expertos. Estoy haciendo un report desde el visual studio y tengo dos campos tipo fecha, Uno llamado "Fecha registro" que viene de una tabla y que muestra una determinada fecha, y otro que he crado nuevo llamado Hoy que muestra la fecha actual y quiero lo siguiente: por un lado que en un campo resultante llamado Diferencia me muestre los dias pasado entre la fecha de registro y el día de hoy. Una vez tenga esto quiero que si la fecha resultante supera los 100 días que muestre los días en cuestion sinó que el campo aparezca en blanco.

    Muchas gracias y un saludo.

    jueves, 27 de enero de 2011 12:27

Respuestas

  • Para hallar la diferencia entre fechas se usa=

    (datediff(day,[fecha registro],[hoy]))

    Yo suelo usar Computed columns o columnas calculadas.

    Al editar el diseño de la tabla busque en el management studio en la parte inferior de propiedades de columna columnas calculadas y el la fórmula escriba:

    (datediff(day,[fecha registro],[hoy]))

    que muestra los días entre fechas.

    Ahora para mostrar o no mostrar los datos mayores que 100, se usa una consulta similar a esta:

    SELECT

     

    [fecha registro]

     

    ,[hoy],

     

    'diferencia'=

     

    case

     

    WHEN diferencia > 100 THEN ''

     

    ELSE diferencia

     

    END

     

     

    FROM [nueva].[dbo].[tablafechas]

    GO

    En reporting services, haga un reporte usando una consulta similar a la mencionada


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    jueves, 27 de enero de 2011 21:19
  • Muchas gracias, ya está resuelto; el problema era que tenia que poner los días entre comillas y así: "d", nosé porqué.

    Gracias por la ayuda y un saludo.

    jueves, 3 de febrero de 2011 10:27

Todas las respuestas

  • Para hallar la diferencia entre fechas se usa=

    (datediff(day,[fecha registro],[hoy]))

    Yo suelo usar Computed columns o columnas calculadas.

    Al editar el diseño de la tabla busque en el management studio en la parte inferior de propiedades de columna columnas calculadas y el la fórmula escriba:

    (datediff(day,[fecha registro],[hoy]))

    que muestra los días entre fechas.

    Ahora para mostrar o no mostrar los datos mayores que 100, se usa una consulta similar a esta:

    SELECT

     

    [fecha registro]

     

    ,[hoy],

     

    'diferencia'=

     

    case

     

    WHEN diferencia > 100 THEN ''

     

    ELSE diferencia

     

    END

     

     

    FROM [nueva].[dbo].[tablafechas]

    GO

    En reporting services, haga un reporte usando una consulta similar a la mencionada


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    jueves, 27 de enero de 2011 21:19
  • Perdona, ya está, estaba mirando en Visual Studio en vez de en el management. De todas maneras me da varios erroes de que no encuentra los campos cuando són de esa tabla.

    ¿No puede hacerse lo mismo desde Visual Studio mediante alguna variable o algo así?, creo que me sería más fácil.

    Muchas gracias.

    viernes, 28 de enero de 2011 8:49
  • Disculpa de nuevo, he conseguido algo y prefiero detallarlo a ver si puedes ayudarme mejor. Te cuento.

    En Visual Studio he creado, en "Conjunto de datos de informe", un campo llamado Diferencia donde quiero que me aparezcan los dias. Lo edito y lo pongo como campo calculado con el siguiente código:

    =(Fields!Hoy.Value-Fields!Fecha_registro.Value)

    Lo arrastro al diseño del informe y me hace el calculo correctamente (no me funciona Datediff que seria lo suyo, por eso lo resto) y me aparecen los dias correctamente, pero en este formato: -55.00:00:00 Voy a las propiedades del campo desde el diseño, y en la pestaña formato le pongo el standard de fecha pero no funciona, he provado con varios formatos pero nosé porqué no funciona con ninguno, siempre me muestra el resultado con dias, horas y minutos. En los campos "Fecha registro" y Hoy tambien aparecía así pero utilizando el formato cambiaban, pero no este campo calculado. ¿Como puedo hacer esto?

    Muchas gracias y disculpa.

    viernes, 28 de enero de 2011 11:04
  • 1. No te escapes del management Studio, no es dificil.

    2. Lo tienes ?. Te voy a indicar paso a paso. Solo es abrir la tabla, ir a diseño y copiar y pegar lo que te dije. 

     

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    viernes, 28 de enero de 2011 12:22
  • Sí, lo tengo. Abro la tabla (són dos para este informe, imagino que es indiferente). Supongo que inserto una nueva columna y un nombre, pongamos Diferfecha. A partir de ahí por ejemplo como tipo de datos imagino que datetime ¿no? y luego ¿donde exactamente pongo el datediff?.

    Gracias.

    viernes, 28 de enero de 2011 12:55
  • ¿Alguna idea por favor?.

    Muchas gracias.

    lunes, 31 de enero de 2011 8:30
  • En el Management Studio, al crear tablas cuando uno crea columnas se pueden crear estas columnas especiales. Se llaman columnas calculadas. No son varchar ni int.

    Creese una columna y vea las propiedades de columna (debajo de las columnas están las propiedades) hay una opción llamada

    columnas calculadas (computed columna) y el la fórmula escriba:

    (datediff(day,[fecha registro],[hoy]))


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    martes, 1 de febrero de 2011 21:35
  • Muchas gracias, ya está resuelto; el problema era que tenia que poner los días entre comillas y así: "d", nosé porqué.

    Gracias por la ayuda y un saludo.

    jueves, 3 de febrero de 2011 10:27