Seite 1 von 1

Listenfeld: Eingabe nur Inhalt einer Tabelle/SQL-Abfrage

Verfasst: Mo, 14.10.2013 13:34
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.

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

Verfasst: Mo, 14.10.2013 17:44
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) 1426 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

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

Verfasst: Sa, 26.10.2013 21:05
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?

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

Verfasst: Sa, 26.10.2013 21:17
von F3K Total
Klar,
in diesem ZIP-Archiv der HSQLBD 1.8.1 ist die Doku mit drinn.
Gruß R