DataControl Beispiele

Previous  Next

 

 

 

01.11.2009

 

DB-Container mit DataControl steuern

Für dieses Beispiel benötigen Sie die Beispiel-Datenbank FAHRZEUGE und das Projekt fahrzeuge.xdev

 

In einer Table wird jede DataControl-Aktion sofort sichtbar, da DataControl-Aktionen immer eine Virtuelle Tabelle mit neuen Daten füllen und in der Table wiederum jede Änderung in der Virtuellen Tabelle sofort sichtbar wird. Ein DB-Container wird zwar auch mit einer Virtuellen Tabelle gefüllt, anders als die Table wird ein DB-Container dabei jedoch nicht mit dieser Virtuellen Tabelle fest verknüpft. Änderungen in der Virtuellen Tabelle werden somit nicht automatisch im DB-Container angezeigt, sodass ein DB-Container nach jeder DataControl-Aktion neu gefüllt (refreshed) werden muss. Mit Hilfe einer eigenen Funktion lässt sich das Refreshen eines DB-Containers sehr leicht umsetzen.

 

 

1.Fügen Sie einen DB-Container und darunter ein DataControl auf die Arbeitsfläche ein.
2.Geben Sie in den DataControl-Eigenschaften bei Anzahl Datensätze als Schrittweite (Range) 10 ein.
3.Klicken Sie den DB-Container an an, wechseln Sie in die Code-Ansicht und wählen Sie das Ereignis hmtoggle_plus1 ON_SHOW ( ) | XDEV NLS: Nach der Darstellung ( ) aus.
4.Fügen Sie eine Datenbank-Abfrage mehrere Datenbank-Tabellen in den Code-Editor ein. Fügen Sie dazu die Anweisung hmtoggle_plus1 XDEV Query | XDEV NLS: Datenbankabfrage in den Code-Editor ein und klicken Sie diese an, um den SQL-Assistenten aufzurufen. Selektieren Sie bei der Datenbank-Tabelle FAHRZEUGE mehrere Datenfelder, auch in den dort angehängten Tabellen MODELLE und HERSTELLER. Klicken Sie bei Ziel (Virtuelle Tabelle) auf  vt_create und lassen Sie sich eine Virtuelle Tabelle passend für diese Abfrage erstellen und benennen Sie diese mit FAHRZEUGE_JOINS. Klicken Sie im SQL-Assistenten auf Schritt 4 - Treffer-Optionen festlegen, klicken Sie dann auf Von Daten-Komponente steuern lassen, klicken Sie auf  calldialog und danach das DataControl an und beenden Sie den SQL-Assistenten abschließend mit OK.

 

Eigene Funktion für DB-Container füllen:

 

5.Schreiben Sie für den DB-Container eine neue Funktion mit dem Namen hmtoggle_plus1 refresh ( ) | XDEV NLS: aktualisiere ( ), die den DB-Container mit der Virtuellen Tabelle #FAHRZEUGE_JOINS füllt. Klicken Sie dazu in der Kopfzeile des Code-Editors auf cpnup, um zur Code-Übersicht des DB-Containers zu gelangen. Klicken Sie bei Funktionen - Objekt auf clip0446, um eine neue Funktion anzulegen, benennen Sie diese im folgenden Dialog mit dem Namen hmtoggle_plus1 refresh ( ) | XDEV NLS: aktualisiere ( ) und klicken Sie OK. Klicken Sie die Funktion dann an, um zum Code dieser Funktion zu gelangen. Fügen Sie die Anweisung DB-Container füllen in den Code-Editor ein, klicken Sie diese an, um den DB-Container-Assistenten aufzurufen und füllen Sie die Zellen des DB-Containers mit Daten aus der Virtuellen Tabelle #FAHRZEUGE_JOINS - Siehe DB-Container füllen.
6.Klicken Sie nun den DB-Container mit Mehrfachklick an, um zurück zum Code des DB-Containers bei Ereignis hmtoggle_plus1 ON_SHOW ( ) | XDEV NLS: Nach der Darstellung ( ) zu gelangen und fügen Sie die neue Funktion hmtoggle_plus1 refresh ( ) | XDEV NLS: aktualisiere ( ) in den Code-Editor ein, die Sie jetzt in der Bibliothek bei den Methoden des DB-Containers finden.
7.Fügen Sie diese Funktion nun auch bei allen Buttons des DataControls, jeweils bei Ereignis hmtoggle_plus1 ACTION_PERFORMED ( ) | XDEV NLS: Bei Mausklick ( ) ein. Um zum Code der jeweiligen Buttons zu gelangen, klicken Sie diese jeweils mit Mehrfachklick an.

 

 

