Come filtrare in OR i campi di una tabella

Salve lettore, in questo breve articolo voglio darti un piccolo consiglio che spesso non ci si focalizza troppo.

Mi riferisco all’utilizzo dei FILTERGROUP. Molti sviluppatori conoscono che per prefiltrare un set di record senza che l’utente possa in qualche modo eliminare il filtro che da codice impostiamo si utilizza la notazione:

Rec.FilterGroup(2);
Rec.Setfilter(MyField,’something’);
Rec.SetFilter(MyField2,’another’);
Rec.FilterGroup(0);

E questo spesso lo si utilizza per aprire pagine in modo che l’utente non tolga il filtro semplicemente cancellandolo dalla pagina.

Altre volte può succedere di impostare filtri personalizzati e per quello si implementano nuovi FilterGroup, ad esempio mettendo 100 come parametro.

A volte mi capita di sentire come richiesta di poter effettuare un filtro in OR sui campi e a volte sento dire che non è possibile farlo con AL language (o C/AL). In realtà non è proprio così! Nel senso che l’utente, utilizzando il client, non può farlo, ma in fase di programmazione di una pagina o all’interno di un programma, lo possiamo fare. E questo lo otteniamo impostando il parametro -1 a FilterGroup.

Passiamo a questo esempio esemplificativo. Creiamo una action all’interno della lista clienti che filtri tutti i clienti che hanno ragione sociale o contatto che iniziano con Fr. Vediamo il codice della action.

Ora eseguiamo la action e vediamo che risultato ne otteniamo.

E’ esattamente quello che volevamo: filtrare i clienti la cui ragione sociale o i contatti iniziano con Fr.

Come dicevo l’utente non può fare questa cosa da client, tuttavia non è escluso che un giorno nelle prossime versioni di Business Central ciò non possa accadere.

Spero che questo breve articolo ti abbia dato qualche nozione in più su come puoi sviluppare le tue applicazione in AL language (ma lo stesso vale anche per C/AL).

Lascia una risposta