Datenbankabfragen

Previous  Next

 

 

 

Letzte Änderung 01.02.2010

Daten in einem Zeitraum

Für dieses Beispiel benötigen Sie das Beispiel-Projekt fahrzeuge.xdev

 

Für die Suche nach Daten die in einem bestimmten Zeitraum liegen, benötigen Sie lediglich ein Datum für den Beginn sowie ein Datum für das Ende des Zeitraums. Beide Daten müssen so formatiert werden, dass deren Schreibweise mit den Datums-Objekten in der Datenbank übereinstimmt. In der Abfrage-Bedingung wird der Zeitraum dann mit Hilfe der Operatoren > und < sowie durch eine logisch UND Verknüpfung von Start- und Ende-Datum definiert.

 

 

Aufbau der Filter-Bedingung:

#VirtuelleTabelle.Datenfeld > datum_VON && #VirtuelleTabelle.Datenfeld < datum_BIS

 

 

Fortsetzung des Beispiels Abfrage mehrerer Datenbank-Tabellen (Joins):

 

7.Wechseln Sie in den GUI-Builder, verschieben Sie den Button nach rechts, fügen Sie links zwei Text-Container untereinander ein und beschriften Sie diese mit EZ von: und EZ bis:, fügen Sie daneben jeweils ein Textfield ein, selektieren Sie beide mit gedrückter Shift Taste (Mehrfachauswahl), klicken Sie in den Eigenschaften bei Format auf calldialog, klicken Sie im folgenden Dialog auf Datum / Zeit und klicken Sie auf Übernehmen.

clip0505

 

Ermittlung von Datum 1 und 2:

 

8.Selektieren Sie den Button, wechseln Sie in die Code-Ansicht und fügen Sie vor die Datenbankabfrage die Anweisung Variable: Definition ein. Geben Sie im folgenden Dialog EZ_von bei Name ein, wählen Sie bei Typ Datentyp Xdev-Objekt aus, wählen Sie in der folgenden Liste hmtoggle_plus1 XdevDate | XDEV NLS: XdevDatum aus und klicken Sie auf OK. Weisen Sie der neuen Variable das im Textfield bei EZ von: ausgewählte Datum zu. Geben Sie dazu nach der Variablen-Definition = ein, klicken Sie das Textfield bei EZ von: an, um alle Methoden des Textfields in der Bibliothek anzuzeigen und ziehen Sie die Methode hmtoggle_plus1 getDate( ) | XDEV NLS: holeDatum( ) in den Code-Editor ein.
9.Fügen Sie eine zweite Variablen-Definition vor die Datenbankabfrage ein. Geben Sie im folgenden Dialog EZ_bis bei Name ein, wählen Sie bei Typ Datentyp Xdev-Objekt aus, wählen Sie in der folgenden Liste hmtoggle_plus1 XdevDate | XDEV NLS: XdevDatum aus und klicken Sie auf OK. Weisen Sie der neuen Variable das im Textfield bei EZ bis: ausgewählte Datum zu. Geben Sie dazu nach der Variablen-Definition = ein, klicken Sie das Textfield bei EZ bis: an, um alle Methoden des Textfields in der Bibliothek anzuzeigen und ziehen Sie die Methode hmtoggle_plus1 getDate( ) | XDEV NLS: holeDatum( ) in den Code-Editor ein.

 

 

Formatierung von Datum 1 und 2:

 

