2011-10-20 25 views
5

Me gustaría hacer una interfaz simple para hacer consultas SQL SELECT para un número menor de columnas desde una base de datos con muchas columnas en Mathematica.
Tengo mi lista de nombres de columna, por ejemplo:Manipular, casillas de verificación de la lista

dbColumnNames={"name1","name2","name3",...."nameN"} 

Lo que me gustaría hacer es tener una casilla de verificación para cada elemento de esta lista el mismo nombre que los elementos de la lista, y cuando verifiqué que obtuve una lista con los nombres de las columnas marcadas.
Por ejemplo, hago clic en "nombre1", "name50", "name74", la lista debe ser similar:

selectedNames={"name1","name50","name74"} 

Si tuviera esa lista, es fácil hacer una cadena de consulta SQL.

Respuesta

5

Mira la ayuda para CheckboxBar y TogglerBar.

Aquí es un ejemplo de trabajo:

dbColumnNames = {"name1", "name2", "name3", "name4", "name5", "nameN"}; 
TogglerBar[Dynamic[selected], dbColumnNames] 

Mathematica graphics

Haga clic en las que desee para seleccionar y luego evaluar:

selected 

Para ver el valor actual de ese símbolo. El nombre del símbolo selected es arbitrario.


Si tiene nombres largos, es posible que prefiera:

CheckboxBar[Dynamic[selected], dbColumnNames, Appearance -> "Vertical"] 

Mathematica graphics

Si tiene mucho de nombres de columna, es posible que prefiera:

TextCell[ 
TogglerBar[Dynamic[selected], dbColumnNames, Appearance -> "Row"], 
LineIndent -> 0 
] 
+0

Utilicé TextCell [CheckboxBar [Dynamic [selected], dbColumnNames], LineIndent -> 0], no es muy bonito pero cumple su función. Gracias Sr. Wizard. – enedene

+0

@enedene eres bienvenido. Gracias por aceptar. Usted dice "no muy bonito", ¿se refiere al código o a la salida? Quizás podamos mejorar esto. –

+0

su código está bien, la salida es un poco engorroso ya que tengo 330 columnas. Pero obtuve lo que quería, puedo cambiar de forma dinámica y rápida las consultas SQL. Para cualquier mejora estética necesitaré agrupar estas columnas de alguna manera para no perder funcionalidad. Esa no es una prioridad en este momento. – enedene

Cuestiones relacionadas