none
reporting services 2005 operacion de division con riferimento a otra celda? RRS feed

  • Pregunta

  • Hola chico, ese problema ya me paso pero no me acuerdo como lo solucione :

    necesito en reporting services 2005 hacer un calculo del tipo:

     ((cuando field.estado="activo"  (field.a+ field.b)) - (cuando field.estado="disactivo" (field.a+ field.b)) / (cuando field.estado="disactivo" (field.a+ field.b))


    el "cuando " como lo algo? he intentado iif y no me vale porque no necesito esclusiones y el and me da un dato erroneo!!!


    help me!pls
    miércoles, 1 de julio de 2009 8:58

Todas las respuestas

  • para esplicarme mejor ver esa tabla


    estado       und.      medi diaria
    activo        100           15
    disactivo     50             2

    la media diaria se saja con un expression bastante larga
    ahora necesito hacer:  
    (media diaria con estado activo - media diaria con estado disactivo) /(media diaria con estado disactivo)

    questo dato lo necesito en una celda a parte fuera de esa tabla!!!

    como se hace?????
    miércoles, 1 de julio de 2009 9:04
  • Hola chico, ese problema ya me paso pero no me acuerdo como lo solucione :

    necesito en reporting services 2005 hacer un calculo del tipo:

     ((cuando field.estado="activo"  (field.a+ field.b)) - (cuando field.estado="disactivo" (field.a+ field.b)) / (cuando field.estado="disactivo" (field.a+ field.b))


    el "cuando " como lo algo? he intentado iif y no me vale porque no necesito esclusiones y el and me da un dato erroneo!!!


    help me!pls

    ¿Entiendo que hay un iif en el primero y en su primera evaluación tiene otro, pero el segundo? ¿Cómo sería?

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 6:11
    Moderador
  • la verdad no puede ser un iif porque son solo condiciones true....es ese el problema necesito en la expression dicir eso, mira ese ejemplo de business object :

    (-<Media_Consumo> Donde (<ESTADO(Q_DATOS)>="PERIODO PROMOCIÓN AÑO ANTERIOR")+<Media_Consumo> Donde (<ESTADO(Q_DATOS)>="PERIODO PROMOCIÓN"))/(<Media_Consumo> Donde (<ESTADO(Q_DATOS)>="PERIODO PROMOCIÓN AÑO ANTERIOR"))

    donde media consumo es una expression ( sum.field.und/datediff(fechinicial,fechafinal))


    ???
    jueves, 2 de julio de 2009 7:51
  • Hola,

    ¿Y si lo haces con la expresión switch?

    Ejemplo de como funciona: http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/e27748c3-2eff-4828-8fa8-f50f3a469e82

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 7:56
    Moderador
  • fRAN NO SE SI VALDRIA LA FUNCION SWITCH...AL FINAL ES COMO UN DECODE NO SE SI A LA VEZ DE PONER UN VALOR FIJO SE PUEDA PONER UN EXPRESSION ! dE TODA FORMA MIRA ES ATABLA Y ...NO SE TU COMO LO HARIAS?

    estado       und.      medi diaria
    activo        100           15
    disactivo     50             2


    DONDE MEDIA DIARIA

    =Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1

    jueves, 2 de julio de 2009 8:39
  • nO ME LO PUEDO CREER QUE NADIE Y EN NINGUN LADO SE EXPLIQUE COMO HACER ESO,QUE ES ALGO FUNDAMENTAL PARA CUALQUIER ............INFORME UNA CONDICION WHEN!!!!


    Y FRAN NO LO DICO POR TI !!PERO TE LO CURO HE PUESTO ESA PREGUNTA EN MAS DE 5 FOROS NADIE SABE COMO HACERLO!!!Y EL BUSINESS OBJECT QUE ES UN HERRAMIENTA DE HACE 10 AÑOS LO HACE!


    FLIPAS!!!
    jueves, 2 de julio de 2009 10:20
  • Hola Michele,

    Comprende que no todos entendemos lo que tú tienes en cabeza pensado hacer ;). Además, expresarse y explicar lo que queremos hacer es a veces más difícil que la solución ;)

    Tranquilo que seguro tarde o temprano lo consigues hacer.

    Un Saludo

    PD: No podemos contestar siempre al instante, también pensamos y hacemos otras tareas :)

    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 10:26
    Moderador
  • Hola,

    ¿Has probado a meter custom code en tus reports?

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 10:39
    Moderador
  • PUES FRAN NO ES QUE ME CABREO PRO QUE NO EM CONTESTIAS ESO ES UN FORO Y SIEMPRE OS AGRADESCO LAS RESPUESTA!

    SIMPLEMENTE DIGO QUE MICROSOFT NOS DA POCAS INFORMACIONES Y CREO QUE EL REPORTING FALTA DE ALGUNAS EXPRESSIONES ....

    TENDREIA QUE SER UN HERRAMIENTA TANTO COPLETA COMO COMPLEJA ...Y NO PUEDE SER QUE NO SE PUEDA DECIR EN UNA CELDA DE HACER UN CALCULO EN BASE AL VALOR DE OTRA CELDA!EN REPORTING ESO ES FUNDAMENTAL!!!!

    Y SI NADIE LO SABE HACER ES PROQUE A LA MEJOR NO SE PUEDE HACER...NADIE ES CULPABLE!!

    DE TODA FROMA NO HE INTENTADO CON EL CUSTOM CODE...NI SE LO QUE ES!
    PERO MANEJO UN HERRAMIENTA QUE COSTA MAS DE 3000 EURO Y FLIPO QUE NO SE PUEDAN HACER COSAS MUY SENCILLA!


    DE TODA FORMA GRACIAS POR TODO!
    jueves, 2 de julio de 2009 10:50
  • Hola,

    A ver si llegamos a entenderlo. ¿Qué cálculo quieres hacer :S? Explícamelo primero y luego que es lo que haces (aunque eso lo tengo claro)

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 12:03
    Moderador
  • Pues Fran ya te he pasado codigo y todo

    encima que ese problema lo tengo en mas informes no solo en este

    Buscar la manera en una celda de hacer un calculo xxx en funcion del valor de otro campo

    tengo que calcular el incremento % de unidades vendidas en el 1ª año de una promocion de 2 anos

    por eso calculo una media diaria de unidades por el ano anterior y el año actual (que en el informe salen como estado= PERIODO PROMOCIÓN  y PERIODO PROMOCIÓN AÑO ANTERIOR)


    MEDIA DIARIA =Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1

    LUEGO QUIERO EN UNA CELDA SINGOLA SAJAR ESA MEDIA POR EL AÑO ANTERIOR + ESA MEDIA POR EL AÑO ACTUAL TODO ESO PARTIDO POR ESA MEDIA POR EL AÑO ANTERIOR, ASI OBTENGO EL INCRMENTO % RESPECTO AL AÑO ACTUAL!!!

    SERIA ALGO ASI

    [(WHEN ESTADO=PERIODO PROMOCION  Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1) + (WHEN ESTADO=PERIODO PROMOCION AÑO ANTERIOR Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1)]  /(WHEN ESTADO=PERIODO PROMOCION AÑO ANTERIOR Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1)] 


    LA LASTIMA ES QUE WHEN NO EXISTE!!!




    jueves, 2 de julio de 2009 12:24
  • Hola,

    ¿Y si lo haces con la expresión switch?

    Ejemplo de como funciona: http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/e27748c3-2eff-4828-8fa8-f50f3a469e82

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}

    Esto es el When de SQL ;)

    Prueba con él

    Un Saludo
    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    jueves, 2 de julio de 2009 12:49
    Moderador
  • PUES L,O MIRO Y TE DIGO!MUCHAS GRACIAS

    Y PERDONA SI ANTES OS HE CONTESTADO DE MANERA UN POCO FUERTE....


    CIAO
    MICHELE
    jueves, 2 de julio de 2009 13:41
  • acabo de probar con esa formula :

    =((switch(Fields!ESTADO.Value="PERIODO PROMOCIÓN",Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1))-(switch(Fields!ESTADO.Value="PERIODO PROMOCIÓN AÑO ANTERIOR",Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1)))/switch(Fields!ESTADO.Value="PERIODO PROMOCIÓN AÑO ANTERIOR",Sum(Fields!UNID.Value)/DateDiff("D",First(Fields!FECHA.Value),LAST(Fields!FECHA.Value))+1)

    donde respectivamente la media diaria por "periodo promocion"= 342 y la media diaria por "periodo promocion año interior"=75

    el incrmeento deberia salir = 368%
    pues me sale -100%!!!!!!!!!!!!!!!

    jueves, 2 de julio de 2009 14:21