hmtoggle_plus1XDEV Object Language

DBContainer:

1

 

2

3

ON_SHOW( )

{

  XDEV Query DataControl << #FAHRZEUGE_JOINS << FAHRZEUGE

  this.refresh();

}

Eigene Funktion refresh ( ):

1

 

2

refresh( )

{

  XDEV FillDBContainer DBCointainer;

}

DataControl Button:

1

 

2

3

ACTION_PERFORMED( )

{

  DataControl.first();

  DBContainer.refresh();

}

DataControl Button2:

1

 

2

3

ACTION_PERFORMED( )

{

  DataControl.previous();

  DBContainer.refresh();

}

DataControl Button3:

1

 

2

3

ACTION_PERFORMED( )

{

  DataControl.next();

  DBContainer.refresh();

}

DataControl  Button4:

1

 

2

3

ACTION_PERFORMED( )

{

  DataControl.last();

  DBContainer.refresh();

}

DBContainer:

 

XDEV Query DataControl << #FAHRZEUGE_JOINS << FAHRZEUGE

Es wird die Datenbank-Tabelle FAHRZEUGE abgefragt, das Abfrageergebnis wird in der Virtuellen Tabelle #FAHRZEUGE_JOINS gespeichert. Die Abfrage wird von der Komponente DataControl gesteuert.

 

this.refresh();

Ruft die DB-Container-Funktion refresh( ) auf, welche den DB-Container füllt. Das Schlüsselwort this zeigt an, dass die Funktion zu dieser Komponente gehört.

 

DBContainer - Funktion refresh ( ) void

 

refresh( )

Hierbei handelt es sich um den Namen der Funktion. Beim Aufruf dieser Funktion müssen keine Parameter übergeben werden.

 

XDEV FillDBContainer DBCointainer;

Mit dieser Anweisung wird der DBContainer mit dem Namen DBContainer gefüllt. In diesem Beispiel mit Daten aus der Virtuellen Tabelle #FAHRZEUGE_JOINS. Hinter der Anweisung verbirgt sich der DB-Container-Assistent, mit dem sich ein DB-Container bequem füllen lässt.

 

Button bis Button 4:

 

DataControl.first();

Ist eine Methode des DataControl und setzt den Index des DataControls auf den ersten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.previsous();

Ist eine Methode des DataControl und setzt den Index des DataControls auf den vorhergehenden Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.next();

Ist eine Methode des DataControl und setzt den Index des DataControls auf den nächsten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.last();

Ist eine Methode des DataControl und setzt den Index des DataControls auf den letzten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DBContainer.refresh();

Ruft beim DBContainer die selber geschriebene Funktion bzw. Methode refresh( ) auf, wodurch der DB-Container neu gefüllt und somit bei jeder DataControl-Aktion aktualisiert wird.

hmtoggle_plus1XDEV Basic

DBContainer:

1

2

3

ON_SHOW

  XDEV Query DataControl << #FAHRZEUGE_JOIN << FAHRZEUGE

  this.refresh()

Eigene Funktion refresh ( )

1

2

refresh( )

  XDEV FillDBContainer DBCointainer;

DataControl Button:

1

2

3

ACTION_PERFORMED( )

  DataControl.first()

  DBContainer.refresh()

DataControl Button2:

1

2

3

ACTION_PERFORMED( )

  DataControl.previous()

  DBContainer.refresh()

DataControl Button3:

1

2

3

ACTION_PERFORMED( )

  DataControl.next()

  DBContainer.refresh()

DataControl Button4:

1

2

3

ACTION_PERFORMED( )

  DataControl.last()

  DBContainer.refresh()

DBContainer:

 

XDEV Query DataControl << #FAHRZEUGE_JOINS << FAHRZEUGE

Es wird die Datenbank-Tabelle FAHRZEUGE abgefragt, das Abfrageergebnis wird in der Virtuellen Tabelle #FAHRZEUGE_JOINS gespeichert. Die Abfrage wird von der Komponente DataControl gesteuert.

 

