Mostrando entradas con la etiqueta If. Mostrar todas las entradas
Mostrando entradas con la etiqueta If. Mostrar todas las entradas

2020-02-05

SQL CASE Statement in Ms Access

Problem

We need to create a SQL CASE Statement which is not currently supported in Ms Access

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;
In our example for the column Number we want to create intervals of 100 from 0 to >1000. We will use the interval notation: parentheses and/or brackets are used to show whether the endpoints are excluded or included respectively.

Solution

  1. IIF
  2. IFF:IIf([Number]<=100, "(0,100]"
    ,IIf( [Number]<=200,"(100-200]",
    IIf([Number]<=300,"(200-300]",
    IIf([Number]<=400,"(300-400]",
    IIf([Number]<=500,"(400-500]",
    IIf([Number]<=600,"(500-600]",
    IIf([Number]<=700,"(600-700]",            
    IIf([Number]<=800,"(700-800]",              
    IIf([Number]<=900,"(800-900]",
    IIf([Number]<=1000,"(900-1000]",
    IIf([Number]>1000,">1000",""
    )))))))))))
    
    We use nested IIF statements to create the intervals. We need to be very careful to include all parentheses.

  3. SWITCH
  4. SWTICH:
    Switch([Number]<=100,"(0,100]"
    ,[Number]<=200,"(100-200]"
    ,[Number]<=300,"(200-300]"
    ,[Number]<=400,"(300-400]"
    ,[Number]<=500,"(400-500]"
    ,[Number]<=600,"(500-600]"
    ,[Number]<=700,"(600-700]"
    ,[Number]<=800,"(700-800]"
    ,[Number]<=900,"(800-900]"
    ,[Number]<=1000,"(900-1000]"
    ,[Number]>1000,">1000")
    
    SWITCH has a cleaner syntax. We avoid nesting all conditions using pairs of expressions and values.

References

Related posts

2013-04-25

Mensaje emergente al abrir un fichero Ms Excel

La función MsgBox en VBA muestra un cuadro de diálogo al usuario y, si lo necesitamos, captura su respuesta (por ejemplo: Sí, No o Cancelar). Uno de los múltiples usos es desplegar este mensaje de texto al abrir un fichero de Excel.

Para ello necesitamos abrir el editor de Visual Basic Alt+F11 e insertar el código en ThisWorkBook. En el menú desplegable Objeto, selecciona Workbook. Por defecto Excel crea:
Private Sub Workbook_Open() ....[Inserta el código aquí] ... End Sub




La sintaxis en español es MsgBox(texto[, botones] [, título] [, archivoayuda, contexto])

Ejemplo 1-Mensaje simple

Private Sub Workbook_Open()
  MsgBox "1-El libro está en cálculo manual" & vbCrLf & _
  "2-Haz clic en F9 para recalcular fórmulas" & vbCrLf & _
  "", vbInformation, "INFORMACION"
End Sub
Escribimos el texto del mensaje, Chr(13) o vbCrLf, para insertar saltos de línea. VbInformation muestra el icono de mensaje de información y en el argumento título "INFORMACION".


 Ejemplo 2-Captura respuesta del usuario

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNo, "Nube de datos")
    If respuesta = vbYes Then 'Haz X
        MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
        Else                  'Haz Y
        MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
    End If
End Sub
Capturamos la respuesta del usuario con la variable Respuesta. Con vbQuestion + vbYesNo mostramos el icono de pregunta de advertencia y los botones Sí y No, en el argumento título "Nube de datos". La respuesta la manejamos con un If. vbInformation para el icono del sí y vbExclamation para el del no
.

Otra alternativa a If, quizá más clara y eficiente, es usar Select Case

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNoCancel, "Nube de datos")
    Select Case Respuesta
     Case vbYes 'Haz X
         MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
     Case vbNo  'Haz Y
         MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
     Case vbCancel
         Exit Sub 'Haz Z
    End Select
End Sub

Cambiamos el argumento [botones] para mostrar , No y Cancelar.

Información detallada de la función MsgBox en: Ayuda de Excel/Referencia del lenguaje de Visual Basic/Funciones/M-P/MsgBox (Función)
Nube de datos