Ich möchte ein Fremdschlüsselfeld in einer Tabelle mithilfe einer Kombinationsbox/Dropdown-Liste füllen, wobei die Werte, die der Benutzer sieht, nicht die IDs, sondern ein Beschreibungsfeld aus der Fremdtabelle sind.
Stellen Sie sich folgende Konfiguration vor:
create table people (
id int identity primary key,
name varchar(250),
job_id int
);
create table jobs (
id int identity primary key,
description varchar(250)
);
insert into jobs(description) values 'foo';
insert into jobs(description) values 'bar';
Ich habe die Fremdschlüsselbeziehung im Beziehungen-Fenster angegeben:
Und ich möchte, dass der Benutzer es sieht, jobs.description
wenn er ein Neues person
über ein Formular erstellt.
Aber ich weiß nicht, wie das geht. Wenn ich ein Formular auf der Grundlage einer Abfrage erstelle, die die beiden Tabellen verbindet, kann ich keine neuen Daten erstellen, und wenn ich ein Formular auf der Grundlage von erstelle people
, ist die Subform based on existing relation
Option ausgegraut:
In Access lässt sich dies ganz einfach mit dem Formular-Assistenten erreichen:
Wie kann ich dies in LibreOffice/OOo Base erreichen?
Antwort1
Dies ist mit dem Formularassistenten nicht möglich. Das verlinkte Formularmaterial ist eine Ablenkung.
Aber es ist machbarziemlichganz einfach, und zwar wie folgt.
- Verwenden Sie den Formular-Assistenten, um das Formular möglichst weit zu bringen, und verwenden Sie dabei
people
nur die Felder aus der Tabelle. - Bearbeiten Sie das Formular im Entwurfsmodus (*Hinweis: Das Symbol ist völlig unintuitiv, sieht aber so aus: )
- Fügen Sie Ihrem Formular ein Listenfeld-Steuerelement hinzu (Hinweis: kein Kombinationsfeld, diese sind in Base etwas anderes). Dadurch wird ein Assistent geöffnet, der Sie durch alles Weitere führt.
Choose the table from which the data should be used as basis for the list content
Wählen Sie bei ausjobs
.- Wählen Sie
description
als ausDisplay field
. - Unter
Field from the Value Table
„Auswählen“job_id
und unterField from the List Table
„Auswählen“id
.
Das ist es! Das Dropdown-Feld funktioniert jetzt genau wie erwartet:
Wenn Sie keine Assistenten mögen, können Sie das Listenfeld-Steuerelement wie folgt manuell bearbeiten:
- Fügen Sie Ihr Listenfeld hinzu und schließen Sie dann den Assistenten. Klicken Sie auf das Symbol „Steuerung“, das ein Zahnrad ist. (Das ergibt auch keinen Sinn.)
- Geben Sie die Informationen wie folgt ein, wobei unter „Listeninhalt“ „SELECT „DESCRIPTION“, „ID“ FROM „JOBS“ steht. Beachten Sie, dass das Feld, das der Benutzer sehen soll,mussan erster Stelle stehen und dass das „Gebundene Feld“ einen Nullindex hat und auf die ID-Spalte verweisen sollte.
Das ist es!