Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Beitrag von a-zeller »

In der Zwischenzeit habe ich das mit den Formularen, Unterformularen und Abfragen soweit hinbekommen, wie ich es haben will. Bei der Kür will ich nun aber für die Eingabe nur den Inhalt einer Tabelle/SQL-Abfrage zur Verfügung stellen, ich nehme an mit einem Listen-Feld, doch daran scheitere ich kläglich.

Es geht um zwei Tabellen:

Bestellungen mit Produktnummer, Stückzahl, Stückpreis usw.
Produkte mit Produktnummer und Produktname

Im Formular sollen nun alle Produktnummer aus Produkte angezeigt und dann die ausgewählte Produktnummer in das Feld von Bestellungen eingetragen werden. Den ersten Teil bekomme ich hin den zweiten nicht.

Irgendwie habe ich mich völlig verrannt und brauche Hilfe.
Dateianhänge
LO_Base_Test.odb
(22.25 KiB) 95-mal heruntergeladen
Ich nutze LibreOffice unter Kubuntu Linux.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Beitrag von F3K Total »

Hi,
ich habe dir mal ein einfaches Bestellformular drangebaut, siehe Formular Bestellungen.
Da kannst Du dir die Eigenschaften der Listenfelder, ob einzeln oder innerhalb des Tabellenkontrollfeldes, mal anschauen.
Es gibt bei Auswahl von "Art des Listeninhaltes": SQL die Möglichkeit zwei Werte abzufragen, der erste wird im Listenfeld angezeigt, der zweite in die Datenbank geschrieben.
In diesem Beispiel lautet das Statement

Code: Alles auswählen

SELECT "Produkt_Nr" || ' (' || "Name" || ')', "Produkt_Nr" FROM "Produkte"
Dabei ist der angezeigte erste Wert:

Code: Alles auswählen

"Produkt_Nr" || ' (' || "Name" || ')'
und der einzutragende zweite Wert

Code: Alles auswählen

"Produkt_Nr" 
Es wird also die Produktnummer, gefolgt von einem Leerzeichen, Klammer auf, Name des Produktes, Klammer zu angezeigt, aber nur die Produktnummer eingetragen, siehe Bild:
lst.png
lst.png (2.4 KiB) 1423 mal betrachtet
Als zweite Verbesserung habe ich unter Extras/SQL ... einmalig diesen SQL Befehl abgesetzt:

Code: Alles auswählen

ALTER TABLE "Bestellungen" ALTER "Kaufdatum" SET DEFAULT CURRENT_DATE
So brauchst du kein Kaufdatum eingeben, es wird automatisch das heutige beim Abspeichern eines neuen Datensatzes gesetzt, gibst du aber eines ein, wird dies gespeichert.
Viel Erfolg
Gruß R
Dateianhänge
LO_Base_Test.odb
(31.85 KiB) 101-mal heruntergeladen
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Beitrag von a-zeller »

F3K Total hat geschrieben:Es gibt bei Auswahl von "Art des Listeninhaltes": SQL die Möglichkeit zwei Werte abzufragen, der erste wird im Listenfeld angezeigt, der zweite in die Datenbank geschrieben.
Genau darauf bin ich nicht gekommen. Vielen herzlichen Dank! :D Ich habe wieder einiges gelernt, super.

Gibt es eine Quelle wo ich mir den SQL-Dialekt von Base anschauen kann?
Ich nutze LibreOffice unter Kubuntu Linux.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Beitrag von F3K Total »

Klar,
in diesem ZIP-Archiv der HSQLBD 1.8.1 ist die Doku mit drinn.
Gruß R
Antworten