10.Fügen Sie eine dritte Variablen-Definition vor die Datenbankabfrage ein, mit der Sie das Datum EZ_von formatieren. Fügen Sie dazu die Anweisung Variable: Definition ein. Geben Sie im folgenden Dialog EZ_von_formatiert bei Name ein, wählen Sie bei Typ den Datentyp hmtoggle_plus1 String | XDEV NLS: Zeichenkette aus und klicken Sie auf OK. Fügen Sie nach der Variablen-Definition = ein, geben Sie danach die Variable EZ_von und unmittelbar dahinter einen hmtoggle_plus1 Punkt . | XDEV NLS: Backslash \ ein und wählen Sie aus der erscheinenden Liste die Methode hmtoggle_plus1 format( ) | XDEV NLS: formatiere( ) aus. Klicken Sie die Anweisung hmtoggle_plus1 format( ) | XDEV NLS: formatiere( ) an und legen Sie im folgenden Dialog die Formatierung des Datums so fest, wie das Datum von Ihrer Datenbank abgespeichert wird. Geben Sie dabei für jede Stelle des Datums das entsprechende Symbol oder Trennzeichen an. Geben Sie also "yyyy-MM-dd" ein und klicken Sie abschließend auf OK.
11.Fügen Sie schließlich eine letzte Variablen-Definition vor die Datenbankabfrage ein, mit der Sie das Datum EZ_bis formatieren. Fügen Sie dazu die Anweisung Variable: Definition ein. Geben Sie im folgenden Dialog EZ_bis_formatiert bei Name ein, wählen Sie bei Typ den Datentyp hmtoggle_plus1 String | XDEV NLS: Zeichenkette aus und klicken Sie auf OK. Fügen Sie nach der Variablen-Definition = ein, geben Sie danach die Variable EZ_bis und unmittelbar dahinter einen hmtoggle_plus1 Punkt . | XDEV NLS: Backslash \ ein und wählen Sie aus der erscheinenden Liste die Methode hmtoggle_plus1 format( ) | XDEV NLS: formatiere( ) aus. Klicken Sie die Anweisung hmtoggle_plus1 format( ) | XDEV NLS: formatiere( ) an, geben Sie "yyyy-MM-dd" ein und klicken Sie abschließend auf OK.

 

 

Überarbeitung der Datenbankabfrage:

 

12.Klicken Sie die Datenbankabfrage an, um den SQL-Assistenten aufzurufen und klicken Sie dann im SQL-Assistenten auf Schritt 3: Filter festlegen.
13.Geben Sie bei Bedingung das Datenfeld #FAHRZEUGE.ERSTZULASSUNG als VT-Konstante an, geben Sie danach den SQL-Operator > und danach die Variable EZ_von_formatiert ein, um den Beginn des Zeitraums festzulegen. Geben Sie dann den Logisch UND Operator && ein. Geben Sie danach erneut das Datenfeld  #FAHRZEUGE.ERSTZULASSUNG an, geben Sie dann den SQL-Operator < und danach die Variable EZ_bis_formatiert ein, um das Ende des Zeitraums festzulegen.

clip0506

14.Klicken Sie auf OK, um den SQL-Assistenten zu schließen.

 

 

hmtoggle_plus1XDEV Object Language

1

2

3

4

5

6

7

8

9

10

ACTION_PERFORMED ( )

{

  XdevDate EZ_von = Textfield.getDate();

  XdevDate EZ_bis = Textfield2.getDate();

 

  String EZ_von_formatiert = EZ_von.format("yyyy-MM-dd");

  String EZ_bis_formatiert = EZ_bis.format("yyyy-MM-dd");

 

  XDEV Query #FAHRZEUGE_JOIN << FAHRZEUGE;

}

ACTION_PERFORMED ( )

Der nachfolgende Code wird bei Mausklick auf den Button ausgeführt.

 

XdevDate EZ_von = Textfield.getDate();

Definiert eine Variable mit dem Namen EZ_von vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield zu.

 

XdevDate EZ_bisn = Textfield.getDate();

Definiert eine Variable mit dem Namen EZ_bis vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield2 zu.

 

String EZ_von_formatiert = EZ_von.format("yyyy-MM-dd");

Definiert eine Variable mit dem Namen EZ_von_formatiert vom Typ String (Zeichenkette) und weist dieser das Datum EZ_von zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

String EZ_bis_formatiert = EZ_bis.format("yyyy-MM-dd");

Definiert eine Variable mit dem Namen EZ_bis_formatiert vom Typ String (Zeichenkette) und weist dieser das Datum EZ_bis zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

XDEV Query #FAHRZEUGE_JOIN << FAHRZEUGE;

Datenbankabfrage über mehrere Tabellen, u.a. FAHRZEUGE. Liefert alle Datensätze bei denen die Erstzulassung zwischen dem formatierten Daten EZ_von_formatiert und EZ_bis_formatiert liegt.

Abfragebedingung: #FAHRZEUGE.ERSTZULASSUNG > EZ_von_formatiert  &&  #FAHRZEUGE.ERSTZULASSUNG < EZ_bis_formatiert

hmtoggle_plus1XDEV Basic

1

2

3

4

5

6

7

8

