Se è vero che possiamo utilizzare if
e/o elsif
per scegliere quale ramo eseguire, questo approccio può diventare sia lungo che complicato soprattutto quando i valori da controllare sono molti. Per valutare l'assuzione di diversi valori da parte di una variabile esiste il costrutto Select Case, eccone sintassi:
Select case valore / espressione case valore_possibile_1 / espressione_possibile_1 'blocco di istruzioni 1 case valore_possibile_2 / espressione_possibile_2 'blocco di istruzioni 2 '... case valore_possibile_N / espressione_possibile_N 'blocco di istruzioni N '-- Parte di codice opzionale -- case else 'blocco di istruzioni else '-- Fine parte opzionale -- end select
Prima di vedere un esempio pratico spieghiamo in teoria come si struttura questo costrutto di logica condizionale. Innanzitutto va osservato che si apre con la sintassi Select case valore/espressione. Il termine valore/espressione serve ad indicare la vecchia condizione dell'if
descritto nella pagina precedente. Le diverse voci presenti al suo interno hanno una struttura molto simile alla seguente case valore_possibile_N/espressione_possibile_N
. Esse servono per indicare al parser Asp che se dovesse riconoscere al valore indicato dopo il case
come "risposta" alla condizione indicata, esso dovrà svolgere quel blocco di istruzioni. La parte opzionale, serve solamente nel caso che la condizione non venga verificata in nessun case
precedente.
Se presente e nessun case sovrastante avrà verificato la condizione, quest'ultimo verrà eseguito. Adesso vediamo l'ultimo esempio dei nomi realizzato con l'if
adattato al Select Case
.
<% dim strNome strNome = "innovatel" select case strNome case "pippo" response.write "Ciao pippo" case "tizio" response.write "Ciao tizio" case else response.write "Ciao innovatel" end select %>
Ho ancora un'ultima nota da fare sul costrutto in questione prima di passare alla logica ciclica. È possibile valutare diversi valori nello stesso case purché essi vengano separati da una virgola. Adesso vi mostro un breve esempio:
<% dim strNome strNome = "innovatel" select case strNome case "pippo", "tizio" response.write "Non sei innovatel." case else response.write "Ciao innovatel" end select %>