Filter-Bedingung generieren lassen

Anfang  Zurück  Vor

Letzte Änderung 28.10.2010

 

Bei Such-Formularen muss für jedes Formular-Eingabe- oder Auswahl-Feld eine eigene Abfragebedingung konstruiert werden. Bei größeren Such-Formularen ist deshalb der Aufwand für die Formulierung eines SQL-Strings sehr groß und selbst das Zusammenklicken der Abfrage mit dem Query-Assistenten braucht seine Zeit. Nicht selten müssen dabei bis zu 30 oder mehr Bedingungen konstruiert werden. Zudem müssen die Abfragebedingungen bei jeder einzelnen Änderung am Formular geprüft und ggf. überarbeitet werden, u.a. wenn ein Suchkriterium hinzu kommt oder weg fällt. Entsprechend häufig notwendige Änderungen stellen darüber hinaus eine erhebliche Fehlerquelle dar.

 

Mit Hilfe der Formular-Methode createCondition( ) können Sie sich die Abfragebedingungen für ein komplettes Formular automatisch generieren lassen. Damit sparen Sie sich jede Menge Tipparbeit, aufwändige Anpassungen und schalten gleichzeitig eine erhebliche Fehlerquelle aus. Die Methode liest die Werte aller Eingabe- und Auswahlfelder eines Formulars aus, generiert dafür die entsprechende Abfragebedingung und verknüpft diese je nach Einstellung sogar logisch miteinander.

 

clip0038

 

 

Operator für logische Verknüpfungen

 

Bei Verwendung der Methode createCondition( ) müssen Sie festlegen, wie die erzeugten Abfragebedingungen miteinander verknüpft werden sollen, in dem Sie der Methode einen logischen Operator als Parameter übergben. I.d.R. soll jedes Suchkriterium das Abfrageergebnis ein Stück weiter eingrenzen, z.B. Automarke = VW, Modell = Golf, Farbe = rot usw. Um die gewünschte Eingrenzung zu erreichen, muss jede einzelne Bedingung erfüllt werden, sprich wahr sein. Dies erreichen Sie nur, wenn Sie alle Abfrage-Bedingungen miteinander logisch UND verknüpfen. Dafür müssen Sie der Methode AND als Parameter übergeben. Der Parameter wird für die Verknüpfung aller Bedingungen des Such-Formulars verwendet.

 

 

Ausschluß mit NOT

 

In bestimmten Fällen sollen einzelne Suchbegriffe explizit aus dem Abfrageergebnis ausgeschlossen werden, z.B. Ausgabe aller Fahrzeuge, jedoch keine grünen. Um einen entsprechenden Ausschluss zu erreichen, müssen Sie in den Eigenschaften der betreffenden Formular-Komponente bei Filter-Option die Einstellung Exklusive für Ausschluss (NOT) auswählen. Dadurch wird beim Erzeugen der entsprechenden Abfragebedingung der Standard-Operator, den die Methode createWhereCondition( ) als Parameter fordert, überschrieben und durch den Operator NOT ersetzt.

 

clip0040

 

 

Filter-Genauigkeit

 

Auch die Filter-Genauigkeit, die in SQL durch Operatoren wie = und LIKE angegeben wird, lässt sich für jede Formular-Komponente in den Eigenschaften > Filter-Genauigkeit einstellen.

 

clip0039

 

 

Data-Binding

 

Formular-Komponenten besitzen standardmäßig noch keine Verbindung zu einem Datenfeld. Eine entsprechende Verknüpfung können Sie definieren, indem Sie in den Einstellungen > Datenfeld ein Datenfeld einer Virtuellen Tabelle auswählen, über die der Datenbankzugriff erfolgen soll.

 

clip0041

 

 

Hinweis: Datenbankzugriffe erfolgen immer über eine Virtuelle Tabelle.

 

 

Tutorial Suche in Zeiträumen

 

Fortsetzung von: Abfrage mehrerer Tabellen

 

11.Erstellen Sie ein Such-Formular im GUI-Builder. Wechseln Sie dazu in den GUI-Builder indem Sie auf GUI klicken, verschieben Sie den Button nach unten und fügen Sie dann ein Formular ein. Fügen Sie links oben einen TextPane und daneben ein TextField ein. Klicken Sie beide Komponenten nacheinander mit gedrückter Shift Taste an und klonen Sie die beiden Komponenten 6 Mal. Klicken Sie zum Klonen in der Menü Toolbar auf clone. Beschriften Sie die TextPanes mit Marke, Modell, Leistung, Erstzulassung, Kilometerstand, Farbe und Preis.

clip0042

12.Verknüpfen Sie alle Formular-Komponenten mit den dazugehörigen Datenfeldern und übernehmen Sie jeweils bei Filter-Option den voreingestellten Wert Inklusive sowie bei Filter-Genauigkeit die voreingestellte Option Exakt =, <>. Klicken Sie dazu das TextField bei Marke an, wählen Sie bei Datenfeld > Hersteller > MARKE aus, klicken Sie das TextField bei Modell an, wählen Sie bei Datenfeld > Modelle > MODELL aus.

13.Klicken Sie das TextField bei Leistung an, wählen Sie bei Datenfeld > Fahrzeuge > LEISTUNG aus.

14.Klicken Sie das TextField bei Erstzulassung an, wählen Sie bei Datenfeld > Fahrzeuge > ERSTZULASSUNG aus.

15.Klicken Sie das TextField bei Kilometerstand an, wählen Sie bei Datenfeld > Fahrzeuge > KILOMETERSTAND aus.

16.Klicken Sie das TextField bei Farbe an, wählen Sie bei Datenfeld > Fahrzeuge > FARBE aus.

17.Klicken Sie das TextField bei Preis an, wählen Sie bei Datenfeld > Fahrzeuge > PREIS aus.

18.Selektieren Sie den Button und wechseln Sie in die Split-Ansicht, in der GUI-Builder und Code-Editor gleichermaßen angezeigt werden. Klicken Sie dazu auf split Split.

19.Erweitern Sie die Datenbankabfrage mit einem Filter. Bewegen Sie dazu den Mauszeiger mit gedrückter Shift Taste auf die Datenbankabfrage XDEV.Query und klicken Sie diese dann an, um den Query-Assistenten aufzurufen.

20.Klicken Sie im Query-Assistenten bei Filter auf new, um eine benutzerdefinierte Filter-Bedingung anzulegen.

clip0044

21.Fügen Sie nun die Formular-Methode createWhereCondition( ) als Filter-Bedingung per Drag&Drop in den Query-Assistenten ein. Klicken Sie dazu im GUI-Builder in das Formular, worauf in der Bibliothek alle Methoden dieses Formulars erscheinen. Klicken Sie die erste der beiden Methoden, createWhereCondition(String), an und ziehen Sie diese mit Drag&Drop in das Eingabefeld bei Filter im Query-Assistenten.

clip0043

22.Geben Sie im Methoden-Assistenten den logischen Verknüpfungs-Operator AND als Standard-Verknüpfungs-Operator an, um alle generierten Bedingungen miteinander logisch AND zu verknüpfen.

clip0045

23.Übernehmen Sie die Eingabe im Methoden-Assistent mit OK und schließen Sie anschließend den Query-Assistenten mit OK.