this.refresh();

Ruft die DB-Container-Funktion refresh( ) auf, welche den DB-Container füllt. Das Schlüsselwort this zeigt an, dass die Funktion zu dieser Komponente gehört.

 

DBContainer - Funktion refresh ( ) void

 

refresh( )

Hierbei handelt es sich um den Namen der Funktion. Beim Aufruf dieser Funktion müssen keine Parameter übergeben werden.

 

XDEV FillDBContainer DBCointainer;

Mit dieser Anweisung wird der DBContainer mit dem Namen DBContainer gefüllt. In diesem Beispiel mit Daten aus der Virtuellen Tabelle #FAHRZEUGE_JOINS. Hinter der Anweisung verbirgt sich der DB-Container-Assistent, mit dem sich ein DB-Container bequem füllen lässt.

 

Button bis Button 4:

 

DataControl.first()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den ersten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.previsous()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den vorhergehenden Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.next()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den nächsten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.last()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den letzten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DBContainer.refresh()

Ruft beim DBContainer die selber geschriebene Funktion bzw. Methode refresh( ) auf, wodurch der DB-Container neu gefüllt und somit bei jeder DataControl-Aktion aktualisiert wird.

hmtoggle_plus1XDEV NLS

DBContainer:

1

2

3

Nach der Darstellung( )

  XDEV Datenbankabfrage DataControl << #FAHRZEUGE_ANZEIGEN << FAHRZEUGE

  Lokal\aktualisiere()

Eigene Funktion  aktualisiere ( ):

1

2

aktualisiere( )

  XDEV DBContainerFüllen DBCointainer

DataControl Button:

1

2

3

Bei Mausklick( )

  DataControl\ersterDatensatz()

  DBContainer\aktualisiere()

DataControl Button2:

1

2

3

Bei Mausklick( )

  DataControl\verhergehenderDatensatz()

  DBContainer\aktualisiere()

DataControl Button3:

1

2

3

Bei Mausklick( )

  DataControl\nächsterDatensatz()

  DBContainer\aktualisiere()

DataControl Button4:

1

2

3

Bei Mausklick( )

  DataControl\letzterDatensatz()

  DBContainer\aktualisiere()

DBContainer:

 

XDEV Datenbankabfrage DataControl << #FAHRZEUGE_ANZEIGEN << FAHRZEUGE

Es wird die Datenbank-Tabelle FAHRZEUGE abgefragt, das Abfrageergebnis wird in der Virtuellen Tabelle #FAHRZEUGE_ANZEIGEN gespeichert. Die Abfrage wird von der Komponente DataControl gesteuert.

 

Lokal.aktualisiere()

Ruft die selber geschriebene DB-Container-Funktion aktualisiere( ) auf, welche den DB-Container füllt. Das Schlüsselwort Lokal zeigt an, dass die Funktion zu dieser Komponente gehört.

 

DBContainer - Funktion aktualisiere ( )

 

aktualisiere( )

Hierbei handelt es sich um den Namen der Funktion. Beim Aufruf dieser Funktion müssen keine Parameter übergeben werden.

 

XDEV DBContainerFüllen DBCointainer;

Mit dieser Anweisung wird der DBContainer mit dem Namen DBContainer gefüllt. In diesem Beispiel mit Daten aus der Virtuellen Tabelle #FAHRZEUGE_ANZEIGEN. Hinter der Anweisung verbirgt sich der DB-Container-Assistent, mit dem sich ein DB-Container bequem füllen lässt.

 

Button bis Button 4:

 

DataControl.ersterDatensatz()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den ersten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.vorhergehenderDatensatz()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den vorhergehenden Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.nächsterDatensatz()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den nächsten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DataControl.letzterDatensatz()

Ist eine Methode des DataControl und setzt den Index des DataControls auf den letzten Datensatz der Virtuellen Tabelle. Diese Codezeile wird automatisch generiert.

 

DBContainer.aktualisiere()

Ruft beim DBContainer die selber geschriebene Funktion bzw. Methode aktualisiere( ) auf, wodurch der DB-Container neu gefüllt und somit bei jeder DataControl-Aktion aktualisiert wird.

 

 

Basiswissen: Virtuelle Tabellen, Datenbank-Abfragen, DB-Container, Umgang mit dem Code-Editor, eigene Funktionen schreiben.