listenfeld verwenden
Moderator: Moderatoren
listenfeld verwenden
Ich steh mal wieder vor einer dicken Mauer:
eine Tabelle mit 2 Spalten. 1. Spalte Text Primary key, 2. Spalte einfacher Text.
ich möchte nun beide Spalten nebeneinander legen, die erste als Listfeld und die zweite als Textfeld. Nur eine einzige Zeile.
Und nun soll einfach der zu der im ersten Feld ausgewählten Datenzeile passende Wert in der 2. Spalte angezeigt werden. mehr vorerst nicht.
Das ist natürlich nur der Anfang dessen, was ich vorhabe, aber hier klemmt es mal wieder. Daher hab ich das Beispiel auf das absolute Minimum reduziert.
Gruss
walter
eine Tabelle mit 2 Spalten. 1. Spalte Text Primary key, 2. Spalte einfacher Text.
ich möchte nun beide Spalten nebeneinander legen, die erste als Listfeld und die zweite als Textfeld. Nur eine einzige Zeile.
Und nun soll einfach der zu der im ersten Feld ausgewählten Datenzeile passende Wert in der 2. Spalte angezeigt werden. mehr vorerst nicht.
Das ist natürlich nur der Anfang dessen, was ich vorhabe, aber hier klemmt es mal wieder. Daher hab ich das Beispiel auf das absolute Minimum reduziert.
Gruss
walter
Re: listenfeld verwenden
Hallo Walter,
meinst Du so etwas wie in dem Thread "abhängige Kontrollfelder"?
Oder möchtest Du nur beide Inhalte zusammen in einem Listenfeld anzeigen können?
Zweite Variante:
ist für ein Listenfeld und MySQL der Code. Die doppelten Anführungszeichen musst Du durch die entsprechende MySQL-Maskierung ersetzen.
Gruß
Robert
meinst Du so etwas wie in dem Thread "abhängige Kontrollfelder"?
Oder möchtest Du nur beide Inhalte zusammen in einem Listenfeld anzeigen können?
Zweite Variante:
Code: Alles auswählen
SELECT CONCAT("PK","Text"), "PK" FROM "Tabelle" ORDER BY "PK"
Gruß
Robert
Re: listenfeld verwenden
Den Thread muss ich mir noch ansehen; auf jeden Fall brauche ich NICHT die 2. Lösung, sondern 2 getrennte Felder nebeneinander.RobertG hat geschrieben:Hallo Walter,
meinst Du so etwas wie in dem Thread "abhängige Kontrollfelder"?
Oder möchtest Du nur beide Inhalte zusammen in einem Listenfeld anzeigen können?
Gruss
walter
ps: ich schaffe mit PostgreSQL, aber das sollte unerheblich sein.
Re: listenfeld verwenden
Hallo Walter,
das mit MySQL war ein Irrtum meinerseits - aus einem anderen Thread, auch hier ...
Warum brauchst Du das Feld als separates Feld? Möchtest Du das Feld bearbeiten, den Primärschlüssel aber bestehen lassen? Dann funktioniert das Prinzip des ganannten Threads auch bei Dir: Hauptformular - Unterformular, Filtertabelle im Hauptformular, Eingabetabelle im Unterformular.
Gruß
Robert
das mit MySQL war ein Irrtum meinerseits - aus einem anderen Thread, auch hier ...
Warum brauchst Du das Feld als separates Feld? Möchtest Du das Feld bearbeiten, den Primärschlüssel aber bestehen lassen? Dann funktioniert das Prinzip des ganannten Threads auch bei Dir: Hauptformular - Unterformular, Filtertabelle im Hauptformular, Eingabetabelle im Unterformular.
Gruß
Robert
Re: listenfeld verwenden
Nee, ich will den Wert in der 2. Spalte einfach SEHEN. Erste Spalte Listenfeld, 2. Spalte passendes Datenfeld.
Erste Station, System ist richtig. Ist aber nur Zufall, da hier immer das Feld des ersten Datensatzes angezeigt wird.
andere Station, System ist unverändert - also falsch.
Klick auf die rechte Spalte -> System stimmt.
Ich hoffe es ist jetzt ein wenig klarer.
Gruss
walter
ps: Das ist eine "Spielerei". Ich erstelle mir eine kleine Anwendung für das Spiel Elite Dangerous um dort den Überblick zu behalten.
Code: Alles auswählen
#\d stations
Tabelle „public.stations“
Spalte | Typ | Attribute
------------+---------+-----------
name | text | not null
system | text | not null
father | text | not null
type | text | not null
Indexe:
"stations_pkey" PRIMARY KEY, btree (name)
#select name,system from stations;
name | system
---------------------------+----------------
Kubasov Orbital | Ekonir
Morey Vision | Ekonir
Hahn Relay | Apoyota
Flint Station | Apoyota
... snip ...
Erste Station, System ist richtig. Ist aber nur Zufall, da hier immer das Feld des ersten Datensatzes angezeigt wird.
andere Station, System ist unverändert - also falsch.
Klick auf die rechte Spalte -> System stimmt.
Ich hoffe es ist jetzt ein wenig klarer.
Gruss
walter
ps: Das ist eine "Spielerei". Ich erstelle mir eine kleine Anwendung für das Spiel Elite Dangerous um dort den Überblick zu behalten.
Re: listenfeld verwenden
Hallo Walter,
wenn Du den Eintrag nur sehen willst, warum packst Du dann nicht beide Einträge in ein Feld?
habe ich z.B. eine Datenbank für Waren, zu denen ich bei der Eingabe den Preis sehen will, dann mache ich mir genau dazu passen das Listenfeld. Gegebenenfalls auch mit so einer Anzeige, dass das Ganze sauber untereinander sortiert wird. Siehe dazu auch das Handbuch, Kapitel Abfragen → Abfragen für die Erstellung von Listenfeldern.
Das sieht dann so aus: Der Code muss eventuell angepasst werden, da Du nicht mit der internen HSQLDB arbeitest.
Gruß
Robert
wenn Du den Eintrag nur sehen willst, warum packst Du dann nicht beide Einträge in ein Feld?
habe ich z.B. eine Datenbank für Waren, zu denen ich bei der Eingabe den Preis sehen will, dann mache ich mir genau dazu passen das Listenfeld. Gegebenenfalls auch mit so einer Anzeige, dass das Ganze sauber untereinander sortiert wird. Siehe dazu auch das Handbuch, Kapitel Abfragen → Abfragen für die Erstellung von Listenfeldern.
Das sieht dann so aus: Der Code muss eventuell angepasst werden, da Du nicht mit der internen HSQLDB arbeitest.
Gruß
Robert
Re: listenfeld verwenden
Bin ja noch nich fertig. Wie ich am Anfang geschrieben habe, ist das die absolute Minimalversion um das überhaupt mal hinzukriegen.
1. Erweiterung: insgesamt 3 Felder rechts vom Listenfeld.
2. unter der einzeiligen Liste der Stationsdaten eine weitere Tabelle mit dutzenden Datensätzen als Unterformular.
Grundprinzip: Wähle eine von hunderten Stationen aus, zeige mit deren Basisdaten und da drunter eine Tabelle mit den dort zu kaufenden Waren.
Oder realitätsnäher:
Oben Kundendaten (Name, Anschrift, Telefon ...) und unten Umsätze (Auftragsdaten) des Kunden.
Knackpunkt ist für mich, dass die Auswahl der gesuchten Station/des Kunden über eine Selectlist, Suche, Eingabe der ersten Buchstaben oder ähnliches gemacht wird - was immer sich auch dafür anbietet. "Blättern" mit "nächster Datensatz" kommt dafür nicht in Frage.
So schwer kann das doch nicht sein.
Aber bitte NUR auf das Miniproblem antworten, sonst wird es zu komplex. Und eventuell fällt dann der Groschen bzw. Cent und ich komme dann alleine weiter.
Gruss
walter
1. Erweiterung: insgesamt 3 Felder rechts vom Listenfeld.
2. unter der einzeiligen Liste der Stationsdaten eine weitere Tabelle mit dutzenden Datensätzen als Unterformular.
Grundprinzip: Wähle eine von hunderten Stationen aus, zeige mit deren Basisdaten und da drunter eine Tabelle mit den dort zu kaufenden Waren.
Oder realitätsnäher:
Oben Kundendaten (Name, Anschrift, Telefon ...) und unten Umsätze (Auftragsdaten) des Kunden.
Knackpunkt ist für mich, dass die Auswahl der gesuchten Station/des Kunden über eine Selectlist, Suche, Eingabe der ersten Buchstaben oder ähnliches gemacht wird - was immer sich auch dafür anbietet. "Blättern" mit "nächster Datensatz" kommt dafür nicht in Frage.
So schwer kann das doch nicht sein.
Aber bitte NUR auf das Miniproblem antworten, sonst wird es zu komplex. Und eventuell fällt dann der Groschen bzw. Cent und ich komme dann alleine weiter.
Gruss
walter
Re: listenfeld verwenden
Hallo Walter,
was hindert Dich denn daran, wie im vorgenannten Thread vorzugehen (viewtopic.php?f=8&t=65506)?
Du erstellst eine Filter-Tabelle. Dann wählst Du aus dem Listenfeld etwas aus, so wird das in die Filtertabelle geschrieben. Gleichzeitig wird das Formular zu Deiner eigentlichen Tabelle neu eingelesen. Da erscheint dann nur der aktuelle Datensatz.
Als Unterformular kommen dann sämtliche Daten, die sich auf diesen einen Datensatz beziehen.
Gruß
Robert
was hindert Dich denn daran, wie im vorgenannten Thread vorzugehen (viewtopic.php?f=8&t=65506)?
Du erstellst eine Filter-Tabelle. Dann wählst Du aus dem Listenfeld etwas aus, so wird das in die Filtertabelle geschrieben. Gleichzeitig wird das Formular zu Deiner eigentlichen Tabelle neu eingelesen. Da erscheint dann nur der aktuelle Datensatz.
Als Unterformular kommen dann sämtliche Daten, die sich auf diesen einen Datensatz beziehen.
Gruß
Robert
Re: listenfeld verwenden
Eigentlich nix, bis auf das schwache Wissen meinerseits. Dass das eine Lösung meines Problemes sein könnte, ist mir noch nicht klar gewesen.RobertG hat geschrieben:Hallo Walter,
was hindert Dich denn daran, wie im vorgenannten Thread vorzugehen (viewtopic.php?f=8&t=65506)?
"Filtertabelle"? schon wieder so ein Begriff, den du wohl täglich verwendest und ich versteh nur Bahnhof.
Mal schnell im Manual nachgesehen: Taucht nur bei Berichten auf und ich will ein Formular erstellen
Nun denn
Gruss
walter
Nachtrag: Ich werde jetzt das Beipiel der Ausleihe aus der Doku nachvollziehen. Die entspricht wohl in etwa dem, was ich vorhabe.
Oben Benutzerauswahl - also für mich Stationen - und unten Ausleihen - also für mich Waren.
Das Suchfilter taucht da auch auf.
Re: listenfeld verwenden
Hallo Walter,
schau einmal im Kapitel "Datenbankaufgaben" nach "Datenfiltrerung" und "Datensuche". Das Beispiel aus dem anderen Thread funktioniert genau nach diesem Prinzip.
Gruß
Robert
schau einmal im Kapitel "Datenbankaufgaben" nach "Datenfiltrerung" und "Datensuche". Das Beispiel aus dem anderen Thread funktioniert genau nach diesem Prinzip.
Gruß
Robert