Listenfeld mit sehr vielen Einträgen erstellen

In Writer kann man Listenfelder einfügen, um danach einzelne Elemente auszuwählen. Bei der Erstellung des Listenfeldes muss ich jedes Element ins Feld “Eintrag” eintippen, dann “Hinzufügen” anklicken, um den Eintrag im Feld “Listeneinträge” zu sammeln. Das ist mühsam, wenn man mehr als ein paar Einträge aufnehmen will. An einer anderen Stelle habe ich die Elemente alle schon in Listenform - ich würde gerne alle kopieren und auf einmal einfügen. Gibt es einen Weg, eine große Menge von Elementen zusammen für ein Listenfeld zu erfassen, ohne sie einzeln eintippen zu müssen ?

Wenn Du tatsächlich das Listenfeld meinst, das als Formularfeld gedacht ist:
Eigenschaften des Listenfeldes Öffnen → Allgemein → Listeneinträge → Button mit Pfeil nach unten → Inhalt einfügen
Returns führen zu jeweils separaten Einträgen. Es können also alle Daten auf einmal in dieses Feld eingefügt werden.
.
Wenn Du das Inhaltssteuerelement → Dropdown-Liste meinst: Das scheint mir für längere Listen in der Tat ein mühsames Geschäft zu sein.

Vielleicht geht es um eine Eingabeliste?
(EinfügenFeldbefehlWeitere Feldbefehle… – Register: Funktionen).

Ja, @RobertG, das Formular- Listenfeld lässt sich tatsächlich in einem Rutsch mit einer ganzen Liste von Einträgen füllen. Allerdings bleibt das Feld im Text mit einem Rahmen als solches erkennbar (wie in Formularen üblich).
.
Was ich brauche, ist eine Eingabeliste (Einfügen > Feldbefehl > weitere Feldbefehle > Funktionen > Eingabeliste), mit der ich in einem vorbereiteten Fließtext noch einzelne Stellen durch einen Listeneintrag konkretisieren kann,
z.B.: “Es wurde [ein Hund;eine Katze;eine Maus;…] beobachtet.”
Nach Auswahl eines Eintrags wird ein normaler Satz daraus (ohne Rahmen oder so):
z.B.: “Es wurde eine Maus beobachtet.”

Den Rahmen bei Formularfeldern kannst Du ja ausschalten. Schwerer wiegt hingegen, dass das Feld in einer festen Breite eingebaut wird. Ist der Text kürzer, so bleibt Freiraum. Ist der Text länger, so wird er abgeschnitten.
.
<text:drop-down text:name="Liste"><text:label text:value="Erster"/><text:label text:value="Zweiter"/><text:label text:value="Dritter"/>Erster</text:drop-down>
So sieht das aus, was über Feldbefehle geht, wenn ich in die Wrter-Datei rein schaue.
Willst Du also viele Einträge drin haben, so kannst Du die in der Form
<text:label text:value="Erster"/>
erstellen, dann die Writer-Datei mit einem Packprogramm öffnen, die Datei content.xml darin suchen und den gesamten Inhalt an der passenden Stelle einfügen.
So etwas kannst Du auch in einem komplett leeren Writer-Dokument machen. Die Liste lässt sich später von dem Writer-Dokument, in dem sie erstellt wurde, zu dem Writer-Dokument, mit dem Du arbeiten willst, kopieren und einfügen. Gerade einmal mit 6 Einträgen ausprobiert - klappt.

Ja, ein EDV-Erfahrener könnte die Liste(n) so in die content.xml reinschleusen, aber einem Standardbenutzer, der einfach nur Dokumentenvorlagen erstellen und dann benutzen will/soll, eher nicht.

Ist es also so, dass Eingabelisten (offiziell) nur von Hand - Eintrag für Eintrag - erstellt werden können ?

Es sollte nicht sein, dass das Verhalten so ähnlicher Strukturen wie Formular- Listenfelder und Eingabelisten bezüglich der Erstellung so unterschiedlich ist. Wie beurteilt Ihr die Chancen, dass das verbessert wird, also Listenelemente in Eingabelisten genauso leicht eingefügt werden können wie in Formular- Listenfelder ?

Vielleicht mit einem Makro?
Siehe angehängte Datei: Eingabeliste.odt (11.5 KB)

  1. die Listenelemente (Absätze im Dokument) markieren
  2. das Makro StandardModule1InsertField ausführen
    oder
    die Schaltfläche „Eingabeliste“ verwenden.

Das Makro soll das Feld am Ende des Dokuments einfügen. (Das besagte Makro ist sehr einfach und kann selbstverständlich verbessert / angepasst werden.)

recWin11_25842

@cwolan: Danke für den Vorschlag. Ich komme darauf zurück, wenn der Datenbank-Ansatz von Villeroy nicht weiterführt. Ich möchte - wenn möglich - eine Lösung, die von Benutzern ohne Programmierkenntnisse gepflegt werden kann.

