FileMaker: il comando Trova, istruzioni per l’uso

Uno dei primi proverbi che i nostri nonni ci hanno insegnato è il famoso “chi cerca, trova”. E sappiamo bene che è proprio così. A volte però, nell'universo Filemaker, questa profonda verità pare vacillare: per quanto ci impegniamo, non riusciamo a trovare ciò di cui abbiamo bisogno.

Perché? Beh, diciamolo: la colpa non è certo di Filemaker, nè tantomeno dei nostri nonni che ci hanno tramandato queste pillole di saggezza.

Non troviamo quello che cerchiamo perché spesso non usiamo nel modo corretto le chiavi di ricerca messe a disposizione da Filemaker. Insomma: cerchiamo, sì, ma non utilizziamo le lenti giuste.

Le modalità di ricerca in FileMaker

Al fine di potervi dare qualche dritta su come impostare le vostre ricerche, prendiamo come riferimento la serie di record qui sotto:

img

Partiamo con l’analizzare le diverse modalità di ricerca.

La prima cosa da sapere è che nel momento in cui si passa alla modalità Trova, Filemaker attiva di default l’opzione Includi.

img2

Questo vuol dire che se facciamo una ricerca digitando la parola rossi nel campo cognome_nome, otterremo come risultato della nostra ricerca i record Rossi Mario, Rossi Guido, Rossini Antonio e Rossiato Luca.

È importante ricordare che FileMaker gestisce le ricerche in maniera estesa, motivo per cui, cercando Rossi, troveremo anche Rossini e Rossiato. Per limitare la ricerca al solo Rossi dovremo usare alcuni accorgimenti che esamineremo più avanti.

img3

Per contro, se in modalità Trova digitiamo la parola rossi nel campo cognome_nome e prima di dare l’invio attiviamo l’opzione Ometti, otteniamo come risultato tutti i record ad esclusione di quelli che corrispondono alla ricerca. Ovvero, tutti i record tranne Rossi Mario, Rossi GuidoRossini Antonio e Rossiato Luca.

img5

Questa opzione è ovviamente gestibile anche attraverso uno script, che possiamo creare in due modi. Il primo, in maniera analoga all'interfaccia utente, cioè passando alla modalità Trova, inserendo i valori ed eseguendo la ricerca.

Per far includere i risultati della ricerca NON occorre richiamare alcun comando oltre al Passa al modo trova:

img6

Per far escludere i risultati della ricerca occorre inserire, dopo il comando Passa al modo trova, il comando Ometti il record:

img7

La seconda strategia è più rapida, ma anche più astratta. Consiste nell'utilizzare la sola istruzione Esegui la ricerca[] inserendo i parametri direttamente nel comando:

img8

Anche in questo caso possiamo specificare quante richieste di ricerca vogliamo. Ciascuna richiesta funziona in modo OR, ovvero vengono trovati i record che soddisfano i requisiti di almeno una delle richieste. In ciascuna richiesta possono essere inseriti più parametri, che devono essere soddisfatti tutti per far sì che un record compaia nel foundset. Per ciascuna richiesta inoltre possiamo specificare se i record che soddisfano i parametri debbano essere trovati o, viceversa, omessi. In ogni parametro possiamo inserire gli operatori di ricerca di FileMaker, che esamineremo nel dettaglio più avanti.

Oltre alla modalità Includi/Ometti c’è una ulteriore modalità di ricerca, che può essere utilizzata anche  in concomitanza e combinazione con la prima: Limita gruppo trovato e Amplia gruppo trovato.

Facciamo un esempio. Passiamo in modalità Trova e digitiamo la parola ro nel campo cognome_nome.

Otterremo come risultato tutte le parole che iniziano con ro:

img9

Ora, rilanciando una nuova ricerca, digitiamo la parola Marco nel campo cognome_nome. Anziché dare invio, clicchiamo invece sul comando Richieste – Limita gruppo trovato. Otterremo:

img10

img11

In pratica, abbiamo limitato il gruppo trovato con la prima ricerca attraverso una seconda condizione. Lo stesso procedimento vale all’inverso per il comando Amplia gruppo trovato.

