Calcolare se un valore numerico è compreso tra due valori in VBScript
Qualche giorno fa mi sono trovato a lavorare in SQL ed a utilizzare la funzione BETWEEN per verificare che un parametro di ricerca fosse compreso tra due valori e mi sono reso conto di quanto possa tornare utile in certi casi una funzione del genere anche all'interno del codice di programmazione e non solo in una stringa di ricerca su di un database.
Allo scopo ho scritto una funzione che svolga l'analogo compito utilizzando il linguaggio VBScript.
Dopo questa introduzione "tutta di un fiato" faccio una premessa: ho scelto di impostare questo articolo in VBScript lato client per dare a tutti la possibilità immediata di testarlo, ma lo stesso codice può essere utilizzato anche in ASP piuttosto che in Visual Basic, oppure, addirittura, seguendo la stessa logica che ho seguito io, diventa molto semplice scriverne uno in PHP, Java, Javascript o altri che, come il VBScript, non posseggono nativamente questa funzione tra le predefinite.
Vediamo il codice della funzione personalizzata Between
Function Between(MyValue, StartValue, EndValue)
If IsEmpty(MyValue)Then
Between = 0
ElseIf IsEmpty(StartValue) Then
Between = 0
ElseIf IsEmpty(EndValue) Then
Between = 0
ElseIf IsNumeric(MyValue) = False Then
Between = 0
ElseIf IsNumeric(StartValue) = False Then
Between = 0
ElseIf IsNumeric(EndValue) = False Then
Between = 0
Else
If MyValue >= StartValue And MyValue <= EndValue Then
Between = 1
Else
Between = 0
End If
End If
End Function
la funzione accetta tre parametri: il primo è il numero da valutare se compreso o meno tra il valore di partenza ed il valore di destinazione; il secondo ed il terzo parametro, invece, sono proprio i numeri di partenza e di destinazione.
Utilizzando quindi banalmente la funzione come segue
document.write Between(1, 0, 10)andiamo a verificare che 1 sia compreso tra 0 e 10; naturalmente lo è, quindi il risultato sarà "1" (vero).
In questo caso invece
document.write Between(25, 0, 10)riceveremo "0" (falso) perchè 23 non è compreso tra 0 e 10.
Continuiamo ad esaminare la funzione. Effettuiamo una serie di verifiche condizionali per verificare che i parametri non siano lasciati vuoti e che siano di tipo numerico.
Per non accettare o per filtrare parametri numerici di tipo stringa è possibile utilizzare, all'interno della funzione personalizzata, la funzione di conversione predefinita "CInt".
Per questioni di spazio ho impostato una serie di condizioni per ogni singolo campo, ma per snellezza è possibile utilizzare una singola condizione, separando le singole verifiche con l'operatore "Or".
Vediamo adesso un utilizzo concreto di questa funzione in fase di verifica
Dim numero, inizio, fine
numero = 1
inizio = 0
fine = 10
If Between(numero, inizio, fine) = 1 Then
Alert numero & " è compreso tra " & inizio & " e " & fine
Else
Alert numero & " NON è compreso tra " & inizio & " e " & fine
End If
Specifico il numero da valutare, il valore di partenza e quello di destinazioni in delle variabili con un nome sensato; a questo punto effettuo una condizione utilizzando la nostra brava funzione predefinita come filtro condizionale.