ACTION_PERFORMED ( )

  XdevDate EZ_von = Textfield.getDate()

  XdevDate EZ_bis = Textfield2.getDate()

 

  String EZ_von_formatiert = EZ_von.format("yyyy-MM-dd")

  String EZ_bis_formatiert = EZ_bis.format("yyyy-MM-dd")

 

  XDEV Query #FAHRZEUGE_JOIN << FAHRZEUGE

ACTION_PERFORMED ( )

Der nachfolgende Code wird bei Mausklick auf den Button ausgeführt.

 

XdevDate EZ_von = Textfield.getDate()

Definiert eine Variable mit dem Namen EZ_von vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield zu.

 

XdevDate EZ_bisn = Textfield.getDate()

Definiert eine Variable mit dem Namen EZ_bis vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield2 zu.

 

String EZ_von_formatiert = EZ_von.format("yyyy-MM-dd")

Definiert eine Variable mit dem Namen EZ_von_formatiert vom Typ String (Zeichenkette) und weist dieser das Datum EZ_von zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

String EZ_bis_formatiert = EZ_bis.format("yyyy-MM-dd")

Definiert eine Variable mit dem Namen EZ_bis_formatiert vom Typ String (Zeichenkette) und weist dieser das Datum EZ_bis zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

XDEV Query #FAHRZEUGE_JOIN << FAHRZEUGE

Datenbankabfrage über mehrere Tabellen, u.a. FAHRZEUGE. Liefert alle Datensätze bei denen die Erstzulassung zwischen dem formatierten Daten EZ_von_formatiert und EZ_bis_formatiert liegt.

Abfragebedingung: #FAHRZEUGE.ERSTZULASSUNG > EZ_von_formatiert  &&  #FAHRZEUGE.ERSTZULASSUNG < EZ_bis_formatiert

hmtoggle_plus1XDEV NLS

1

2

3

4

5

6

7

8

Bei Mausklick ( )

    XdevDatum EZ_von = Textfield\holeDatum (  ) 

    XdevDatum EZ_bis = Textfield2\holeDatum (  ) 

 

    Zeichenkette EZ_von_formatiert = EZ_von\formatiere ( "yyyy-MM-dd" ) 

    Zeichenkette EZ_bis_formatiert = EZ_bis\formatiere ( "yyyy-MM-dd" ) 

 

    XDEV Datenbankabfrage #FAHRZEUGE_JOIN << FAHRZEUGE

Bei Mausklick ( )

Der nachfolgende Code wird bei Mausklick auf den Button ausgeführt.

 

XdevDatum EZ_von = Textfield\holeDatum (  )

Definiert eine Variable mit dem Namen EZ_von vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield zu.

 

XdevDatum EZ_bis = Textfield2\holeDatum (  )

Definiert eine Variable mit dem Namen EZ_bis vom Typ XdevDate (Datums-Objekt) und weist dieser das ausgewählte Datum im Textfield2 zu.

 

Zeichenkette EZ_von_formatiert = EZ_von\formatiere ( "yyyy-MM-dd" )

Definiert eine Variable mit dem Namen EZ_von_formatiert vom Typ Zeichenkette und weist dieser das Datum EZ_von zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

Zeichenkette EZ_bis_formatiert = EZ_bis\formatiere ( "yyyy-MM-dd" )

Definiert eine Variable mit dem Namen EZ_bis_formatiert vom Typ Zeichenkette) und weist dieser das Datum EZ_bis zu, welches auf die Schreibweise yyyy-MM-dd formatiert und in eine  Zeichenkette umgewandelt wurde.

 

XDEV Datenbankabfrage #FAHRZEUGE_JOIN << FAHRZEUGE

Datenbankabfrage über mehrere Tabellen, u.a. FAHRZEUGE. Liefert alle Datensätze bei denen die Erstzulassung zwischen dem formatierten Daten EZ_von_formatiert und EZ_bis_formatiert liegt.

Abfragebedingung: #FAHRZEUGE.ERSTZULASSUNG > EZ_von_formatiert  &&  #FAHRZEUGE.ERSTZULASSUNG < EZ_bis_formatiert

 

 

Hinweis: Für die Suche nach einem Datum müssen Sie das Datum immer so formatieren, wie Ihre Datenbank ein Datum abspeichert. Sie können dies über Ihr Datenbank-Administrations-Frontend überprüfen.

 

 

Basiswissen: Virtuelle Tabellen, Datenbankabfragen