Beispiel Vererbung

Aus Limbas Wiki

Wechseln zu: Navigation, Suche

<-- zurück zu Admin-Dokumentation / <-- zurück zur Hauptseite


Prinzipiell können der Suche in einer vererbten Tabelle eigene Filter hinzugefügt werden. Da die Suche über die get_gresult() Funktion ausgeführt wird können auch alle ihre Parameter genutzt werden. Dazu gehören [$gsr], [$filter], [$verkn] und [$extension]


Das folgende Beispiel soll zeigen, wie bei der Eingabe von Daten, Inhalte aus einzelnen Feldern bereits bestehender Datensätze einer anderen Tabelle übernommen (vererbt) werden können.

Das Beispiel basiert auf folgenden zwei bestehenden Tabellen:

  • Tabelle "Autotypen" mit Feldern für
  • Modell
  • Hersteller
  • Verbrauch
  • Adresse Kfz-Händler
  • ...
  • Tabelle "Mitarbeiter" mit Feldern für
  • Personal-Nr.
  • Vorname
  • Nachname
  • Straße
  • PLZ
  • Ort
  • ...


Es sollen jetzt alle Firmenwagen in einer Tabelle mit folgenden Feldern eingetragen werden:

  • Kennzeichen
  • Datum Erstzulassung
  • Modell
  • Hersteller
  • Verbrauch
  • Fahrer Nachname
  • Fahrer Vorname
  • ...

Um die Vererbung in LIMBAS zu veranschaulichen wird für die Felder "Modell", "Hersteller", "Verbrauch", "Fahrer Nachname", "Fahrer Vorname" der Datentyp "Vererbt" verwendet. Dabei werden die entsprechenden Felder der Ausgangstabellen als Vererber angegeben. "Modell", "Hersteller" und "Verbrauch" werden einer gemeinsamen "Vererbungsgruppe" zugeordnet, "Fahrer Nachname" und "Fahrer Vorname" werden einer gemeinsamen anderen Vererbungsgruppe zugeordnet. Außerdem wird bei "Modell" und "Fahrer Nachname" die Suchfeld-Option gesetzt.

Werden nun in der Bearbeitungsansicht der Tabelle "Firmenwagen" im Feld "Modell" ein oder mehrere Zeichen eingegeben, klappt eine Liste mit allen Einträgen des Feldes "Modell" der Tabelle "Autotypen", die diese Zeichen enthalten, auf. Durch Mausklick auf einen dieser Werte kann dieser übernommen werden, dabei werden dann auch die Felder "Hersteller" und "Verbrauch" mit den zugehörigen Daten aus dem entsprechenden Datensatz vorbelegt. Werden ein oder mehrere Zeichen im Feld "Fahrer Nachname" eingegeben, klappt eine Liste mit allen Einträgen des Feldes "Nachname" der Tabelle "Mitarbeiter", die diese Zeichen enthalten, auf. Bei Mausklick auf einen Eintrag wird dieser zusammen mit dem zugehörigen "Vornamen" übernommen.

Sollen in der aufklappenden Liste nur Einträge vorhanden sein, die bestimmte Dateninhalte in ein oder mehreren Feldern des Datensatzes enthalten, muss ein Filter für die Vererbung gesetzt werden. Die Filter-Einstellungen werden durch Setzen des "$gsr"-Parameters (siehe Funktionsbeschreibung "get_gresult") vorgenommen.


Filter-Beispiele:

  • Folgender Eintrag im Filter des Feldes "Fahrer Nachname" berücksichtigt nur Mitarbeiter aus London:
$gsr[$tableIdMitarbeiter][$fieldIdOrt][$laufendeFilterNr]='London';
$gsr[$tableIdMitarbeiter][$fieldIdOrt]['txt'][$laufendeFilterNr]=1;
Dabei sind die folgenden Variablen durch entsprechende Werte zu ersetzen:
  • $tableIdMitarbeiter: ID der Tabelle Mitarbeiter
  • $fieldIdOrt: Feld-ID des Feldes Ort aus der Tabelle Mitarbeiter
  • $laufendeFilterNr: beliebig zu vergebender Index, bei mehreren Filtern sinnvollerweise aufsteigend ab 0


  • Folgender Eintrag im Filter des Feldes "Fahrer Nachname" berücksichtigt nur Mitarbeiter mit einer Personalnummer kleiner oder gleich 200:
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr][$laufendeFilterNr+1]=200;
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr]['num'][$laufendeFilterNr+1]=4;
Dabei sind die folgenden Variablen durch entsprechende Werte zu ersetzen:
  • $tableIdMitarbeiter: ID der Tabelle Mitarbeiter
  • $fieldIdPersonalNr: Feld-ID des Feldes Personalnummer aus der Tabelle Mitarbeiter
  • $laufendeFilterNr: beliebig zu vergebender Index, bei mehreren Filtern sinnvollerweise aufsteigend ab 0


  • Folgender Eintrag im Filter des Feldes "Fahrer Nachname" kombiniert die ersten beiden Beispiele so, dass nur Mitarbeiter aus London, die auch eine Personalnummer kleiner oder gleich 200 haben, berücksichtigt werden:
