sábado, 17 de febrero de 2018

MOSTRAR EN UNA CONSULTA ELEMENTOS SELECCIONADOS DE UN LISTBOX


Vamos a ver como mostrar directamente en una consulta los valores activados de un listbox que admita selección múltiple. 
Para este ejemplo utilizo un LisBox llamado MyList, en un formulario de nombre MyForm. El ListBox tiene la propiedad "Selección múltiple" establecida a "Simple", dos columnas y su origen de la fila es la tabla "Categorías" de la base de datos de ejemplo Neptuno.

SELECT Eval("Forms.MyForm.MyList.Column(" & (T10.Num * 10) + T0.Num  & ", 1)")
FROM
(
       Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
       Union All
       Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
       Union All
       Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) As T0,
(
       Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
       Union All
       Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
       Union All
       Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) As T10
WHERE Eval("Forms.MyForm.MyList.Selected(" & (T10.Num * 10) + T0.Num & ")") = True


En definitiva se trata de utilizar la función Eval en la clausula Where como intermediario para verificar si la linea del ListBox está o no seleccionada y nuevamente la función Eval en la clausula Select para obtener el valor de la columna.

La clausula From de esta consulta está explicada mas detalladamente en el artículo: Series Numericas (sin tabla nums) de este mismo blog.


Ramon Poch. Terrassa a 17/02/2018.