none
Guardar valores de Checkbox y mostrar su DescripciON RRS feed

  • Pregunta

  • Tengo una aplicación tipo Survey (Encuestas).
    Hay preguntas que tienen radionbuttons y otras más con muchos "checkboxs"


    Se intentan guardar los valores (LAS RESPUESTAS de cada pregunta) así:

    pregunta 1 - RadioButton SI - NO - NO Contesta
    Campo P1 varchar(2): Valores: S, N, NC

    pregunta 1A - RadionButton con varias Opciones, y opción Otros, con campo de observaciones
    Campo P1A_01 tinyint:  valores 1, 2, 3, ...6
    Campo P1A_02 varchar(200): valore de observaciones para P1A_01 = 6

    Pregunta 2 - Con varios checkbox (1..7), checkbox Otros con campo Observaciones, incluido checkbox No Sabe/No Contesta

    Campo P2ContMotivos tinyint: Guarda el número de

    Campos tinyint: P2_01   P2_02...   P2_07 . Valor de cada campo: 1, 2,...7 según la opción.

    Campo tinyint: P2_10_1  para opción Otros. Valor 10         

    Campo varchar(200): P2_10_2  para Observaciones si se ha elegido Opción Otros.           

    Campo tinyint P2_11  para opción NO Sabe/No Contesta. Valor: 255 

    En una vista se crearía la Select para mostrar las respuestas elegidas:

    CASE
        WHEN P1 = 'S'   THEN "SI"
        WHEN P1 = 'N' THEN "NO"
        ELSE "NO CONTESTA"
    END

    AS Pregunta 1

    (CASE
        WHEN P2_01  IS NOT NULL AND P2_01= 1   THEN "Opción 1"
        ELSE ""
    END )
    +

    (CASE
        WHEN P2_02  IS NOT NULL AND P2_02= 2   THEN ", Opción 2"
        ELSE ""
    END )
    + ...

    AS Pregunta 2



    Para mostrar la descripción  que corresponde al valor del checkbox se puede utilizar CASE o relación con tablas maestras ? Qué recomiendan?

    Alguna sugerencia?



    viernes, 4 de octubre de 2019 4:32

Respuestas

  • Deleted
    viernes, 4 de octubre de 2019 12:00
  • Desgraciadamente, es proyecto legacy, no podemos modificar modelo de datos.

    En tu modelo, dónde guardarías las RESPUESTAS de cada pregunta, teniendo en cuenta que una pregunta puede tener varias respuestas posibles (CheckBoxs).

    O un CASE enorme, o un montón de left outer join.

    select 
    'Pregunta 2',
    c.P2_01, p201.Valor, c.P2_02, p202.Valor, ...c.P2_07, p207.Valor
    
    , c.P2_10_1, c.P2_10_2, p210.Valor
    
    , c.P2_11
    , CASE WHEN P2_11 = 255 THEN 'NO CONTESTA' ELSE '' END
    
     from
    
    campañaCliente c
    
    left outer join p2_valores p201 on  c.P2_01 = p201.Indice
    
    left outer join p2_valores p202 on  c.P2_02 = p202.Indice
    
    ...
    
    left outer join p2_valores p207 on  c.P2_07 = p207.Indice
    
    left outer join p2_valores p210 on  c.P2_10_1 = p210.Indice



    viernes, 4 de octubre de 2019 14:48
  • Deleted
    viernes, 4 de octubre de 2019 15:15
  • Son lAS RESPUESTAS de cada pregunta.

    Por ejemplo:

    Para la Pregunta 2  tenemos los campos P2_01   P2_02...   P2_07 .... que guardan las respuestas a la pregunta 2 (son los checkboxs...)

    viernes, 4 de octubre de 2019 15:23

Todas las respuestas

  • Deleted
    viernes, 4 de octubre de 2019 12:00
  • Desgraciadamente, es proyecto legacy, no podemos modificar modelo de datos.

    En tu modelo, dónde guardarías las RESPUESTAS de cada pregunta, teniendo en cuenta que una pregunta puede tener varias respuestas posibles (CheckBoxs).

    O un CASE enorme, o un montón de left outer join.

    select 
    'Pregunta 2',
    c.P2_01, p201.Valor, c.P2_02, p202.Valor, ...c.P2_07, p207.Valor
    
    , c.P2_10_1, c.P2_10_2, p210.Valor
    
    , c.P2_11
    , CASE WHEN P2_11 = 255 THEN 'NO CONTESTA' ELSE '' END
    
     from
    
    campañaCliente c
    
    left outer join p2_valores p201 on  c.P2_01 = p201.Indice
    
    left outer join p2_valores p202 on  c.P2_02 = p202.Indice
    
    ...
    
    left outer join p2_valores p207 on  c.P2_07 = p207.Indice
    
    left outer join p2_valores p210 on  c.P2_10_1 = p210.Indice



    viernes, 4 de octubre de 2019 14:48
  • Deleted
    viernes, 4 de octubre de 2019 15:15
  • Son lAS RESPUESTAS de cada pregunta.

    Por ejemplo:

    Para la Pregunta 2  tenemos los campos P2_01   P2_02...   P2_07 .... que guardan las respuestas a la pregunta 2 (son los checkboxs...)

    viernes, 4 de octubre de 2019 15:23