>> Screenshot erstellen auf Smartphones und PCs

[gelöst] Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
HansGerstenkorn
Beiträge: 106
Registriert: Sa 17. Sep 2016, 18:31

[gelöst] Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von HansGerstenkorn » Di 5. Dez 2017, 15:55

Hallo,

ich bitte um Hilfe für einen SQL-Befehl, für den meine Kennisse derzeit noch nicht ausreichen:

Ich möchte mit einem Formular in meine Tabelle "Status-Meldungen" u.a. eine "Mitglied-ID" einfügen. Dazu möchte ich in dem Listenfeld des Formulares die Mitglieder aber in dem Auswahlfeld mit dem Namen und Vornamen angezeigt bekommen. In meiner Tabelle "Mitglied" werden aber nur die Vornamen-ID bzw. Nachnamen-ID gespeichert, da ich die Mitglieder eindeutig über die Tabelle "Mitglied" identifiziere. Nun weiß ich nicht, wie ich den SQL-Wert eingeben muss, damit mir die Namen und Vornamen der Mitglieder angezeigt werden.

Ich hoffe, ich habe das richtig beschrieben und füge die Übersicht der Beziehungen zur Info hier ein.

Vielen Dank für eine Hilfe schon jetzt :-) Hans
Dateianhänge
SQL_Wert.jpg
SQL_Wert.jpg (30.82 KiB) 178 mal betrachtet
Zuletzt geändert von HansGerstenkorn am Mo 11. Dez 2017, 18:02, insgesamt 1-mal geändert.
Version: 5.4.3.2 (x64); CPU-Threads: 4; Betriebssystem:Windows 6.19; UI-Render: Standard; Gebietsschema: de-DE Calc: group
Microsoft Windows 10 Pro; 10.0.15063 Build 15063; Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne.



RobertG
Beiträge: 1537
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von RobertG » Di 5. Dez 2017, 19:30

Hallo Hans,

dass Du den Namenzusatz aus der Tabelle "Mitglied" auslagerst verstehe ich ja noch irgendwie. Aber warum machst Du das mit den Vornamen und Nachnamen? Gibt es da so viele Leute, die gleiche Vornamen und gleiche Nachnamen haben?

Du mixt in der Tabelle "Mitglied" alle Vornamen mit allen Nachnamen. Da kann nicht ein Listenfeld genutzt werden, um zwei Fremdschlüssel gleichzeitig zu befüllen.

Gruß

Robert

WonneWasti
Beiträge: 21
Registriert: So 1. Jan 2017, 11:34

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von WonneWasti » Mi 6. Dez 2017, 19:32

Da kann ich vielleicht helfen:

"Vorname" || ' ' || "Nachname"

Die senkrechten Striche ( Alt + < ) heißen Conquette ( Verkettung) und das mit den Hochkommata fügt ein Leerzeichen ein.

Ich stelle mir das immer in der Abfrage- Entwurfsansicht zusammen, so dass Vorname und Nachname nacheinander als Felder eingetragen sind, wechsle in die SQL - Ansicht und muss nur noch ein Komma, das die Felder trennt duch den "Konquetteausdruck" ersetzen.

würd´mich freuen wenn´s hilft.

Freischreiber
Beiträge: 523
Registriert: Fr 28. Mär 2014, 10:41

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von Freischreiber » Do 7. Dez 2017, 09:11

Hallo alle,
Da kann nicht ein Listenfeld genutzt werden, um zwei Fremdschlüssel gleichzeitig zu befüllen.
Ich habe es so verstanden, daß der Fragesteller neue Datensätze in die Tabelle Statusmeldungen eintragen möchte, und dazu in einem Formular vorhandene Mitglieder aussuchen können möchte.

Das würde doch gehen, mit einer Ansicht, in der per per Konkatenierung (eben das erwähnte "Vorname" || ' ' || "Nachname" ) die Namen zusammengebaut werden.

Aber vorher beginnt das Grauen: um ein neues Mitglied anzulegen, müßten doch bei dieser Struktur erst Vorname und Nachname in den Einzeltabellen vorhanden sein, bevor man sie in der Mitgliedstabelle kombinieren kann?

Gruß
Freischreiber
Freischreiber nutzt seit 8/2017 LibreOffice Version: 5.2.7.2 (x64) unter Windows 7 und SplitDB mit HSQL 2.4.0.

HansGerstenkorn
Beiträge: 106
Registriert: Sa 17. Sep 2016, 18:31

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von HansGerstenkorn » Do 7. Dez 2017, 17:16

Hallo zusammen,

vielen Dank für Eure Hinweise :-)

wieder einmal werde ich durch Eure Hinweise darauf aufmerksam gemacht, dass meine Frage so nicht gestellt werden dürfte, da sie eigentlich nicht umgesetzt werden kann (siehe Robert). Das ist natürlich richtig und bei genauem Überlegen durch diese Denkanstöße werde ich meine Anforderung der eindeutigen Suche einfach derart umsetzen, dass ich bei einer neuen Statusmeldung das Mitglied über eine Abfrage (als Liste in der Tabelle) identifiziere und so die Einträge dann eindeutig vornehme. Ich benötige eine Liste Mitglieder, da diese Eigenschaften wie z.B. Funktionen haben, die durchaus wechseln und für die Statusmeldungen muss isch die Historie dokumentieren...

Bei der Ansicht der Abfrage ist mir die Umsetzung des SQL-Befehles mit der Verknüpfung nicht ganz klar, es wäre toll, wenn ich von WonneWasti noch einmal Hilfe bekäme, bisher habe ich zwei Felder nebeneinander und der Befehl sieht so aus:

"SELECT "Mitglied"."ID" AS "ID", "Nachname"."Nachname", "Vorname"."Vorname" FROM "Mitglied", "Nachname", "Vorname" WHERE "Mitglied"."Nachname-ID" = "Nachname"."ID" AND "Mitglied"."Vorname_1-ID" = "Vorname"."ID" ORDER BY "Nachname-ID" ASC, "Vorname_1-ID" ASC"

Wie sieht er aus, wenn Nachname und Vorname verknüpft sind?

Zu Info:

Ich bin einfach auf diese Beziehung mit der getrennten Verwaltung von Vornamen und Nachnamen gekommen, weil ich es bei der Auswahl im Listenfeld nicht "stimmig" fand, wenn ich in der Liste der vorhandenen Namen bis zu 7 gleiche Namen untereinander angezeigt bekomme. Hier in unserem Vorort sind sher viele Familien im Sportverein (rund 5.000 Mitglieder) und das über Generationen hinweg. Da nehme ich es gern in Kauf, bei Neuaufnahmen erst einen Namen anlegen zu müssen, ist auch nicht so schlimm, die vorhandenen zeige ich mir im Formular entsprechend an.

Viele Grüße :-) Hans
Version: 5.4.3.2 (x64); CPU-Threads: 4; Betriebssystem:Windows 6.19; UI-Render: Standard; Gebietsschema: de-DE Calc: group
Microsoft Windows 10 Pro; 10.0.15063 Build 15063; Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne.

Freischreiber
Beiträge: 523
Registriert: Fr 28. Mär 2014, 10:41

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von Freischreiber » Do 7. Dez 2017, 17:48

Hallo Hans,

hier mal eine Ansicht aus meiner Datenbank, wo Konkatenierung vorkommt:

Code: Alles auswählen

SELECT IFNULL( "t-adressen"."Firma" || ' ', '' ) || IFNULL( "t-adressen"."Nachname" || ' ', '' ) || IFNULL( "t-adressen"."Vorname", '' ) AS "Name", "ID" FROM "t-adressen" WHERE "t-adressen"."StatusID" = 1 ORDER BY "Name" 
Das IFNULL ist nach meiner Erinnerung jeweils nötig, damit, wenn ein Feld leer ist, überhaupt etwas angezeigt wird. Kann sein, daß du das, wenn immer Vorname und Nachname vorhanden sind, nicht brauchst.

Die Status-ID filtert die Adressen so, daß nur Kunden selektiert werden, und keine anderen Adressen. Brauchst du vielleicht auch nicht.

Um Doppeleinträge zu verhindern, solltest du dir einmal eine DISTINCT-Abfrage anschauen (SELECT DISTINCT...). Vielleicht gibt es auch eine Formularfunktion, die im Feld eine Doppelanzeige verhindert. Das wäre allemal besser als eine falsche Datenbankstruktur, weil die wirst du nur schwer ändern können, wenn mal viele Daten drin sind...

Gruß
Freischreiber
Freischreiber nutzt seit 8/2017 LibreOffice Version: 5.2.7.2 (x64) unter Windows 7 und SplitDB mit HSQL 2.4.0.

HansGerstenkorn
Beiträge: 106
Registriert: Sa 17. Sep 2016, 18:31

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von HansGerstenkorn » Do 7. Dez 2017, 18:07

Hallo Freischreiber,

vielen Dank für die schnelle Antwort, schaffe es jetzt leider nicht mehr, gehe das schnell an, DISTINCT ist gut für doppelte....

Viele Grüße :-) Hans
Version: 5.4.3.2 (x64); CPU-Threads: 4; Betriebssystem:Windows 6.19; UI-Render: Standard; Gebietsschema: de-DE Calc: group
Microsoft Windows 10 Pro; 10.0.15063 Build 15063; Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne.

HansGerstenkorn
Beiträge: 106
Registriert: Sa 17. Sep 2016, 18:31

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von HansGerstenkorn » Mo 11. Dez 2017, 15:57

Hallo Freischreiber,

ich glaube ich verstehe die SQL-Sprache noch nicht richtig, es gelingt mir einfach nicht, die zwei Felder zusammenzuführen, ich stolpere immer wieder darüber, dass die zwei Felder aus zwei verschiedenen Listen stammen. Hier der SQL-Befehl der Ansicht

"SELECT "Nachname"."Nachname", "Vorname"."Vorname" FROM "Mitglied", "Nachname", "Vorname" WHERE "Mitglied"."Nachname-ID" = "Nachname"."ID" AND "Mitglied"."Vorname_1-ID" = "Vorname"."ID" ORDER BY "Nachname"."Nachname" ASC, "Vorname"."Vorname" ASC"

Wie füge ich nun Nachnamen und Vornamen zusammen? Nur zur Info: es ist nicht unbedingt wichtig, in meinem Formular komme ich auch nur mit dem Vornamen zurecht, da ich die Auswahl auch so (über eingefügte Abfrage) manuell durchführen kann, es wäre aber toll, zu wissen, wie es geht :-)

Vielen Dank und Gruß :-) Hans

PS wie macht Ihr das eigentlich mit der Darstellung vom Code, wie wird der richtig eingefügt, bei Euch sieht das immer so schick aus?
Version: 5.4.3.2 (x64); CPU-Threads: 4; Betriebssystem:Windows 6.19; UI-Render: Standard; Gebietsschema: de-DE Calc: group
Microsoft Windows 10 Pro; 10.0.15063 Build 15063; Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne.

RobertG
Beiträge: 1537
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von RobertG » Mo 11. Dez 2017, 17:09

Hallo Hans,

(Code einfügen über den 5. Button von links ...)

Code: Alles auswählen

SELECT "Nachname"."Nachname"||', '||"Vorname"."Vorname" 
FROM "Mitglied", "Nachname", "Vorname" 
WHERE "Mitglied"."Nachname-ID" = "Nachname"."ID" AND "Mitglied"."Vorname_1-ID" = "Vorname"."ID" 
ORDER BY "Nachname"."Nachname" ASC, "Vorname"."Vorname" ASC"
Das bringt Dir die Felder in einer Kombination zusammen. In Deiner Tabellenkonstruktion kannst Du das aber nirgendwo gebrauchen. Wenn sich das Listenfeld auf die Vornamen beziehen soll, dann könntest Du

Code: Alles auswählen

SELECT "Nachname"."Nachname"||', '||"Vorname"."Vorname", "Vorname"."ID"
FROM "Mitglied", "Nachname", "Vorname" 
WHERE "Mitglied"."Nachname-ID" = "Nachname"."ID" AND "Mitglied"."Vorname_1-ID" = "Vorname"."ID" 
ORDER BY "Nachname"."Nachname" ASC, "Vorname"."Vorname" ASC"
nehmen.

Das Ganze ergibt für mich aber auch weiterhin keinen Sinn, da dann zu einem Vornamen beliebige Nachnamen ausgesucht werden könnten - nur wozu? Du kannst dann einen anderen Vornamen zuweisen, hast mit dem Listenfeld aber keinen Einfluss auf den Nachnamen.

Gruß

Robert

F3K Total
Beiträge: 1570
Registriert: So 10. Apr 2011, 10:10

Re: Im Listenfeld eines Formulares Vornamen und Namen zusammengesetzt anzeigen

Beitrag von F3K Total » Mo 11. Dez 2017, 17:16

Hi,
auch wenn ich die Aufteilung der Vor- und Nachnamen auf zwei Tabellen nicht verstehe, der SQL-Befehl für ein Listenfeld, das die Mitglieds-ID in die Statustabelle schreibt, lautet z.B. so:

Code: Alles auswählen

SELECT 
    "Nachname"||', '||"Vorname", 
    "Mitglied"."ID" 
FROM 
    "Mitglied", 
    "Nachname", 
    "Vorname" 
WHERE 
    "Nachname-ID" = "Nachname"."ID" 
    AND 
    "Vorname_1-ID" = "Vorname"."ID"
EDIT...Ups, da war ich wohl ein paar Minuten später als Robert...egal, das Ergebnis gleicht sich, Robert ist ORDERntlicher ...:lol:
Gruß R



Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste