Cercare record: select, where, from, to
L'istruzione select restituisce un array di record (nid). Può essere combinata con le clausole where, from e to.
Esempio:
L'esempio seguente recupera i primi 10 nomi dalla tabella Customer il cui nome contiene la lettera "s":
(select Customer where 'First name' like "s" from 0 to 9).'first name'Clausola where
Il contenuto di una clausola where viene eseguito sul server.
- Per questo non è possibile usare determinate funzioni, come
alertodialog, all'interno di una clausolawhere. - Ninext non ve lo segnalerà: la scheda Errori segnala queste funzioni d'interfaccia, ignorate senza alcun segnale sul server, in un
do as servero in un trigger di tabella (dopo la creazione, dopo la modifica), ma non in una clausolawhere.
From e To
Usando from e to, vengono restituiti solo i record dall'indice 0 al 9.
- Questa possibilità è utile per recuperare i primi x record o per paginare i risultati di una query.
Blocco di esecuzione
Il blocco di esecuzione è la parte che segue il punto alla fine dell'istruzione select. Nell'esempio qui sopra il blocco di esecuzione è 'first name'.
Un blocco di esecuzione più complesso può contenere variabili o addirittura altre istruzioni select. Come per le funzioni, è l'ultima istruzione del blocco a determinare il tipo e il valore dell'array risultante.
Esempio:
Il codice seguente produce un array di numeri che rappresentano il totale delle vendite per ogni cliente:
(select Customer where 'First name' like "s" from 0 to 9).
(
var a := id;
var i := select invoice where customer = a;
sum(i.TOTAL);
)Attenzione
Nei blocchi di esecuzione che accedono ad altre tabelle possono verificarsi anomalie se il codice viene eseguito sul server.
- In questi casi è meglio usare un ciclo
for i in select.
