FILTERGROUP(-1) – Cross Column Search in Dynamics NAV / BC
Hallo zusammen,
in Gesprächen mit Kollegen und Freunden im Dynamics NAV / Business Central Bereich stelle ich immer wieder fest, dass viele noch nie etwas von FILTERGROUP(-1) gehört haben. Dabei ist das sogar auf der Microsoft Online Dokumentation beschrieben (FILTERGROUP Function (Record)).
Schauen wir uns die Dokumentation einmal an:
- Number: -1
- Name: Cross-column
- Description: Used to support the cross-column search.
Dabei werden die Dynamics NAV Experten sicherlich schon wissen worum es sich hier handelt. Mit “Cross-column” kann über mehrere Felder gleichzeitig gesucht werden. Ich erkläre das gerne an einem Beispiel. Stellen wir uns vor, dass wir in der Kontakttabelle nach dem Suchwort “GmbH” suchen wollen. Dabei stellt sich die Herausforderung, dass manche Kontakte einen langen Namen haben und “GmbH” nicht im Feld “Name”, sondern im Feld “Name 2” steht.
- Kontakte mit “GmbH” im Feld “Name”:
- Kontakte mit “GmbH” im Feld “Name 2”:
Wie lösen wir dieses Problem? Dabei wird oft zur der Lösung gegriffen, die entsprechende Tabelle zwei Mal zu durchsuchen:
- In diesem Beispiel rufen wir eine Funktion “GetNoOfContactsWithSearchTerm” auf und übergeben ‘GmbH’ als Suchbegriff.
- Wir ermitteln die Anzahl der Kontakte, die diesem Filterkriterium entsprechen, indem wir auf das Feld “Name” filtern und die Anzahl der Datensätze in der Variable “NoOfRecords” speichern.
- Wir wiederholen die Abfrage mit unserem Suchbegriff, indem wir den gleichen Filter auf das Feld “Name 2” setzen.
Das Ergebnis geben wir in einer Nachricht aus.
Wir haben also 6 Kontakte, die GmbH im Feld “Name” oder “Name 2” vorweisen können. Das ist natürlich nur ein Beispiel, aber wie könnte diese Problem besser gelöst werden? Wie wäre es mit FILTERGROUP(-1):
Das Ergebnis ist wie im Beispiel vorher:
FILTERGROUP(-1) bietet uns die Möglichkeit Filter in Dynamics NAV / Business Central mit ODER zu verknüpfen. Ohne FILTERGROUP(-1) werden alle Filter mit UND verbunden. Schlußfolgern können wir daraus, dass wir mit FILTERGROUP(-1) Daten innerhalb einer SQL Abfrage ermitteln können und über mehrere Spalten gleichzeitig suchen können.
Natürlich sollte das gut bedacht sein und für den entsprechenden Fall überprüft werden. Ab einer gewissen Datenmenge und ohne entsprechende Indexe muss die Abfrage nicht unbedingt schneller sein. Anwendung könnte FILTERGROUP(-1) beispielsweise in einer Entwicklung finden, die alle oder bestimmte Felder einer Stammdatentabelle nach einem Suchbegriff durchsucht. Das wäre in Verbindung mit FIELDREF möglich. Wir könnten daher mehrere Felder generisch nach einem Suchbegriff durchsuchen und dies dem Benutzer anzeigen. Dies ist nur eine der möglichen Anwendungsbereiche. Bei Prüfungen, ob eins von vielen Felder gefüllt sind, könnte sich der Cross-column search auch anbieten.
Ich bin mir sicher, dass die meisten Entwickler schon Ideen haben, FILTERGROUP für ihre Anforderung zu verwenden.
Viel Spaß.
The post FILTERGROUP(-1) – Cross Column Search in Dynamics NAV / BC first appeared on Robert's Dynamics NAV/BC Entwickler Blog.This was originally posted here.

Like
Report




*This post is locked for comments