Rifacciamo tutto il giro: passiamo in modalità Trova e digitiamo la parola ro nel campo cognome_nome.

Otteniamo il seguente risultato:

img12

A questo punto se rilanciamo una nuova ricerca, digitiamo la parola Marco nel campo cognome_nome, e anziché dare invio clicchiamo sul comando Richieste – Amplia gruppo trovato.

Otterremo:

img13

In questo modo, riprendendo l’esempio sopra riportato, abbiamo aggiunto nel gruppo di record trovato con la chiave di ricerca ro (tutti i record le cui parole iniziano con ro) i record che pur NON contenendo le iniziali ro contengono la parola Marco (e quindi è stato aggiunto il record Azzurro Marco).

Anche le funzioni Limita gruppo trovato e Amplia gruppo trovato sono gestibili via script con gli omonimi comandi.

Infine, relativamente alle varie modalità di ricerca, c’è la possibilità di impostare contemporaneamente più ricerche con il comando Nuova richiesta.

Anche in questo caso, partiamo da un esempio. Passiamo in modalità Trova e digitiamo la parola Rossi nel campo cognome_nome. Anziché dare invio, clicchiamo sul comando Nuova richiesta (Richieste – Aggiungi nuova richiesta) e digitiamo la parola Marco nel campo cognome_nome.

img14

img15

Il risultato sarà il seguente:

img16

Anche la modalità sopra riportata (Nuova ricerca) è ovviamente gestibile tramite script:

img17

Raffinare una ricerca con gli operatori

Abbiamo visto che in FileMaker una ricerca restituisce tutti i record che contengono il testo da noi inserito nel campo, anche se abbiamo scritto solo poche lettere. Questo fa sì che spesso ritroviamo tra i risultati molti record inutili. Per perfezionare le ricerche FileMaker ci mette a disposizione una serie di operatori, accessibili dall’area di stato.

Gli operatori sono:

=

==

!

<

>

//

?

@

#

*

\

“”

*”“

~

img18Di questi, non tutti vengono comunemente utilizzati: ad esempio, l'operatore "~ " viene usato solo in giapponese. In linea di massima, gli operatori funzionano con tutti i tipi di campo: vediamoli ora in dettaglio.

Ricerca di campi testo

Digitando ro 

e dando invio si trova ROSSI MARCO, BIANCHI ROBERTO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA, ma non VERDI PIETRO, NERI PATROCLO, AZZURRO MARCO.

Comportamento: inserendo in modalità Trova una stringa di testo Filemaker trova tutte le parole che iniziano con quella stringa di testo.

Digitando *ro

e dando invio si trova VERDI PIETRO, AZZURRO MARCO, ma non ROSSI MARCO, NERI PATROCLO, BIANCHI ROBERTO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA.

Comportamento: inserendo in modalità Trova una stringa di testo preceduta da un asterisco, Filemaker trova tutte le parole che terminano con quella stringa di testo.

Digitando ro*

Si ottiene lo stesso risultato che si ha digitando ro. Si trova cioè ROSSI MARCO, BIANCHI ROBERTO,ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA, ma non VERDI PIETRO, AZZURRO MARCO, NERI PATROCLO.

Comportamento: inserendo in modalità Trova una stringa di testo seguita da un asterisco, Filemaker trova tutte le parole che iniziano con quella stringa di testo.

Digitando *@ro@*

e dando invio si trova NERI PATROCLO, ma non ROSSI MARCO, VERDI PIETRO, BIANCHI ROBERTO, AZZURRO MARCO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA.

Comportamento: inserendo in modalità Trova una stringa di testo preceduta da un asterisco e @ seguita da @ e asterisco, Filemaker trova tutte le parole che contengono quella stringa di testo.

​Digitando *ro*

e dando invio si trova ROSSI MARCO, VERDI PIETRO, NERI PATROCLO, BIANCHI ROBERTO, AZZURRO MARCO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA.

Comportamento: inserendo in modalità Trova una stringa di testo preceduta e seguita da un asterisco, Filemaker trova tutte le parole che iniziano, terminano o contengono quella stringa di testo.

Digitando ==ro*

