Frequently asked questions - Base

    From The Document Foundation Wiki
    < Faq‎ | Base
    This page is a translated version of the page Faq/Base/024 and the translation is 71% complete.


    Wie erhalte ich ein Formularelement, das den Inhalt eines Felds anzeigt, aber den Wert eines anderen Feldes in der Tabelle speichert?

    Die Möglichkeit, einen Inhalt wie z.B. den Namen eines Ortes anzuzeigen und statt des Namens eines Ortes aber den Primärschlüsselwert zu speichern, bietet nur das Listenfeld. Um so ein Listenfeld zu erstellen muss das Formular zum Bearbeiten, nicht zur Eingabe von Inhalt geöffnet werden.

    Ein neues Listenfeld erstellen

    Das Listenfeld muss aus der Symbolleiste für die Formularsteuerelemente ausgesucht werden. Mit einem Mausklick auf das Symbol wird das Listenfeld übernommen und kann auf dem Formular an der gewünschten Stelle aufgezogen werden. Wenn nicht vorher die Unterstützung durch Assistenten ausgeschaltet wurde, erscheint nun ein Assistent, der die Fragen zu den Inhalten des Listenfeldes stellt und danach das Listenfeld mit den entsprechenden Daten befüllt.

    Achtung, neben dem Listenfeld gibt es auch ein Kombinationsfeld. Dieses sieht erst ähnlich aus, kann aber nur die Werte speichern, die es auch anzeigt. Dafür können über dieses Feld dann auch neue Werte in die dem Formular zugrundeliegende Tabelle geschrieben werden.

    Bestehendes Fremdschlüsselfeld in ein Listenfeld umwandeln

    Ein bestehendes Feld des Formulars oder auch ein Tabellenkopf eines Tabellenkontrollfeldes in einem Formular wird mit der rechten Maustaste angeklickt. Das Listenfeld kann über das Kontextmenü aus jedem anderen Feld erstellt werden. Wird ein Feld so erstellt, dann springt der Assistent nicht an und die Eingaben, die der Assistent sonst automatisch macht, müssen nun manuell erstellt werden.

    Mit einem rechten Mausklick auf das neue Listenfeld wird das Listenfeld zum Bearbeiten geöffnet. Im Reiter Daten wird Art des Listeninhaltes > SQL gewählt. Ist der SQL-Code nicht bereits klar, so kann bei Listeninhalt der Button mit den 3 Punkten gewählt werden. Der Abfrageeditor erscheint. Hier wird die Tabelle ausgewählt, aus der der Inhalt für die Liste stammen soll.

    Angenommen es existiert eine Tabelle "Ort", von der "Ort" angezeigt werden soll und "ID" in die Tabelle eingetragen werden soll, die dem Formular zugrunde liegt. Im Abnfrageeditor wird dann zuerst die Tablle "Ort" ausgesucht. Als erstes Feld wird "Ort" gewählt, als zweites Feld wird "ID" gewählt. Beim Feld "Ort" wird noch eine Sortierung eingestellt. Der Code wird abgespeichert und erscheint jetzt als Listeninhalt in den Daten des Listenfeldes. Die Einstellung Daten > Gebundenes Feld > 1 muss bestehen bleiben. Die Zählung beginnt bei 0. Feld 0 ist in dem Beispiel "Ort", Feld 1 in dem Beispiel "ID". Das Feld "ID" soll in der dem Formular zugrundeliegenden Tabelle als Fremdschlüssel abgespeichert werden.

    Unter Allgemein muss jetzt noch der Titel geändert werden. Meist steht hier so etwas wie z.B. OrtID, da vorher ja mit dem Feld dirket der Fremdschlüssel gespeichert wurde. Dann sollte noch Allgemein > Aufklappbar gewählt werden und das Listenfeld ist fertig.

    In the above query, ClientName is the first field returned, and has an indexation number of 0, and ClientId is the second field returned with an indexation number of 1.

    The default list displayed in a Listbox control is always based on the first indexed field, i.e. indexation number 0, so in our present example, with the values from ClientName).

    Since what we actually want is the value of ClientId (with an indexation number of 1) to be recorded, it is necessary to enter the value 1 under Linked field.