Was auch immer diese andere Stelle sein mag,

  • Datei>Neu>Datenbank …
  • Verbinde mit bestehender Datenbank
  • Je nachdem, was “diese andere Stelle” ist:
    – Tabellenkalkulation → Dokument angeben
    – Tabelle in Writer-Dokument → Dokument angeben
    – Textdatei → Verzeichnis mit Textdatei angeben
  • Ja, Datenbank registrieren
  • Datenbankdokument speichern.

Jetzt findest Du Deine Liste als Datenbanktabelle, möglicherweise unter anderen Tabellen, wieder. Das Datenbankdokument enthält diese Tabellen nicht, sondern zeigt nur an, was sich tabellarisches in der angegebenen Datenquelle befindet. Du kannst das Datenbankdokument jetzt schließen.

Beim Erstellen eines Listenfeldes oder eines Kombinationsfeldes gibst Du jetzt die Tabelle in der registrierten Datenquelle an.

2 Likes

Sorry, dass ich ein bisschen vage geblieben bin: ich habe die Daten in einer ods-Datei, und zwar in mehreren Spalten von Tabelle1.

Die Idee, die Daten in einer externen Datendatei vorzuhalten und zu pflegen, mag ich - vor allem, weil man dann die Daten nur einmal vorhalten muss und sie trotzdem in verschiedenen Vorlagen einsetzen kann. Aber ich habe noch zwei Probleme, bei denen ich Hilfe brauche:
1.: die Ausgangs - ods-Datei enthielt einfache Listen (ohne Primärschlüssel) und war super einfach zu pflegen (Spalte “Tiere” mit Hund, Katze, Maus > “Bär” in neue Zeile eintragen, fertig). Der vorgeschlagene Lösungsweg kopiert meine ods-Daten in eine neue odb-Tabelle. Änderungen in der ursprünglichen ods werden nicht automatisch übernommen. Ok,ich kann die Daten auch in der odb pflegen, aber wie ? Ich sehe dort keine Möglichkeit, Änderungen oder Ergänzungen vorzunehmen; es gibt am Ende kein freies Feld für Neueingaben.
.
2. Über den vorgeschlagenen Weg komme ich im Writer-Dokument nicht an eine Liste, aus der ich mir aus Hund, Katze, Maus ein Tier auswählen kann - lediglich ein Feld , wo ein Klick keine Auswahlliste öffnet.
Habe ich irgend etwas falsch umgesetzt ? Ich führe mal ganz datailliert auf, was ich gemacht habe:
Datei > Neu > Datenbank

(Schritte: 1. Datenbank auswählen)

Bestehende Datenbank öffnen > [Öffnen] > Datenbankdatei auswählen > Meldung „Verbindung zu einer bestehenden Datenbank herstellen“ > [OK] > Typ „Tabellendokument“ wählen > [Vor] / Schritt 2 anklicken

(Schritte: 2. Verbindung zum Writer- oder Tabellendokument einrichten)

[Durchsuchen] > im Dateibaum Beispiel.ods auswählen > [Vor] > Vorschläge des Assistenten übernehmen: „Ja, die Datenbank soll angemeldet werden“ und „die Datenbank zum Bearbeiten öffnen“ > [Fertigstellen]

(3. Fertigstellen und Fortfahren)

[Vor] / [Fertigstellen] > Name der Datenbank eingeben, z.B. Beispiel.odb > [Speichern] > die neue ODB- Datenbank öffnet sich (mit dem Inhalt der ursprünglichen ods-Datei)

Im Writer-Dokument: Weiteren Feldbefehl einfügen mit F2 > Register „Datenbank“ > die odb-Datenbank und deren Tabellen wird angezeigt; beim Typ „Seriendruckfeld“ sogar die Spaltentitel > Auswahl eines Spaltentitels > [Einfügen] > im Writer-Dokument wird das Feld „“ angezeigt – nach [STRG]+F9 (Felder anzeigen): >„Datenbankname.Tabellenname.Spaltenname“

Klick auf dieses Feld öffnet KEINE Auswahltabelle

.

Öffne das Datenbankdokument und erstelle eine Abfrage, die in SQL-Ansicht wie folgt aussieht:
SELECT "spalte" von "Tabelle1"
oder
SELECT DISTINCT "spalte" von "Tabelle1"
oder
SELECT DISTINCT "spalte" von "Tabelle1" ORDER BY "spalte" ASC

Verwende diese Abfrage für das Listenfeld oder Kombinationsfeld.

ask131768.odt (31.5 KB)

Das ist ein Writer-Formular, das mit der Datenbank “Bibliography” verbunden ist, die mit LibreOffice geliefert wird. Das Datenbankdokument und die eigentliche Datenbank liegen in Deinem Benutzerprofil.
Ich habe das Formular an die Tabelle “biblio” gebunden, ein Listenfeld und ein Kontrollfeld mit den Daten aus dem Feld “Identifier” gefüllt, ohne die Felder mit einem Datenfeld zu verbinden, weil sonst unbeabsichtigt die ausgewählten Werte in die Datenbank geschrieben würden.

P.S. Als ich es das letzte Mal getestet habe, passten 32767 Einträge (2^15)-1 in ein Listenfeld.