e dando invio si trova ROSSI MARCO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA, ma non VERDI PIETRO, NERI PATROCLO, BIANCHI ROBERTO, AZZURRO MARCO.

Comportamento: inserendo in modalità Trova una stringa di testo preceduta da 2 simboli uguale (==) e seguita da un asterisco, Filemaker trova tutte i campi (quindi l’inizio della descrizione riportata nel campo) che iniziano con quella stringa di testo.

Digitando ==*ro

e dando invio si trova VERDI PIETRO, ma non ROSSI MARCO, NERI PATROCLO, BIANCHI ROBERTO, AZZURRO MARCO, ROSSI GUIDO, ROSSINI ANTONIO, ROSSIATO LUCA.

Comportamento: inserendo in modalità Trova una stringa di testo preceduta da 2 simboli uguale (==) e da un asterisco, Filemaker trova tutte i campi (quindi l’inizio della descrizione riportata nel campo) che terminano con quella stringa di testo.

Digitando *

e dando invio si trova qualsiasi campo valorizzato.

Comportamento: inserendo in modalità Trova un asterisco *, Filemaker trova tutte i campi valorizzati (quindi esclude tutti quelli vuoti).

Digitando =

e dando invio si trovano tutti i campo vuoti.

Comportamento: inserendo in modalità Trova un segno uguale =, Filemaker trova tutte i campi vuoti (quindi esclude tutti quelli valorizzati).

Digitando !

e dando invio si trovano tutti i campo doppi.

Comportamento: inserendo in modalità “trova” una punto esclamativo, Filemaker trova tutte i campi che si ripetono più volte (Esempio: se ho 2 volte il campo “ROSSI MARCO”, cercando con il punto esclamativo Filemaker trova e mostra i 2 record).

Ricerca intervalli nei campi testo

Per fare la ricerca di una serie di record all’interno di un determinato intervallo, è necessario utilizzare 2 punti .. (o anche 3 punti ).

Esempio: digitando la*.. pa*

ed dando invio si trova AZZURRO MARCO, ROSSI MARCO e NERI PATROCLO, ROSSIATO LUCA, ma non VERDI PIETRO, BIANCHI ROBERTO, ROSSI GUIDO, ROSSINI ANTONIO.

Ricerca di campi numero

Prendiamo come riferimento la seguente sequenza di record (in questo caso, si tratta di campi numero):

img19

Digitando 234

e dando invio si trova 234, ma non 1234.

Comportamento: inserendo in modalità Trova un numero, Filemaker trova quel determinato numero, anche se la sequenza numerica si ripete (come nel caso di 234 e 1234).

Digitando *234

e dando invio si trova 234, 1234, ma non 12345 e nemmeno 2345.

Comportamento: inserendo in modalità Trova un numero preceduto da un asterisco *, Filemaker trova tutti i numeri che terminano quella determinata sequenza).

Digitando *@234@*

e dando invio si trova 12345, ma non 234 nè 1234, e nemmeno 2345.

Comportamento: inserendo in modalità Trova un numero preceduto e seguito da un asterisco * e @ e seguito da @ e asterisco, Filemaker trova tutti i numeri che contengono quella determinata sequenza.

Digitando *234*

e dando invio si trova 234, 1234, 12345 e 2345.

Comportamento: inserendo in modalità Trova un numero preceduto e seguito da un asterisco *, Filemaker trova tutti i numeri che iniziano, terminano o contengono quella determinata sequenza.

Digitando 234*

e dando invio si trova 234 e 2345 ma non 1234, e nemmeno 12345.

Comportamento: inserendo in modalità Trova un numero seguito da un asterisco *, Filemaker trova tutti i numeri che iniziano quella determinata sequenza.

Digitando >1000

e dando invio si trova 1234, 2345 e 12345 e non 234, ovvero tutti i numeri maggiori di 1000.

Digitando <1000

e dando invio si trova 234 ma non 1234, nè 2345 e nemmeno 12345, ovvero tutti i numeri inferiori a 1000.

Digitando >1000 <2000

e dando invio si trova 1234, ma non 234, ne 2345 e nemmeno 12345, ovvero tutti i numeri compresi tra 1000 e 2000.

