Impostare le ricerche in FileMaker con le relazioni

Un giorno un Guru con la G maiuscola, proprio come il suo nome di battesimo, mi disse: “Mah, io farei una banalissima autorelazione, un campo calcolato e una semplice ricerca per *. O c’è qualcosa che mi sfugge?”.

Ora vi racconto cosa si nasconde dietro questa enigmatica frase.

Il problema dei record non univoci

La mia situazione era la seguente. Ipotizziamo di avere la seguente serie di record:

immagine 1La mia necessità era trovare tutti i record contenenti i nomi di quelle persone che, pur ripetendosi più volte, avevano numeri diversi. Nell’esempio sopra riportato si trattava quindi di trovare i 4 record contenenti il nome "Pietro", in quando il numero di telefono associato non era lo stesso per tutti e 4 i record. Non avevo però bisogno di trovare “Luca” o “Marco”, in quanto pur ripetendosi più volte questi ultimi avevano numeri di telefono univoci.

Il risultato che dovevo ottenere era questo:

immagine 2Come potevo fare?

Da parte mia avevo già messo in pista mirabolanti comandi “loop”, “trova”, etc. Avevo pensato: trovo tutti i record i cui nomi si ripetono con il comando “!”, poi metto in ordine per nome, faccio un bel loop e faccio passare uno ad uno i record, prendo per ogni record la variabile del nome chiamandola $nome, prendo la variabile del telefono chiamandola $telefono, vado al record successivo e se $nome = nome vedo se $telefono = telefono. Se uguale vado oltre, se diverso metto un flag in modo tale da riprendere il nome una volta finito il loop per poi ritrovare tutti i record con i nomi flaggati.

Insomma, un bel casino fatto e finito.

La parola al Guru

Ma ecco che il Guru appare e mi dice “...fare una bella relazione no?”.

Ecco a cosa alludeva:

immagine 3Oltre alla relazione, il Guru mi ha fatto aggiungere un campo calcolato che ho chiamato “chiave ricerca”, con appunto valorizzare il contenuto del campo “telefono” nella tabella autorelazionata. In altri termini, in uno specifico campo valorizzare i numeri telefonici a parità di nome con numero di telefono diverso (vedi sopra).

Il campo “chiave di ricerca” è stato così impostato:

immagine 4

A questo punto il gioco è fatto. Facendo una semplice ricerca inserendo il valore “*” nel campo “chiave ricerca” (ovvero cerco qualsiasi valore), ho ottenuto il risultato sperato.

immagine 5

In conclusione

Qual è l’insegnamento che possiamo trarre da questa piccola storia?

Prima di tutto, quello di valutare le relazioni in modo più ampio di quanto normalmente siamo abituati a fare. Non limitiamoci a pensare che una relazione tra due tabelle serva solo ad associare in modo canonico i relativi record (ad esempio, fattura e righe fattura, insegnante e alunni, etc.). Le relazioni possono rivelarsi utilissime anche per fare ricerche, magari sulla stessa tabella tramite autorelazione.

Teniamo presente inoltre che le relazioni si possono basare, oltre che sull’uguaglianza di due campi di confronto, anche su altri operatori. In termini più espliciti, oltre alla classica relazione campo A tabella 1 = campo B tabella 2 Filemaker offre la possibilità di mettere in pista relazioni del tipo campo A tabella 1 < campo B tabella 2, oppure campo A tabella 1 x  campo B tabella 2.

L’elenco degli operatori disponibili è qui di seguito riportato:

immagine 6
Come dicono i veri Guru, sforziamoci di usare le relazioni al meglio! Rendono più elegante ed efficace il nostro database, e soprattutto ci permettono di risparmiare tanto tempo e fatica. Senza contare che una relazione è quasi sempre più veloce di una ricerca, perché sfrutta indicizzazioni già esistenti.

Alle prese con un problema insormontabile in FileMaker? Raccontaci il tuo caso e trova la soluzione con il supporto degli altri Guru: scopri la comunità Filemaker su Guru Corner!




Voti
Risposte
Visite
Domanda

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