2011-10-20 17 views
5

Mi piacerebbe creare un'interfaccia semplice per creare query SQL SELECT per un numero minore di colonne da un database con molte colonne in Mathematica.
Ho la mia lista dei nomi di colonna, ad esempio:Manipola, caselle di controllo dall'elenco

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

Quello che vorrei fare è di avere una casella di controllo per ogni elemento di questa lista di nome lo stesso come elementi della lista, e quando controllato che ottengo la lista con i nomi delle colonne controllati.
Per esempio, clicco su "nome1", "name50", "name74", la lista dovrebbe essere simile:

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

Se ho avuto quella lista, è facile fare una stringa di query SQL.

risposta

5

Consultare la guida per CheckboxBar e TogglerBar.

Ecco un esempio di lavoro:

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

Mathematica graphics

Clicca quelli che si desidera selezionare, quindi valutare:

selected 

Per visualizzare il valore corrente di quel simbolo. Il nome del simbolo selected è arbitrario.


Se si dispone di nomi lunghi, si può preferire:

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

Mathematica graphics

Se avete un sacco di nomi di colonna, si può preferire:

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

Ho usato TextCell [CheckboxBar [Dinamico [selezionato], dbColumnNames], LineIndent -> 0], non molto carina ma fa il lavoro. Grazie Mr.Wizard. – enedene

+0

@enedene sei il benvenuto. Grazie per aver accettato. Dici "non molto carina", ti riferisci al codice o all'output? Forse possiamo migliorare questo. –

+0

il tuo codice va bene, l'output è un po 'ingombrante dato che ho 330 colonne. Ma ho ottenuto quello che volevo, posso modificare le query SQL in modo dinamico e veloce. Per eventuali miglioramenti estetici, dovrò raggruppare queste colonne in qualche modo in modo da non perdere la funzionalità. Questa non è una priorità al momento. – enedene

Problemi correlati