Mehrere Spalten in Listenfeld anzeigen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Mehrere Spalten in Listenfeld anzeigen

Beitrag von tobydom »

Hallo zusammen,
ich habe folgende Situation: 2 Tabellen wie folgt:
tabelle 1:
Mitarbeiter-ID
Nachname
Vorname

tabelle2:
Sunden-ID
MA-ID
Datum
Stundenzahl

Nun möchte ich in einem Formular die Daten in der tabelle 2 eingeben.
Dazu möchte ich mit einem Listenfeld den Mitarbeiter anhand seines Vor- und Nachnamens auswählen, in tabelle2 soll aber nur die entsprechende ID gespeichert werden.

Ich habe verschiedene Beiträge hier gefunden, die beschreiben, dass man in den Eigenschaften unter 'Daten' SQL auswählen soll und dann mittels einer Selectabfrage und CONCAT die Daten aus der der tabelle1 'entnehmen' soll. Über das angegebene 'Datenfeld' und das 'Gebundene Feld' wird angegeben, wo die Daten in tabelle2 hingespeichert werden.

Leider funktioniert das bei mir nicht. Im Listenfeld wird beim Auswählen nur die Mitarbeiter-ID angezeigt, nicht aber Name und Vorname.
Ich habe folgende Varianten ausprobiert, doch beide funktionieren nicht.
Select "Mitarbeiter-ID", "Nachname" FROM "tabelle1"
und
SELECT "Mitarbeiter-ID", CONCAT( "Vorname", "Nachname" ) FROM "tabelle1"

Kann mir jemand weiterhelfen?

Danke,
toby
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von Barlee »

Hallo toby,

unter Eigenschaften / Listenfeld / Daten unter "Datenfeld" hast Du Mitarbeiter-ID angegeben, oder?
Probier mal, die abgefragte ID Spalte an zweite Stelle zu nehmen

Code: Alles auswählen

SELECT CONCAT( "Vorname", "Nachname" ), "Mitarbeiter-ID" FROM "tabelle1"
Gruß Barlee
tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von tobydom »

hi Barlee,
vielen Dank,
es hat geklappt.

Kannst Du mir auch noch sagen, wie ich zwischen die mit CONCAT verbundenen Werte ein Leerzeichen, Komma oder ähnliches kriege?
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von Barlee »

Hallo Toby,

entweder mit einem verschachtelten CONCAT

Code: Alles auswählen

SELECT CONCAT( "Vorname",CONCAT(', ', "Nachname" )), "Mitarbeiter-ID" FROM "tabelle1"
oder so

Code: Alles auswählen

SELECT "Vorname"||', '||"Nachname" , "Mitarbeiter-ID" FROM "tabelle1"
Gruß Barlee
Zuletzt geändert von Barlee am So, 21.03.2010 19:49, insgesamt 2-mal geändert.
tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von tobydom »

hi
vielen Dank für die Antwort.
das mit den verschachtelten CONCATs funktionert nur mit Datenfeldern. Sobald ich in die "" eine andere Zeichenfolge, wie zB Leerzeichen, Kommata o.ä. setze, gehts nicht.

???
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von Barlee »

stimmt, es müssen einfache Hochkommas sein. Ich hab's korrigiert

Gruß Barlee
tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von tobydom »

supie.
danke vielmals.
geogre
*
Beiträge: 12
Registriert: Do, 21.09.2006 12:22

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von geogre »

also irgendwie hat das anmelden nur in einem einzelnen browsertab funktioniert... komsich. also, die frage war von mir :)
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von AndreasJBittner »

Hallo Geogre,

nee, so richtig habe ich Dein Problem nicht verstanden bzw. nicht, wieso Dir dieser Thread nicht hilft.

Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
geogre
*
Beiträge: 12
Registriert: Do, 21.09.2006 12:22

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von geogre »

hallo andreas,

danke erstmal für deine antwort ;)

also, ich versuche es nochmal:

ich habe ein formular, in welches daten für eine tabelle eingegeben werden können. diese daten beziehen sich zum teil auf andere tabellen. ich erfasse so etwas wie arbeitszeit in tabelle a und in diesem formular will ich jeweils einen menschen zu bestimmten zeiten zuordnen. das formular sieht aus wie eine graue tabelle und ich kann einfach daten da hineinschreiben. bei den menschen kommt nur die ID aus der menschen-tabelle hinein, und diese auswahl wird mit einem listenfeld möglich, in diesem wird mit concat sowohl die ID als auch der dazugehörige name angezeigt.

wenn ich diese auswahl dann treffe, steht in der tabelle aber nur noch die ID, also eine kleine zahl., ich möchte, dass dort auch der name stehenbleibt und ich habe keine ahnung wie ich das bewerkstelligen soll. denn eigentlich enthält die entspr. spalte nunmal nur die ID, ich hätte aber gerne, dass die dazugehörigen daten in diesem formular aus der anderen tabelle mit angezeigt werden.

danke für ideen dazu!
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von AndreasJBittner »

Hallo Geogre,

