locked
Campo Formula RRS feed

  • Pregunta

  • Hola.
    Tengo una tabla que entre otros campos tiene los siguientes:
    valor float(8)
    Redondeo int(4)
    Resultado varchar(10) con la siguiente formula (ltrim(rtrim(str(round([valor],2),10,[Redondeo]))))
    que me "transforma" el contenido de valor con la cantidad de decimales que le indico en Redondeo
    y una columna Actualizado  char(1) .
    Yo quisiera que la formula solo "funcione" cuando el valor de Actualizado es =1.
    Hay alguna forma de poner esa condicion?
    Gracias

    viernes, 26 de junio de 2009 18:54

Respuestas

  • Hola.

    Esto no parece un debate, sino más bien una pregunta. En cualquier caso, la respuesta es la misma: usa un case que evalúe el campo "Actualizado" en tu fórmula.

    No sé si el valor de resultado es un default o un campo calculado, pero para el caso es lo mismo. Incluye el campo Actualizado con un case para que tenga el comportamiento que deseas. Mira este ejemplo (de un campo calculado):

    create table Tabla (campo0 varchar(10), campo1 int identity(1,1),  
    campo2 as (case when campo1 % 2 = 0 then 'par' else 'impar' end) );
    
    insert Tabla values('a');
    insert Tabla values('a');
    insert Tabla values('a');
    
    select * from Tabla;
    
    drop table Tabla;
    En tu caso, la fórmula de resultado será algo así como esto:

    (case when Actualizado = 1 then ltrim(rtrim(str(round([valor],2),10,[Redondeo]))) 
    else '' end)
    No sé si será esto lo que buscas, espero que al menos te dé una pista para solventarlo.

    Alberto López Grande.
    sábado, 27 de junio de 2009 7:24
    Moderador

Todas las respuestas

  • Hola.

    Esto no parece un debate, sino más bien una pregunta. En cualquier caso, la respuesta es la misma: usa un case que evalúe el campo "Actualizado" en tu fórmula.

    No sé si el valor de resultado es un default o un campo calculado, pero para el caso es lo mismo. Incluye el campo Actualizado con un case para que tenga el comportamiento que deseas. Mira este ejemplo (de un campo calculado):

    create table Tabla (campo0 varchar(10), campo1 int identity(1,1),  
    campo2 as (case when campo1 % 2 = 0 then 'par' else 'impar' end) );
    
    insert Tabla values('a');
    insert Tabla values('a');
    insert Tabla values('a');
    
    select * from Tabla;
    
    drop table Tabla;
    En tu caso, la fórmula de resultado será algo así como esto:

    (case when Actualizado = 1 then ltrim(rtrim(str(round([valor],2),10,[Redondeo]))) 
    else '' end)
    No sé si será esto lo que buscas, espero que al menos te dé una pista para solventarlo.

    Alberto López Grande.
    sábado, 27 de junio de 2009 7:24
    Moderador
  • Alberto:
    Antes que nada gracias por tu pronta respuesta.
    Sin duda el camino de lo que estoy buscando es este, no que no logro hacer es que si Actualizado no es=1
    el calculo de Resultado no se lleve a cabo  ya que inclusive sacando el else ' ', cuando actualizado es 0 ò està vacio hace el computo
    dejandome resultado en null. Muchas Gracias
    lunes, 29 de junio de 2009 22:09