CISA FotoGallery

Statistiche

Tot. visite contenuti : 913824
Home Articoli tecnici Forms List box e combo box

List box e combo box

 Access ha un’ampia varietà di controlli che semplificano l’utilizzo delle ns. maschere. Due controlli in particolare ci permettono di selezionare un valore piuttosto che digitarlo: la casella di riepilogo e la casella combinata (listbox e combobox). Il vantaggio più evidente nell’utilizzare questi due controlli è quello che sicuramente scegliendo un valore da un elenco non ci potrà essere errore nel valore immesso.

La casella di riepilogo è un elenco di valori in cui si può effettuare una selezione. Nella casella di riepilogo l’elenco o lista è sempre visualizzato e le dimensioni in altezza possono essere variate in modo da visualizzare più o meno righe.

La casella combinata non è altro che una casella di testo associata ad una casella di riepilogo (appunto combinata). Viene visualizzata come una casella di testo, occupa meno spazio nella maschera e a destra compare una freccetta. Facendo click su di essa appare una lista a discesa su cui effettuare la scelta.

Sia nella casella di riepilogo che nella combinata ciascun elenco è costituito da una o più colonne la cui numerazione inizia da 0: la prima colonna è la 0, la seconda è la 1 e così via. Le colonne possono essere visualizzate con o senza intestazioni. Anche per le righe vale lo stesso criterio come per le colonne, soltanto che se visualizziamo delle colonne con intestazione, la riga 0 è quella dell’intestazione. La diversità principale della casella combinata rispetto alla casella di riepilogo sta nel fatto che è possibile controllare se si stanno immettendo dei nuovi valori. Infine per visualizzare tutti i valori delle due caselle bisogna scorrere i relativi elenchi.

Quando usare una casella di riepilogo: Abbiamo già visto che l’elenco è sempre visualizzato ed il valore che essa può assumere è solo e soltanto quello dei valori contenuti nell’elenco. Per spostarsi al primo dei valori contenuti nell’elenco basta digitarne la prima lettera. Quando una maschera viene utilizzata per immettere o modificare dei dati non è possibile aggiungere un valore non incluso nell’elenco.

Quando usare una casella combinata: Essa appare come già scritto come una casella di testo a cui si aggiunto sulla destra una freccetta rivolta verso il basso. La ricerca questa volta è più sofisticata in quanto avviene alla digitazione di uno o più caratteri. A differenza pertanto della casella di riepilogo il cursore non si ferma al primo rigo che inizia con il ns. carattere digitato, ma man mano che si aggiungono altri caratteri si va spostando puntando al rigo che li contiene tutti. A questo si aggiunge che la casella combinata gode della proprietà “Solo in elenco” e dell’evento “Su non in elenco” la cui combinazione ci consente o ci impedisce l’inserimento di nuovi dati nell’elenco.

In una casella combinata o in una casella di riepilogo è possibile costruire cinque tipi di elenco di valori. Due sono possibili direttamente con l’autocomposizione, gli altri andando a modificare le caselle dopo averle create:

Elenco da Autocomposizione:

-) L’elenco proviene da qualunque tabella o query.

-) Possono essere immessi dei valori proveniente da un elenco creato dall'utente.

Altri tipi di elenco:

-) E’ possibile creare un elenco di campi che visualizzi i nomi dei campi di una query o di una tabella;

-) E’ possibile visualizzare un elenco di valori proveniente da una istruzione SQL SELECT creata dall’utente;

-) E’ possibile visualizzare il valore restituito da una funzione creata con VBA.

Creare una casella combinata o una casella di riepilogo con l'autocomposizione

In visualizzazione struttura della maschera facciamo click col tasto destro del mouse in un punto e scegliamo dal menu che ci appare la voce "Casella degli strumenti". Accertiamoci che il tasto "bacchetta magica" sia attivo e scegliamo il controllo "Casella combinata". Spostandoci sulla maschera il ns. mouse assumerà l'aspetto come in figura.

 



A questo punto dopo aver dimensionato, sempre con il mouse, la casella inizierà la procedura guidata, come in figura.

 



La procedura guidata mostra due opzioni come già si era detto. Nella prima si permette una scelta dell'origine dei valori da una tabella o query. Nella seconda invece abbiamo la possibilità di immettere un ns. elenco di valori.

Opzione 1: Ricerca valori in una tabella o query da parte della casella combinata

Facciamo click su Avanti. Comparirà un'altra maschera in cui possiamo scegliere i valori da una tabella, da una query o da entrambe.

 




A questo punto dopo avere scelto la ns. origine dei dati, dovremo stabilire quali campi della tabella inserire nella ns. casella combinata.

 



Ci accorgiamo che c'è qualcosa di insolito. Nell'elenco dei campi disponibili ne manca uno. Ebbene quel campo che manca è in realtà un campo memo che Access esclude.

Si selezionano pertanto i campi, in questo caso accettiamo tutti quelli che sono disponibili e passiamo avanti.

 



L'autocomposizione ci dà ora la possibilità di stabilire la larghezza delle colonne...

 



Di memorizzare il valore e di stabilire quale campo scegliere per dare alla riga un valore univoco... ed infine di scegliere l'etichetta per la casella combinata.



Dopo aver pertanto creato la ns. casella combinata vediamone un po' la tabella delle proprietà.



Le voci che maggiormente ci debbono interessare sono:

-) Tipo origine riga: in cui stabiliremo se Tabella o Query;
-) Origine riga: in cui abbiamo la ns. stringa SQL che può essere visualizzata tramite il pulsante [...] come griglia QBE;
-) Numero colonne: che stabilisce quante colonne visualizzare nella ns. casella
-) Intestazione colonne: che valorizzeremo con un Sì o un No;
-) Larghezza colonne: che dimensioneremo secondo le ns. necessità. A tale proposito se dimensioniamo una colonna con ampiezza 0 cm, tale colonna non sarà visibile pur rimanendo nella struttura della griglia QBE. Questo fatto è importante quando si vuole associare la casella combinata ad un ID (generalmente Duplicati Impossibili) per avere l'univocità delle righe in elenco, ma nel contempo non lo si vuole visualizzare. Il classico esempio è quello di una combo che ci restituisce il Cognome ed il Nome di una tabella con campi anagrafici. Il primo campo potrebbe essere in questo caso il Codice Fiscale (univoco) messo con ampiezza 0 cm, e poi a proseguire il campo Cognome e Nome. Il risultato sarà che digitando il Cognome, la ns. casella punterà al primo cognome della lista associato però ad un univoco Codice Fiscale.
-) Colonna associata: ci indica quale colonna è associata, che potrebbe non essere la prima colonna. Nell'esempio di poco fa si potrebbe mettere il Codice Fiscale in terza colonna, dopo Cognome e Nome, portarlo ad ampiezza 0 cm ed otterremo sempre lo stesso risultato. E' da notare che mentre la proprietà Column() numera le colonne partendo da 0, nella proprietà "Colonna associata" la colonna 1 è la 1a colonna.
-) Righe in elenco: per default sono 8 le righe che saranno mostrate, ma possiamo inserire il numero che vogliamo.
-) Solo in elenco: a cui daremo il valore Sì o No. Con il valore Sì obbligheremo l'utente e scegliere solo e soltanto un valore dall'elenco, mentre con No diamo la possibilità di digitare un diverso valore. In questo caso però questo valore viene memorizzato nella tabella o query origine della ns. maschera e non nell'Origine riga della casella combinata. Più avanti vedremo come aggiungere un nuovo record all'origine riga di una casella combinata.

Opzione 2: Immissione personalizzata - Elenco valori

Nel caso avessimo un numero limitato di valori possiamo pre-costruire il ns. elenco scegliendo nella tavola delle proprietà della ns. casella combinata come Tipo origine riga l'opzione "Elenco valori" ..

 



e nella proprietà "Origine riga" immettiamo le nostre voci separate dal punto e virgola oppure dal separatore di elenco che abbiamo nell'Impostazione Internazionale del Pannello di Controllo di Windows. Noteremo che se il ns. elenco è a più colonne le voci si distribuiranno da sinistra verso destra e dall'alto verso il basso. Se vogliamo che due o più valori stiano tutti sul rigo di una colonna dobbiamo racchiudere i valori tra virgolette.

 

 

Infatti:

 

 




Ricerca di un record

Uno degli utilizzi più frequenti per una casella combinata o per una casella di riepilogo è quello di scegliere una voce dall'elenco e poter visualizzare così il record corrispondente.

Supponiamo di avere una maschera in visualizzazione maschera singola con i controlli in maschera associata alla ns. tabella con record di tipo anagrafico: Cognome, Nome Data di nascita etc.. Se volessimo puntare ad un preciso record dovremmo scorrere con dei pulsanti i record della tabella origine fino ad arrivare al record che ci interessa. Ci viene in aiuto in questo caso indifferentemente la casella combinata o di riepilogo per ottenere questo risultato.

Nella visualizzazione struttura della ns. maschera all'interno dell'intestazione della maschera facciamo click con il tasto destro e creiamo la casella. Access ci viene subito in aiuto con l'autocomposizione e ci mostra una scheda in cui possiamo fare delle scelte.

 




Ci accorgiamo che questa volta Access ci fornisce un'ulteriore opzione a quelle che già conoscevamo: "Trova un record nella maschera basato sul valore selezionato nella casella combinata". questo perchè la maschera ha un origine e controlli associati.

Facciamo click su questa opzione e poi su Avanti

Selezionamo tutti i campi disponibili e poi facciamo click su Avanti

 



Notiamo che Access già imposta il criterio di nascondere la ns. colonna chiave (imposterà a 0 la dimensione).

La casella "Ricerca" è stata creata e se noi scegliamo dall'elenco un elemento esso punterà direttamente al record corrispondente.

 

 

Cosa ha fatto Access? Semplicemente ha inserito del codice nell'evento "Dopo aggiornamento" della casella combinata che utilizza la proprietà Bookmark per puntare al record scelto nell'elenco.

 

 

Aggiungere un record all'origine di una casella combinata (Ovvero Aggiungi un posto a tavola)

Come già si era detto si possono aggiungere nuovi record alla tabella o query sottostante la ns. casella combinata.

Avremo bisogno di:

-) Impostare a Sì la proprietà Solo in elenco
-) Gestire l'evento "Su non in elenco" (NotInList)

Impostare a Sì la proprietà Solo in elenco della ns. casella combinata, significa, come detto già prima, obbligare l'utente a scegliere uno solo delle voci presenti nella casella. Nel caso in cui venga digitato una voce non presente in elenco le possibilità sono solo due: errore nella digitazione, oppure dare la possibilità di inserire una nuova voce nell'elenco della casella.

Per riprodurre l'esempio sono state create due tabelle:

-) tbl_FreqNg con IdFrequentatori (contatore) , NickName (testo), SquadraId (Numerico)
-) tbl_Squadre con IdSquadra (contatore), NomeSquadra (Testo)

 

Le due tabelle sono in relazione 1 --> con join IdSquadra--> SquadraId

-) Aggiungiamo una maschera con Origine record: tbl_FreqNG
-) Nella maschera inseriamo una casella combinata con le seguenti proprietà:

 




Intercettiamo la digitazione dell'utente per stabilire se è il caso di inserire un nuovo record oppure è un errore di digitazione:

 



Se l'utente sceglie No il codice ricorda che si deve scegliere una voce dall'elenco

 




Se viene scelto Sì la tabella sottostante la casella combinata viene aggiornata e la nuova voce inserita nell'elenco.

(Stranezza: se metto Juventus aggiunge solo degli asterischi e punti esclamativi ;-D )

Ecco inserendo correttamente Napoli cosa accade:

 




Il codice: