Seite 1 von 1
Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mo 15. Aug 2016, 14:57
von bathroth
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:
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:
. 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
Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mo 15. Aug 2016, 15:41
von RobertG
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:
Gruß
Robert
Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mo 15. Aug 2016, 15:55
von bathroth
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
Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mo 15. Aug 2016, 20:54
von RobertG
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
klappt, nicht aber
? Gibst Du tatsächlich diese eckigen Klammern an?
Gruß
Robert
Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mi 17. Aug 2016, 09:22
von bathroth
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
Re: Kombinationsfeld mit 2 Spalten als FK in Tabelle speichern
Verfasst: Mi 17. Aug 2016, 10:18
von RobertG
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