Redazione PMI-dome |
27 dicembre 2010
Spesso si presenta la necessità di dare
una numerazione crescente ai record.
In casi particolari, questa numerazione
potrebbe essere diversa dal conteggio naturale,
ad esempio, potrebbe essere negativa, oppure
considerare solo i numeri pari, o ancora crescere
secondo la potenza di due, o addirittura incrementarsi
solo se un campo contiene un determinato
valore. Possiamo ottenere tutte queste
meraviglie grazie ad una banale funzione con al
suo interno una variabile statica. Questo tipo di
variabile ha la particolarità di non essere rilasciata
all’uscita di una funzione, quindi il valore contenuto
resta disponibile anche nelle successive
chiamate. Per questo motivo, per ricominciare
il conteggio dopo il suo primo utilizzo, la variabile
statica va azzerata manualmente, altrimenti
mantiene l’ultimo assegnamento fino alla chiusura
di Access. Per controllare la variabile e per
rendere speciale il conteggio della nostra funzione,
utilizzeremo alcuni parametri. Il numero e la
natura di questi dipenderà dalle nostre esigenze
ma, un parametro dovrà essere sempre costituito
da un campo qualsiasi. Le query eseguono le
funzioni esterne una volta sola, se non contengono
parametri o se i parametri sono valori fissi, se
invece uno dei parametri è dinamico, la funzione
viene richiamata ad ogni record, consentendo
il conteggio. Una volta terminata la funzione,
potremo impostarla prima e dopo l’esecuzione
di una query e inserirla all’interno di un campo
calcolato.
Il nuovo modulo
Apriamo un database esistente e nella sezione
Crea del Ribbon scegliamo
Modulo: si aprirà
l’Editor di Visual Basic. Nella proprietà
Name del modulo scriviamo
basEnumera. Nella pagina bianca scriviamo
Public Function Enumera(Campo) e premiamo
Invio. Salviamo il modulo con il nome
basEnumera.
La variabile statica

Scriviamo la dichiarazione di
Conteggio. L’istruzione che dichiara le variabili statiche è
Static. Questa si comporta come
Dim, quindi possiamo dichiarare statici tutti i tipi di variabili normalmente utilizzati in forma dinamica. Se prevediamo un conteggio elevato (ad esempio esponenziale) usiamo
Double.
L’incremento di 1

Aggiungiamo l’istruzione per incrementare il contatore, per il momento impostiamo un incremento fisso di un’unità. Nella riga successiva assegniamo il risultato del conteggio alla funzione. A questo punto possiamo provare ad eseguire la funzione nella finestra immediata e scriviamo:
?Enumera(1) e scegliamo
Invio.
Parametro incrementale

Per impostare l’incremento del contatore,
possiamo aggiungere un ulteriore parametro
Passo alla funzione. Sostituiamo
al numero
1 dell’incremento questa variabile, in
modo da ottenere l’istruzione
Conteggio = Conteggio
+ Passo. Variando il valore di
Passo cambierà
anche l’incremento.
Parametro del tipo
Ci serve un conteggio in negativo o eseguito
tramite un operatore matematico diverso,
come ad esempio una sottrazione o divisione?
Basta aggiungere all’intestazione della funzione
l’opportuno parametro
Tipo, di tipo
Integer, con
la sintassi proposta nell’esempio. Grazie a questo
imposteremo comportamenti diversi
Comportamento
All’interno della funzione scriviamo
un’istruzione
Select Case, in grado di analizzare
il contenuto del parametro
Tipo.
Impostiamo il caso
numero 1 e nella riga sottostante
spostiamo l’istruzione di incremento addizionale
precedentemente scritta. Chiudiamo
l’istruzione con
End Select.