🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
bathroth
Beiträge: 5
Registriert: Sa 9. Jan 2016, 21:22

Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von bathroth » Mo 15. Aug 2016, 14:57

Guten Tag,

erst einmal war es sehr schwierig mein Problem in einen Betreff zu packen und ich versuche nun es mal ordentlich zu erklären.

Ich habe hier mein Beziehungsmodel:
Bild

Zuerst hatte ich eine kombination aus fk_userid und fk_mwit. Nun habe ich es aber vereinfacht weil ich dachte das es daher fehltschlägt.

Naja. Nun zum Problem:
Ich habe ein Formular was aus der Tabelle usage besteht. Dort habe ich 2 Kombinationsfelder. Einmal für mwit lookup und einmal für userid lookup. Das heißt ich möchte dort direkt auswählen können wecher user welches inventarstück hat. Zur vereinfachung habe ich dieses Kombinationsfeld nochmal um ein feld erweitert über die query. Nun habe ich dort noch einmal das hier als feld stehen:

Code: Alles auswählen

CONCAT( CONCAT( [mwit], ', ' ), [name] )
. Somit erhalte ich "mwit, name" in dem Feld was direkt angezeigt wird. Nun ist das problem, das er das halt dann abspeichern will. Und das gibt es ja nicht beim PK. Ich will nur mwit abspeichern aber mwit + name anzeigen. Bei MS Office konnte man einfach sagen das der jediglich was anderes anzeigen soll und man dann die spalte auf 0cm gestellt hatte.

Wie geht dies in libreoffice? Ich hoffe ich habe mich klar ausgedrückt. ich will es dem Benutzer so einfach wie möglich machen zur auswahl.

Wenn jemand eine idee hat ist er gerne willkommen.
Grüße,
Christoph

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von RobertG » Mo 15. Aug 2016, 15:41

Hallo Christoph,

ein Verständnisproblem:
Kombinationsfelder sind Felder, bei denen immer das abgespeichert wird, was das Feld anzeigt. Kombinationsfelder kannst Du auch problemlos mit neuen Inhalten bestücken.
Listenfelder sind Felder, die in der Regel etwas anderes anzeigen als sie abspeichern. Listenfelder können nicht problemlos mit irgendwelchen Einträgen erweitert werden.
Listenfelder sind die Felder der Wahl, wenn es um das Eintragen von Fremdschlüsselwerten geht. Du zeigst z.B. den Namen an und der Schlüsselwert wird abgespeichert.

Code: Alles auswählen

SELECT "name", "mwit" FROM "equipment" ORDER BY "name"
... wäre ein typischer SQL-Eintrag für ein Listenfeld, das "mwit" als "fk_mwit" in der Tabelle "usage" abspeichern würde.
Du brauchst also in der Standardeinstellung 2 Felder in einem Listenfeld: Das erste wird angezeigt, das zweite abgespeichert.

Verbindungen von Feldern gehen einfacher so:

Code: Alles auswählen

"mwit"||', '||"name"
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

bathroth
Beiträge: 5
Registriert: Sa 9. Jan 2016, 21:22

Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von bathroth » Mo 15. Aug 2016, 15:55

Hallo Robert,

ersteinmal vielen dank für die schnelle Antwort. Ich wusste nicht das im Hintergrund zwischen Listelfeld und Kombinationsfgeld so ein unterschied herrscht. Ich dachte das das Kombinationsfeld nur ein erweitertes Listenfeld wäre, was zusätzlich zum auswählen noch ein kleines "preview" mit x weiteren datensätzen anzeigt. Danke schonmal für das aufklären.

Nun zu meinem Problem. Ich habe es nun versucht umzusetzen wie du gesagt hattest. Genau das hatte ich bereits probiert doch dachte ich halt ich könnte mir mehr anzeigen lassen wie beim kombinationsfeld.

Nebenbeibemerkt: CONCAT( CONCAT( [mwit], ', ' ), [name] ) das klappt bei mir als Feld, doch deine Variante (die ich auch sonst überall entdeckt habe) funktioniert nicht. Weißt du woran das liegen könnte?

Danke schon einmal für deine Unterstützung!

Grüße,
Christoph

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von RobertG » Mo 15. Aug 2016, 20:54

Hallo Christoph,

in wie fern zeigt ein Kombinationsfeld mehr an als ein Listenfeld? Der Unterschied in der Anzeige ist doch nur, dass Du den Listenfeldinhalt nicht direkt erweitern kannst um einen Eintrag. Ansonsten ist die Abfragetechnik gleich - nur muss als zweites Feld das Fremdschlüsselfeld für die darunterliegende Tabelle enthalten sein.

Auf welche Datenbank greifst Du zu, dass

Code: Alles auswählen

CONCAT( CONCAT( [mwit], ', ' ), [name] )
klappt, nicht aber

Code: Alles auswählen

"mwit"|| ', '||"name"
? Gibst Du tatsächlich diese eckigen Klammern an?

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

bathroth
Beiträge: 5
Registriert: Sa 9. Jan 2016, 21:22

Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von bathroth » Mi 17. Aug 2016, 09:22

Hallo,

genau das meinte ich ja. Wenn du jetzt 1000 einträge hast und nach der ID 00012345 suchst und es direkt eingibst, Dann siehst du (in dem fall das das Kombinationsfeld Hoch genug ist) nach 0001234 bereits 00012341, 00012342 ... 00012345 ... 00012349.

Meine Librebase Datanbank ist im Grunde nur das Frontend für eine MySql datenbank die bei mir derzeit auf localhost läuft. Und ja die Eckigen Klammern für mwit und name füge ich bei der CONCAT Variante mit hinzu, bei der "normalen" Variante mit || nicht.

Kann es an der MySQL Datanbank liegen das er es nicht akzeptiert? Aber es klappt generall mit dem Listenfeld ganz gut.
Danke dir nochmals.

Gruß,
Christoph

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern

Beitrag von RobertG » Mi 17. Aug 2016, 10:18

Hallo Christoph,

MySQL kennt den Befehl CONCAT anders als die interne HSQLDB. Da reicht dann auch CONCAT( `mwit`, ', ' , `name` ). In der internen HSQLDB musst Du entweder die Concat-Anweisungen schachteln oder eben ||, gegebenenfalls auch einfach das Pluszeichen, verwenden.

Zum Listenfeld im Verhältnis zum Kombinationsfeld: Das Listenfeld kannst Du doch auch beliebig groß einstellen. Es muss ja nicht aufklappbar sein, sondern kann mit Scrollbalken versehen sein. Dann kannst Du ohne Probleme anfangen zu schreiben und der Cursor springt zu der passenden Stelle.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten