Formato condicional

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Trabajar con SQL >

Formato condicional

Cuando se ejecutan instrucciones SELECT en el Editor SQL, los datos obtenidos se muestran en la ventana Resultados (o en varias ventanas Resultados si se ejecutan más de una consulta). Puede cambiar el aspecto de los datos obtenidos (como el color, el fondo, el peso de la fuente) con condiciones SQL personalizadas. Por ejemplo, puede configurar valores de la tabla Resultados para que pasen a ser amarillos si superan cierto umbral.

 

La siguiente imagen muestra un ejemplo de formato condicional en una base de datos SQL. Puede encontrar este proyecto de ejemplo en \Altova\DatabaseSpy2019\DatabaseSpyExamples\Tutorial\NanonullEnterprise.qprj. El objetivo de este ejemplo es aplicar el siguiente formato condicional:

 

los registros cuya cantidad supere 200 deben tener un fondo rojo coral y fuente negrita.
los registros cuya cantidad supere 10 deben tener un fondo turquesa y fuente cursiva.

ds_condformat_01

Formato condicional en sintaxis de SQLite

Como se ve en la imagen anterior, para que se pueda aplicar el formato condicional la instrucción debe incluir una columna tipo alias llamada DbRowSettings que indica a DatabaseSpy que procese esa columna como instrucciones de formato condicional. Observe que la columna alias equivale a una expresión "CASE". La cláusula WHEN es la expresión SQL en la que indica la condición que se debe cumplir en la correspondiente gramática de BD. La cláusula WHEN es una cadena de texto que indica los estilos del formato, como el peso de la fuente o el color de fondo. Para que la BD la entienda como una cadena, esta debe estar entrecomillada en la gramática específica de esa BD.

 

La sintaxis SQL que define una columna alias depende del tipo de BD. Para más información consulte la documentación del proveedor de la base de datos.

 

Estos son los estilos que se pueden usar:

 

Estilo

Observaciones

Ejemplo

Estilos de texto

El texto puede estar en negrita, en cursiva o subrayado.

font:bold

font:italic

font:underline

Colores de texto

El color del texto se puede expresar como un valor hexadecimal (no distingue entre mayúsculas y minúsculas) o con el nombre del color. Para ver qué nombres de colores se pueden usar consulte https://www.w3.org/TR/2003/REC-SVG11-20030114/types.html.

color: yellow

color: #FFFF00

Colores de fondo

Se pueden usar los mismos valores para los colores de fondo y para los del texto.

background-color: gold

background-color: #FFD700

 

Observaciones:

 

Puede usar distintos estilos separados por punto y coma: background-color:gold; font: bold; color: blue;. El espacio en blanco entre los estilos es irrelevante.
Si DatabaseSpy no reconoce los estilos que introdujo no emitirá ningún mensaje de error o advertencia.
La columna DbSpyRowSettings puede aparecer en cualquier ubicación de la lista de columnas.
Los casos de la columna DbSpyRowSettings o de los estilos no son relevantes.
Si se selecciona una celda, una columna o una fila con formato condicional, eso no afecta al color de fondo. Se aplican únicamente el color y la fuente del texto.
Para mostrar mejor los resultados, es posible que quiera desmarcar la casilla Mostrar cuadrícula alternando colores de las opciones de la Vista de resultados.

 

Formato condicional en distintos tipos de bases de datos

Estos son algunos ejemplos específicos para BD de instrucciones SQL que usan formato condicional. Observe que los siguientes ejemplos muestran algunas de las formas de aplicar el formato condicional. Si son compatibles con la base de datos también se puede alcanzar el mismo resultado con técnicas más complejas, como subconsultas, procedimientos almacenados, etc.

 

Tipo de BD

Ejemplo

Access

Use la función SWITCH (véase https://support.office.com/en-us/article/Switch-Function-D750C10D-0C8E-444C-9E63-F47504F9E379)

 

SELECT [id],
      [name],
      [quantity],
      SWITCH ([quantity] > 200, 'color:blue') AS [DbSpyRowSettings]
FROM   [products];

 

También puede usar la función IF (véase https://support.office.com/en-us/article/IIf-Function-32436ECF-C629-48A3-9900-647539C764E3)

 

SELECT [id],
      [name],
      [quantity],
      IIF ([quantity] > 200, 'color:blue', '') AS [DbSpyRowSettings]
FROM   [products];

IBM DB2

IBM DB2 para i

Oracle

PostgreSQL

Progress OpenEdge

SQLite

Sybase

Teradata

SELECT "id",
      "name",
      "quantity",
      CASE WHEN "quantity" > 200 THEN 'color:blue;' END AS "DbSpyRowSettings"
FROM   "products";

IBM Informix

SELECT id,
      name,
      quantity,
      CASE WHEN quantity > 200 THEN 'color:blue;' END AS DbSpyRowSettings
FROM   products;

MariaDB

MySQL

SELECT `id`,
      `name`,
      `quantity`,
    CASE WHEN `quantity` > 200 THEN 'color:blue;' END AS `DbSpyRowSettings`
FROM   `products`;

SQL Server

SELECT [ProductID],
      [Name],
      [Quantity],
[DbSpyRowSettings] = CASE WHEN [Quantity] > 200 THEN 'color:blue;' END
FROM   [Products];


© 2019 Altova GmbH