$gsr[$tableIdMitarbeiter][$fieldIdOrt][$laufendeFilterNr]='London';
$gsr[$tableIdMitarbeiter][$fieldIdOrt]['txt'][$laufendeFilterNr]=1;
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr][$laufendeFilterNr+1]=200;
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr]['num'][$laufendeFilterNr+1]=4;
$gsr[$tableIdMitarbeiter]['andor'] = 1;
Dabei sind die folgenden Variablen durch entsprechende Werte zu ersetzen:
  • $tableIdMitarbeiter: ID der Tabelle Mitarbeiter
  • $fieldIdOrt/$fieldIdPersonalNr: Feld-ID des Feldes Ort bzw. Personal-Nr aus der Tabelle Mitarbeiter
  • $laufendeFilterNr: beliebig zu vergebender Index, bei mehreren Filtern sinnvollerweise aufsteigend ab 0


  • Folgender Eintrag im Filter des Feldes "Fahrer Nachname" kombiniert die ersten beiden Beispiele so, dass Mitarbeiter aus London und Mitarbeiter, die eine Personalnummer kleiner oder gleich 200 haben, berücksichtigt werden:
$gsr[$tableIdMitarbeiter][$fieldIdOrt][$laufendeFilterNr]='London';
$gsr[$tableIdMitarbeiter][$fieldIdOrt]['txt'][$laufendeFilterNr]=1;
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr][$laufendeFilterNr+1]=200;
$gsr[$tableIdMitarbeiter][$fieldIdPersonalNr]['num'][$laufendeFilterNr+1]=4;
$gsr[$tableIdMitarbeiter]['andor'] = 2;
Dabei sind die folgenden Variablen durch entsprechende Werte zu ersetzen:
  • $tableIdMitarbeiter: ID der Tabelle Mitarbeiter
  • $fieldIdOrt/$fieldIdPersonalNr: Feld-ID des Feldes Ort bzw. Personalnummer aus der Tabelle Mitarbeiter
  • $laufendeFilterNr: beliebig zu vergebender Index, bei mehreren Filtern sinnvollerweise aufsteigend ab 0


  • Folgender Eintrag im Filter des Feldes "Fahrer Nachname" ermittelt den Anfangsbuchstaben des bereits eingegebenen Kennzeichens und berücksichtigt nur Mitarbeiter, die in einem Ort wohnen, der mit diesem Buchstaben anfängt:
$myOnlyField[$tableIdFirmenwagen] = array($fieldIdKennzeichen);
$myResult = get_gresult($tableIdFirmenwagen, 1, null, null, null, $myOnlyField, $ID, null, null);
$gsr[$tableIdMitarbeiter][$fieldIdOrt][$laufendeFilterNr]=$myResult[$tableIdFirmenwagen][$fieldIdKennzeichen][0][0];
$gsr[$tableIdMitarbeiter][$fieldIdOrt]['txt'][$laufendeFilterNr]=3;
Dabei sind die folgenden Variablen durch entsprechende Werte zu ersetzen:
  • $tableIdMitarbeiter: ID der Tabelle Mitarbeiter
  • $tableIdFirmenwagen: ID der Tabelle Firmenwagen
  • $fieldIdOrt: Feld-ID des Feldes Ort aus der Tabelle Mitarbeiter
  • $fieldIdKennzeichen: Feld ID des Feldes Kennzeichen aus der Tabelle Firmenwagen
  • $laufendeFilterNr: beliebig zu vergebender Index, bei mehreren Filtern sinnvollerweise aufsteigend ab 0
Die Variable $ID wird vom Skript mit der aktuellen Datensatz ID ersetzt.