Digitando *

e dando invio si trova qualsiasi campo valorizzato.

Comportamento: inserendo in modalità Trova una asterisco *, Filemaker trova tutti i campi valorizzati (quindi esclude solo quelli vuoti).

Digitando =

e dando invio si trovano tutti i campo vuoti.

Comportamento: inserendo in modalità “trova” una uguale =, Filemaker trova tutti i campi vuoti (quindi esclude tutti quelli valorizzati).

Digitando !

e dando invio si trovano tutti i campi doppi.

Comportamento: inserendo in modalità Trova una punto esclamativo, Filemaker trova tutte i campi che si ripetono più volte. (Esempio: se ho 2 volte il campo 1234, cercando con il punto esclamativo Filemaker trova e mostra i 2 record).

Ricerca intervalli nei campi numero

Per fare la ricerca di una serie di record all’interno di un determinato intervallo, è necessario utilizzare 2 punti .. (anche 3 punti ).

Esempio: digitando 500..5000

e dando invio, si trova 1234, 2345 ma non 234 e 12345.

Ricerca di campi data

Digitando 15-10-2013

e dando invio si trova la data del 15-10-2013.

Digitando 10-2013

e dando invio si trovano tutte le date del mese di ottobre 2013.

Digitando >15-10-2013

e dando invio si trovano tutte la date superiori al 15-10-2013.

Digitando <15-10-2013

e dando invio si trovano tutte la date inferiori al 15-10-2013.

Digitando >15-10-2013 <30-10-2013

e dando invio si trovano tutte la date superiori al 15-10-2013 ed inferiori al 30-10-2013

Digitando *

e dando invio si trova qualsiasi campo valorizzato.

Comportamento: inserendo in modalità Trova un' asterisco *, Filemaker trova tutte i campi valorizzati (quindi esclude solo quelli vuoti).

Digitando =

e dando invio si trovano tutti i campo vuoti Comportamento: inserendo in modalità Trova una uguale =, Filemaker trova tutte i campi vuoti (quindi esclude tutti quelli valorizzati).

Digitando !

e dando invio si trovano tutti i campi doppi.

Comportamento: inserendo in modalità Trova una punto esclamativo, Filemaker trova tutte i campi che si ripetono più volte. (Esempio: se ho 2 volte il campo 15-10-2013, cercando con il punto esclamativo Filemaker trova e mostra i 2 record).

Ricerca intervalli nei campi data

Per fare la ricerca di una serie di record all’interno di un determinato intervallo, è necessario utilizzare 2 punti .. (anche 3 punti ).

Esempio: digitando 15-10-2013..30-10-2013

e dando invio si trovano tutte le date intercorrenti tra 15-10-2013 e 30-10-2013.

...e se il valore da cercare è un operatore?

Come fare per cercare un valore usato da FileMaker come operatore di ricerca? Non sarebbe un problema insolito: basta pensare al carattere @, utilizzato come jolly nei campi testo (FileMaker lo ha implementato ben prima della diffusione della posta elettronica), per capire che si tratta di un caso che può capitare di dover affrontare.

In questo caso ci viene in soccorso l’operatore \, che indica che il carattere successivo è un testo e non un operatore. Ad esempio, giulio@sinapsistudio.it va cercato come giulio\@sinapsistudio.it. Possiamo anche mettere il simbolo cercato tra due apici “”, ovvero anche giulio”@“sinapsistudio.it.

In termini più semplici, digitando da modalità Trova la stringa “!” si trovano tutti i record che contengono all’interno del testo il simbolo ! Di conseguenza, per trovare un apice messo nel testo dovremo digitare “””.

Quali sono i tuoi trucchi per trovare un record al primo colpo? Ti è mai capitato di impazzire per ritrovare un indirizzo e-mail in un database? Raccontaci la tua soluzione e condividi le tue idee con gli altri Guru: scopri la community Filemaker su Guru Corner!




Pietro Lazzarini

Cerca
Prendi la corsia preferenziale e risolvi i tuoi problemi di sviluppo FileMaker!

Risorse gratuite

Guru Corner

Altri articoli di Pietro Lazzarini

Ultimi articoli