ID: Variabile FOUND di SelectIntoVariables
copia linkDescrizione
La variabile FOUND è una variabile che viene valorizzata a True se l'istruzione SelectIntoVariables recupera almeno un record. Può essere creata nel modo indicato in figura:

Creazione di variabile FOUND. E' sufficiente scrivere il nome della variabile selezionando nel visual code editor il testo "Select Into Variables". Instant Developer creerà una nuova variabile booleana chiamata Trovati che verrà valorizzata a True se la query della Select Into Variables restituisce almeno una riga.
Le versioni precedenti di Instant Developer valorizzavano la variabile FOUND a True solo se la query restituiva dati ed almeno una delle colonne delle righe restituite dalla query era non nulla. Quindi la variabile FOUND della seguente query
select into variables (Esiste)
set ValoreDato := Valore
from
Dati // Tabella Master
where
ID = ONE
se la proprietà ValoreDato è opzionale e NULL per la riga avente ID=1 non valorizzava a True la variabile Esiste nonostante la query restituisse una riga.
Il fatto che non venisse usato semplicemente il numero di righe restituite dalla query ma venisse controllato che almeno una delle colonne fosse diversa da NULL è dovuto al fatto che vi sono query particolari che restituiscono comunque una riga anche se la query non restituisce valori. Per esempio la query:
select into variables (Esiste)
set ValoreDato := Max(Valore)
from
Dati // Tabella Master
where
ID = C10000000
se la tabella non contiene record aventi ID = 10000000 restituisce comunque una riga con valore NULL nella colonna.
Il comportamento appena descritto si mainfesta solo se tutte le colonne della query sono aggregate. Pertanto nella versione 8.5 di Instant Developer è stato migliorato il calcolo della variabile FOUND che ora funziona nel modo seguente:
- Se tutte le colonne della query contengono espressioni aggregate viene utilizzato il vecchio metodo (si verifica che almeno una colonna restituita dalla query sia diversa da NULL); in questo modo se viene restituita una riga contenente solo valori NULL la variabile FOUND rimane inizializzata al valore False;
- se almeno una colonna della query non contiene espressioni aggregate alla variabile FOUND viene assegnato il valore True se la query restituisce almeno una riga. In tal caso, infatti, non si manifesta il problema descritto sopra per cui il fatto che la query restituisca almeno una riga è sufficiente per indicare che la query restituisce dati validi.
Funzionalità interessate
L'uso della variabile FOUND legata ad un'istruzione di tipo SelectIntoVariables.
Ultima modifica: 23/03/2021 / Validità: da 8.5.3800