L’editor di query serve a costruire interrogazioni sui dati del gestionale senza scrivere istruzioni SQL: si scelgono le tabelle da un elenco, si trascinano sull’area di lavoro, si spuntano i campi da vedere e si aggiungono le condizioni. Il programma scrive per conto suo l’istruzione, la esegue e mostra i dati in una griglia da cui si esporta in Excel.
Le interrogazioni si salvano con un codice e restano a disposizione: si possono rieseguire in qualsiasi momento, mostrare nella dashboard con il gadget Interrogazioni Utente, usare come sorgente dati di una stampa e scambiare con altre installazioni tramite un file.
Chi conosce l’SQL può scrivere l’istruzione a mano con la casella Query scritta a mano: in quel caso l’editor non tocca più il testo e non pone limiti a quello che si può scrivere.
Si trova in Statistiche utente → Editor di Query.
1. Prima di cominciare: Carica o Varia
L’editor si comporta come tutti gli archivi del gestionale: appena aperto è in interrogazione, cioè in sola lettura.
- per costruire una query nuova si preme Carica (F4);
- per modificarne una esistente la si cerca con Cerca (F9) e si preme Varia (F3).
Finché non si è premuto uno dei due, sopra l’area di lavoro compare la striscia gialla “Sola lettura: premi Varia per modificare questa query” e l’area non risponde: le tabelle non si trascinano, le spunte sui campi non si attivano, le griglie non si modificano. Cliccando lo stesso, in fondo alla finestra compare “Per modificare la query premi prima Varia.”
⚠️ È il momento più facile da sbagliare. Senza il blocco si finirebbe per disegnare un’intera query e scoprire solo al salvataggio che non era in modifica, perdendo il lavoro. Se l’area sembra “morta”, guardare la striscia in alto.
Restano invece sempre disponibili, anche in sola lettura, le operazioni che non cambiano nulla: eseguire la query e guardarne i dati, esportarli, ingrandire l’area di lavoro, scorrere i campi dentro i riquadri.
Codice e Descrizione identificano la query: il codice accetta fino a 10 caratteri, la descrizione fino a 50. Il codice non si può cambiare dopo il salvataggio: per rinominare una query si usa Salva copia dalla barra dell’archivio, oppure si esporta e si reimporta con un codice nuovo (§ 9).
2. La finestra
La finestra è divisa in quattro schede.
| Scheda | Contenuto |
|---|---|
| Struttura | l’elenco delle tabelle a sinistra, l’area di lavoro al centro con i riquadri e i collegamenti, la griglia dei campi della query in basso |
| Filtri | le condizioni sui dati e, sotto, le condizioni sui totali dei raggruppamenti |
| SQL | l’istruzione, con i colori della sintassi, e i comandi per copiarla, scambiarla su file e collegarla a una stampa |
| Risultato | i dati restituiti dall’ultima esecuzione, con i comandi Esegui, Interrompi, Esporta in Excel e Esporta in CSV |
In fondo alla scheda Struttura una riga di stato commenta l’ultima operazione (“Aggiunta la tabella CLIENTI.”, “Creato il collegamento…”). Sotto l’istruzione, nella scheda SQL, compaiono le segnalazioni: in grigio quelle che non impediscono l’esecuzione, in rosso quelle che la bloccano.
3. Le tabelle e i collegamenti
Aggiungere una tabella
L’elenco a sinistra riporta tutte le tabelle del gestionale con la loro descrizione (Anagrafica clienti, Causali contabili…); la casella in cima cerca sia nella descrizione sia nel nome. Una tabella si porta nella query trascinandola sull’area di lavoro oppure con un doppio clic.
Ogni tabella diventa un riquadro con l’elenco dei suoi campi: i campi che fanno parte della chiave sono in grassetto e color oro, e passando il mouse su un campo compaiono descrizione e tipo. Il riquadro si sposta trascinandone il titolo e si ridimensiona dall’angolo in basso a destra; se i campi non ci stanno tutti, le frecce in alto e in basso a destra li scorrono (anche con la rotellina del mouse). La posizione dei riquadri viene salvata insieme alla query.
I collegamenti
Quando si aggiunge una tabella, il programma cerca da solo come collegarla a quelle già presenti, usando le relazioni dichiarate nel gestionale (sono oltre cinquecento). Il collegamento compare come una linea fra i due campi, con un quadratino al centro che indica il tipo.
Con il tasto destro sulla linea si sceglie che cosa tenere:
| Voce | Effetto |
|---|---|
| Solo le righe abbinate | escluse le righe che non hanno corrispondenza nell’altra tabella |
| Tutte le righe di … (prima tabella) | tenute tutte le righe di quella tabella, anche senza corrispondenza: i campi dell’altra restano vuoti |
| Tutte le righe di … (seconda tabella) | come sopra, dal lato opposto |
| Elimina il collegamento | toglie la linea |
Un doppio clic sulla linea passa da un tipo all’altro senza aprire il menu.
Se fra due tabelle esistono più collegamenti possibili – capita con le causali contabili, che si richiamano fra loro su campi diversi – viene scelto il primo e la riga di stato avvisa: “Per CAU_CONT esistono piu’ collegamenti possibili: e’ stato scelto il primo, controllalo con un doppio clic sulla linea.” Conviene sempre verificarlo.
Collegare a mano
Il collegamento si traccia anche a mano: si trascina da un campo di un riquadro a un campo di un altro. Se fra le due tabelle un collegamento esiste già, la coppia di campi viene aggiunta a quello.
Tabelle non collegate
Una tabella che non risulta collegata a nessuna altra viene disegnata con il bordo rosso tratteggiato, e nella scheda SQL compare in rosso “La tabella … non e’ collegata alle altre: aggiungere un collegamento oppure toglierla dalla query.”
⚠️ Finché c’è una tabella scollegata il pulsante Esegui resta spento. Non è una limitazione ma una protezione: una query con tabelle non collegate restituirebbe ogni riga della prima combinata con ogni riga della seconda, cioè numeri privi di senso e tempi lunghissimi.
La stessa tabella due volte
Con il tasto destro su un riquadro, la voce Aggiungi un’altra copia di questa tabella inserisce una seconda copia della stessa tabella, che prende un nome distinto (CAU_CONT, CAU_CONT_2). Serve quando un dato rimanda a un altro della stessa tabella: per esempio una causale contabile e la causale di storno collegata, da mostrare l’una accanto all’altra.
La voce Usa come tabella principale stabilisce da quale tabella parte la lettura: conta quando si usano i collegamenti che tengono tutte le righe di un lato.
4. I campi
Un campo entra nella query con un clic sulla casella accanto al suo nome, nel riquadro; il doppio clic sul titolo del riquadro aggiunge tutti i campi della tabella. I campi scelti compaiono nella griglia in basso, dove si imposta il resto.
| Colonna | A cosa serve |
|---|---|
| Tabella e Campo | da dove viene il dato; non si modificano da qui |
| Descrizione | la descrizione del campo nel gestionale |
| Intestazione | il titolo della colonna nel risultato; se vuoto resta il nome del campo |
| Funzione | Somma, Conteggio, Conteggio distinti, Media, Minimo, Massimo (§ 5) |
| Raggruppa | usata insieme alle funzioni |
| Ordine | il livello di ordinamento: 1 per il primo criterio, 2 per il secondo e così via; 0 o vuoto significa nessun ordinamento |
| Decrescente | ordina dal più grande al più piccolo |
| Mostra | togliendo la spunta il campo non compare fra le colonne, ma resta utilizzabile per ordinare |
L’ordine delle colonne nel risultato è quello della griglia: si cambia con i pulsanti Su e Giù. Togli elimina il campo dalla query (la spunta nel riquadro si spegne di conseguenza).
L’intestazione viene normalizzata nell’istruzione: maiuscola, senza spazi né accenti (Totale fatturato diventa TOTALE_FATTURATO). È il nome che si vedrà come titolo della colonna.
5. Raggruppamenti e totali
Per ottenere un riepilogo invece dell’elenco, si imposta una Funzione sui campi da totalizzare e si lasciano senza funzione i campi per cui raggruppare.
Esempio: per avere il fatturato per cliente si mette Somma sul totale documento e si lascia senza funzione la ragione sociale. Il programma raggruppa da solo su tutti i campi mostrati che non hanno una funzione – è l’errore più comune quando si scrive l’istruzione a mano, e qui non può capitare.
Le funzioni disponibili sono SUM (somma), COUNT (conteggio), COUNT DISTINCT (conteggio dei valori diversi), AVG (media), MIN e MAX.
Le condizioni che riguardano i totali così calcolati – “solo i clienti con fatturato oltre 10.000” – non vanno fra le condizioni sui dati ma nella griglia Condizioni sui totali, in basso nella scheda Filtri: una condizione sui dati esclude le righe prima della somma, una sui totali esclude i gruppi dopo averla calcolata.
6. Le condizioni
Nella scheda Filtri, il pulsante Aggiungi inserisce una riga; ogni riga è una condizione.
| Colonna | A cosa serve |
|---|---|
| ( e ) | parentesi, per raggruppare le condizioni |
| Tabella e Campo | a cosa si applica la condizione |
| Funzione | solo per le condizioni sui totali |
| Condizione | l’operatore (vedi sotto) |
| Valore e Valore 2 | i termini di confronto; il secondo serve solo a BETWEEN |
| Legame | AND oppure OR verso la riga successiva |
Gli operatori sono =, <>, >, >=, <, <=, LIKE (contiene), NOT LIKE, IN, NOT IN, BETWEEN (da… a…), IS NULL (non valorizzato) e IS NOT NULL (valorizzato).
Sui valori non serve alcuna precauzione: gli apostrofi vengono gestiti dal programma (si può scrivere tranquillamente %d'%), le date si possono scrivere all’italiana (31/12/2026) e vengono tradotte da sole, i numeri accettano sia il punto sia la virgola. Con IN e NOT IN i valori si scrivono separati da virgola.
Per confrontare con un valore chiesto al momento dell’esecuzione si scrive [PAR:NOME] al posto del valore. Il parametro dell’azienda, [PAR:SYS_FILTER], è sempre valorizzato dal programma (§ 8).
7. L’istruzione SQL
La scheda SQL mostra l’istruzione che il programma costruisce mentre si lavora, con i colori della sintassi. In costruzione guidata è in sola lettura, su sfondo grigio: si modifica agendo sulle altre schede.
Sotto l’istruzione compaiono le segnalazioni. In rosso quelle che impediscono l’esecuzione (tabelle scollegate, collegamenti senza campi); in grigio quelle che avvisano soltanto, per esempio “Nessun campo selezionato: la query restituisce tutte le colonne.”
La barra della scheda offre:
| Comando | Effetto |
|---|---|
| Copia l’istruzione | mette l’istruzione negli appunti |
| Importa da file | carica una definizione da un file .qrxml |
| Esporta su file | salva la definizione in un file .qrxml |
| Usa in una stampa | prepara il riferimento da indicare nell’anagrafica stampe (§ 9) |
Scrivere l’istruzione a mano
Spuntando Query scritta a mano, in alto, l’istruzione diventa modificabile e il programma smette di rigenerarla: da quel momento vale solo quello che c’è scritto, e non ci sono limiti a ciò che si può scrivere (sottoquery, unioni, funzioni particolari).
⚠️ Togliendo la spunta l’istruzione viene riscritta dal programma e quella scritta a mano si perde. Se serve conservarla, copiarla prima con Copia l’istruzione o esportarla su file.
In scrittura a mano non viene aggiunto nulla in automatico, filtro azienda compreso: se serve, va scritto [PAR:SYS_FILTER].
8. Eseguire e vedere i risultati
Il pulsante Esegui, nella scheda Risultato, lancia l’interrogazione. L’esecuzione avviene in secondo piano: il programma resta utilizzabile e il pulsante Interrompi la ferma.
Il campo Max righe limita quante righe leggere, di norma 1000: serve a non attendere inutilmente quando si sta mettendo a punto la query. Se il limite viene raggiunto, la riga di stato lo dice – “1000 righe (elenco troncato al limite impostato) in 2,3 secondi”. Con 0 non c’è limite.
I dati si portano fuori con Esporta in Excel o Esporta in CSV; il file viene aperto subito dopo la generazione. Senza aver eseguito la query compare “Non ci sono dati da esportare: eseguire prima la query.”
Il filtro sull’azienda
Le tabelle del gestionale contengono i dati di tutte le aziende gestite. Il programma aggiunge da solo la condizione sull’azienda in uso, nel punto giusto: sulla tabella principale, oppure dentro il collegamento quando si sono chieste “tutte le righe” di un lato – messa nel posto sbagliato, quella condizione farebbe sparire proprio le righe che si volevano tenere.
Non c’è quindi bisogno di indicare l’azienda a mano, e la query salvata resta valida per qualunque azienda: eseguita da un’altra ditta, restituisce i dati di quella ditta.
9. Salvare e riusare la query
Si salva come in ogni archivio, con Salva. La definizione viene registrata nel database insieme all’istruzione.
⚠️ Una definizione molto grande non si salva. Il limite è di 124.000 caratteri complessivi e viene raggiunto solo con query molto estese; in quel caso compare “La definizione della query e’ troppo lunga per essere salvata (… caratteri, il massimo e’ 124000). Ridurre il numero di tabelle, campi o condizioni.” e il salvataggio non avviene.
Una query salvata si riusa in tre modi.
Nella dashboard
Il gadget Interrogazioni Utente della dashboard mostra il risultato di una query salvata: nella configurazione del gadget si indica il Codice Query, il titolo, i minuti di aggiornamento e, volendo, le intestazioni delle colonne. Con un doppio clic sul gadget i dati vanno in Excel.
Il gadget sa valorizzare solo il parametro dell’azienda. Una query che usa altri parametri
[PAR:…]non funziona nel gadget: per la dashboard conviene una versione senza parametri.
Come sorgente di una stampa
Il pulsante Usa in una stampa prepara il riferimento [QUERY:CODICE] e lo copia negli appunti. Quel riferimento va scritto nel campo Query della stampa, in Utilità → Amministrazione → Stampe, al posto del nome del file .sql: da quel momento la stampa prende i dati dalla query salvata, e per cambiarli basta modificare la query invece di intervenire sui file.
Se la query non è ancora stata salvata compare “Salva prima la query: serve il suo codice.”
Su file
Esporta su file e Importa da file scambiano la definizione completa (tabelle, collegamenti, campi, condizioni, istruzione) in un file .qrxml: è il modo per portare una query da un’installazione all’altra o per conservarne una copia prima di modifiche importanti.
10. Le query create con l’editor precedente
Le query salvate con l’editor precedente continuano a funzionare e si aprono normalmente. Due cose da sapere.
- L’istruzione salvata non viene riscritta all’apertura. Viene mostrata così com’era, e viene rigenerata solo quando si modifica davvero qualcosa: una query in uso non cambia comportamento per il solo fatto di essere stata aperta.
- I collegamenti non erano memorizzati dall’editor vecchio: vengono ricostruiti dalle relazioni del gestionale, e la riga di stato avvisa – “Query creata con l’editor precedente: i collegamenti fra le tabelle sono stati ricavati dallo schema. L’istruzione salvata e’ stata lasciata invariata.” Se erano presenti collegamenti ambigui il messaggio lo indica: conviene controllarli prima di salvare.
Per la stessa ragione, nelle query vecchie il filtro sull’azienda non viene aggiunto: era assente prima e aggiungerlo cambierebbe i dati restituiti. Se la query filtra già l’azienda a modo suo, va bene così; se non lo fa e deve farlo, aggiungere la condizione [PAR:SYS_FILTER] a mano.
11. Promemoria
- Premere Carica o Varia prima di disegnare: in interrogazione l’area di lavoro non risponde, e la striscia gialla in alto lo ricorda.
- Il pulsante Esegui spento significa query incompleta: la spiegazione è in rosso nella scheda SQL, quasi sempre una tabella non collegata.
- Controllare i collegamenti proposti quando la riga di stato avvisa che ce n’erano più d’uno: il primo scelto potrebbe non essere quello giusto.
- Per un riepilogo servono le funzioni, non l’elenco: Somma sui valori, nessuna funzione sui campi per cui raggruppare.
- Condizioni sui dati e condizioni sui totali sono cose diverse: le prime escludono righe, le seconde escludono gruppi già totalizzati.
- Non serve indicare l’azienda: la mette il programma, nel punto corretto anche con i collegamenti che tengono tutte le righe di un lato.
- Togliendo la spunta Query scritta a mano l’istruzione scritta a mano si perde: copiarla prima.
- Il limite Max righe serve solo alla prova: ricordarsi di alzarlo, o azzerarlo, quando si esporta un elenco che deve essere completo.
- Prima di modifiche importanti esportare la query su file
.qrxml: è la copia di sicurezza più semplice. - Una query usata da un gadget o da una stampa è in uso: modificarla cambia anche quello che vedono gli altri.