jetzt hast Du das Gleiche noch einmal in anderen Worten beschrieben, ohne wesentliche Informationen zu liefern.
Also, ich vermute mal folgendes: Du hast Tabelle 1 (Mitarbeiter meinethalben), dort gibt es auch eine ID (autoincrement, primary key), in Deiner Tabelle 2 muß es dann eine Spalte MA_ID geben, in der die ID aus der Tabelle1 abegelegt wird. Unter MySQL nennt man das Foreign Key, in OOo kannst Du das über Beziehungen anlegen. Dann weiß die DB, welche Daten es für Mitarbeiter 1 aus der Tabelle 2 nehmen muß. In den Eigenschaften dazu kann man noch festlegen, ob löschen, update etc. kaskadiert - also durchgereicht - wird.
Wenn das so da ist, dann müßten in Deinem Formular alle Daten zu einer bestimmten ID angezeigt werden. Und wenn sie es nicht tun stimmt entweder etwas mit Deinen Tabellen nicht oder mit dem Formular - aber da kann ich aufgrund Deine Angaben nur raten.

Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
geogre
*
Beiträge: 12
Registriert: Do, 21.09.2006 12:22

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von geogre »

hi :)

danke für die zeit die du dir nimmst, sorry dass ich es nicht so geschickt ausdrücken kann...

es ist wie du sagst, ich habe eine tabelle ZEIT und eine tabelle MITARBEITER (es sind natürlich noch mehr, aber es geht ja nur um ein einfaches beispiel).

in der ZEIT sind (u.a.) aus MITARBEITER die IDs (primärschlüssel) per relation (oder so) verknüpft. d.h. in der tabelle stehen dort nur zahlen.

daher habe ich ein formular mit dem assistenten gemacht, welches im prinzip wie die tabelle ZEIT selbst aussieht, da es darauf basiert, nur dass es grau ist.

um die dateneingabe einfacher zu machen habe ich dort nun ein listenfeld eingerichtet, d.h. wenn ich in dem formular einen datensatz eingebe und in die spalte für MITARBEITER klicke (in der ja nur die ID steht), geht dort ein kleines fenster auf und ich kann direkt aus der mitarbeitertabelle einen auswählen. angezeigt werden in diesem listenfeld (?) dank concat-befehl die ID UND der name.

wenn ich nun meine auswahl getroffen habe, steht in der formular-tabelle jedoch NUR noch die ID (die ja auch in die entsprechende spalte gehört).

mein anliegen ist aber, dass dort auch der NAME steht, da ich es dann viel übersichtlicher finde...

was könnte ich noch für informationen liefern um das noch detaillierter zu beschreiben...?

danke für hilfe!
viele grüße,
_geogre
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von AndreasJBittner »

Hallo,

hmmm, dann müßte es doch funktionieren. Wenn Beziehungen angelegt sind und Du in Deinem Formular ein Unterformular angelegt hast, sollten doch alle zusammengehörigen Daten angezeigt werden. Oder steckt in Deinem Formular eine andere Abfrage? Das ist hier schön öfter diskutiert worden, daß Formulare eigene Abfragen haben, schau Dir mal den SQL-Code dazu an.

Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
geogre
*
Beiträge: 12
Registriert: Do, 21.09.2006 12:22

Re: Mehrere Spalten in Listenfeld anzeigen

Beitrag von geogre »

hi,

danke für deine zeit... ich hab nochmal versucht, es mit einer test-db nachzustellen und dabei total zu vereinfachen. ich habe mal alles schritte aufgeschrieben, genauer kann ich es nicht. vielleicht fällt dir (oder jemand anderem) ja ein, wie ich diese anzeige lösen könnte...?

also, ich habe folgendes getan......


--------------------
1. neue datenbank erstellen

2. tabelle in der entwurfsansicht erstellen -> gäste
(spalten gast.id [integer, autowert, primärschlüssel] und gast.name [text])
tabelle in der entwurfsansicht erstellen -> anwesenheit
(spalten id [integer, autowert, primärschlüssel], datum [date] und gast [integer])

3. beziehung erstellen (grafisch)
-> gäste:gast.id - 1:n - anwesenheit:gast

4. ein paar testdaten eintippen (funktioniert)

5. formular erstellen mit assistenten
- tabelle anwesenheit, felder datum und gast
- kein subformular
- anordnung der felder wie tabelle (jeweils drite auswahl [standard])
- dateneingabe -> zeigt existierende daten an

-> ich bekomme ein graues formular das genauso aussieht wie die tabelle anwesenheit in welches ich dann daten eintippen kann.

6. da ich die gäste (könnten ja hunderte sein) nicht auswendig weiss, wird hier ein listenfeld eingebaut:
- formular bearbeiten -> spaltenkopf gast mit rechts anklicken -> ersetzen durch listenfeld
- rechte maustaste auf spaltenkopf gast -> spalte -> daten -> art des listeninhalts SQL
- listeninhalt: SELECT CONCAT( "gast.id", CONCAT( '-', "gast.name" ) ) FROM "gäste"
(dies hat mich schon unendlich lange gekostet und ich bin so froh dass es funktioniert!!!)

formular speichern

7. nun kann ich im formular in dem in der spalte gast immernoch die nummern (id) angezeigt werden einfach hineinklicken und es geht eine liste auf mit den id's UND den dazugehörigen namen (grossartig!!! - so weiss ich, wer nummer 9 ist.)

!!! jedoch... es bleibt nach getätigter auswahl nur die id in der spalte stehen, die gehört da ja auch rein, verstehe ich auch.
trotzdem möchte ich, dass irgendwie (und dieses WIE ist meine frage) trotzdem der name in dieser tabellenübersicht angezeigt wird.

geht das?

was muss ich tun?

danke :)
Antworten