🙏 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. 🤗

Beziehungen in Datenbank

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
suwo
Beiträge: 94
Registriert: Sa 12. Mär 2011, 10:40

Beziehungen in Datenbank

Beitrag von suwo » Mi 5. Feb 2014, 21:18

Hallo zusammen.
Ich habe mal ein paar grundsätzliche Fragen: Ich möchte eine Datenbank erstellen um etwas über Beziehungen zu lernen. Als Beispiel habe ich mir eine DB über Autos ausgedacht. In der DB sind sechs Tabellen enthalten. Um die Fahrzeuge zu erfassen habe ich Art, Fabrikat, Typ, Farbe, Kennzeichenteil Stadt und Buchstaben/Zahlen. Ich habe jetzt mal eine Abfrage erstellt und die Tabellen miteinander verbunden. Erstens sind zwischen den Tabellen nur Linien. Muss da nicht an einem Ende eine eins und an dem anderen ein n stehen. Und wie erstelle ich durch ziehen die verschieden Beziehungen (1:n; 1:1; n:m)? Ich habe zwar in dem Base Handbuch die Seiten 46 ff. gelesen, aber irgend wie werde ich daraus nicht schlau. Am Ende möchte ich ein Formular entwerfen, in dem ich die Fahrzeuge über Listen bzw. Kombifelder die Fahrzeuge erfassen kann.

Vielen Dank für die Hilfe,

Suwo
Dateianhänge
Neue Datenbank.odb.zip
(12 KiB) 274-mal heruntergeladen

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

Re: Beziehungen in Datenbank

Beitrag von RobertG » Mi 5. Feb 2014, 21:26

Hallo Suwo,

nur ein kurzer Beitrag: Die Beziehungen für die Datenbank werden unter Extras → Beziehungen definiert. Dort dann auch mit n:1 usw.
Die Beziehungen, die Du in den Abfragen definierst, können die gleichen sein, müssen es aber nicht. Wenn Du bereits unter Extras → Beziehungen die Beziehungen definiert hast, dann werden sie auch in den Abfragen brav vorgegeben.
Beide Oberflächen sehen gleich aus. Der erste Weg nach der Defintion der Tabellen sollte aber immer der zu Extras → Beziehungen sein.

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Beziehungen in Datenbank

Beitrag von F3K Total » Mi 5. Feb 2014, 21:58

Hi,
noch ein kurzer Beitrag, anbei deine Datenbank, der die eigentliche Tabelle "tblFahrzeuge" fehlte, mit einigen Beziehungen und einem Formular zum forschen. Beachte, die Tabelle beinhaltet nur Interger-Werte.


Gruß R
Dateianhänge
Neue Datenbank.odb.zip
(13.4 KiB) 276-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

suwo
Beiträge: 94
Registriert: Sa 12. Mär 2011, 10:40

Re: Beziehungen in Datenbank

Beitrag von suwo » Do 6. Feb 2014, 20:34

Hallo.
Erstmal vielen Dank für die Hinweise. Ich habe jetzt mal ein Listenfeld für die Stadt eingefügt, hat geklappt. Danach habe ich ein Kombifeld für die Buchstaben/Zahlen eingefügt. Ich kann zwar was eingeben, es wird aber nur 0 angezeigt. Das hat wohl was mit dem gebundenen Feld zu tun, ich kann die Einstellung aber nicht finden. Ausserdem werden die neuen Einträge die ich mache, nicht gespeichert.
Ich komme einfach nicht drauf wo die Fehler liegen.

Vielen Dank und Gruß,

Suwo
Dateianhänge
Neue Datenbank1.odb.zip
(18.11 KiB) 228-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Beziehungen in Datenbank

Beitrag von F3K Total » Do 6. Feb 2014, 21:12

hi,
du verwendest ein Kombinationsfeld wie ein Listenfeld, das funktioniert nicht.
Ein Listendfeld ist besonders, die erste Spalte des SQL-Befehles ist die Anzeigespalte, die zweite, hier die jeweilige ID die Spalte, die in die Tabelle geschrieben wird.
Ein Kombinationsfeld hat nur eine Spalte.
Siehe Beispiel

Gruß R
Dateianhänge
Neue Datenbank1.odb.zip
(18.38 KiB) 247-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

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

Re: Beziehungen in Datenbank

Beitrag von RobertG » Do 6. Feb 2014, 21:14

Hallo Suwo,

ein Kombinationsfeld zeigt die gleichen Inhalte an, die es auch abspeichert. Da wird kein 2. Feld gebunden an die Tabelle. Vom Prinzip her ist ein Kombinationsfeld ein Feld, das Textvorschläge für ein Textfeld macht.
FK_Buchstab ist aber ein Feld, das einen Fremdschlüssel abspeichern soll. Da ist es völlig korrekt, dass da nur zahlen auftauchen. Und da die gewählten Texte keinen Zahlenwert darstellen, wird stumpf '0' eingesetzt.
Du willst vermutlich ein Listenfeld einsetzen. Dort kannst Du Text auswählen und einen Fremdschlüssel speichern.

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

suwo
Beiträge: 94
Registriert: Sa 12. Mär 2011, 10:40

Re: Beziehungen in Datenbank

Beitrag von suwo » Fr 7. Feb 2014, 05:08

Hallo.
Ich wollte mal beides ausprobieren. Das Kombifeld dient ja auch dazu, neue Werte hinzuzufügen, ohne das ich die entsprechende Wertetabelle aufrufe, bzw. vorher befülle. Denn mir erscheint ein Listenfeld schon sinnvoll, bei diesem Bsp. wäre es doch aber sinniger ein Kombifeld zu nehmen, wenn es sich um keinen festen Autopool handelt. sondern immer wieder neue Fahrzeuge hinzukommen die natürlich andere Kennzeichen hätten. Ist das überhaupt über eine Beziehung möglich, oder müßte ich dann das Buchstabenfeld in der Haupttabelle platzieren? Und wenn das nicht möglich ist, müßte ja alle Tabellenfelder, die jetzt ausgelagert sind, in die Haupttabelle integriert werden, sofern sie über ein Kombifeld im Formular erweitert werden sollen. Oder habe ich da jetzt einen Verständnisfehler, denn z. B. auch bei den Fahrzeugtypen gibt es ja viele, und jährlich kommen ja auch neue auf den Markt :D , so das dass Listenfeld ja nicht immer aktuell sein kann.

mfg,

Suwo

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

Re: Beziehungen in Datenbank

Beitrag von RobertG » Fr 7. Feb 2014, 19:36

Hallo Suwo,

nur mit einem Listenfeld bekommst Du die Verbindung einer Tabelle mit einer anderen über Fremdschlüssel hin. Mit einem Kombinationsfeld geht das nicht.
Natürlich hast Du am Anfang Probleme, weil Du erst einmal das Listenfeld mit Inhalt versehen musst. Manchmal ist so etwas leichter mit einem Grundstock zu füllen der nur noch wenig erweitert werden muss (Z.B. Automarken, Jahrgänge in einer Schule ...). Oft kommt es aber vor, dass solche Erweiterungen doch sehr störend sind - vor allem wenn Du mit dem Standardverfahren arbeitest: Formular zu, Tabelle aufrufen, neuen Wert eingeben, Formular öffnen, Wert aussuchen.
Folgende Möglichkeiten:
Du baust in Deinem Formular zusätzlich ein weiteres Formular (neben dem bestehenden Hauptformular) ein. Dieses Formular beschickt z.B. die Tabelle Automarken. Ist nur ein Tabellenkontrollfeld zu sehen mit dem Primärschlüssel und der ausgeschriebenen Marke.
Wenn ein neuer Wert benötigt wird gehst Du zu diesem Tabellenkontrollfeld, gibst den neuen Wert ein, gehst zurück zu dem Listenfeld, lässt das Listenfeld aktualisieren (Button unten in der Navigationsleiste) und kannst den Wert dann auswählen.
Das bringt bereits eine deutliche Erleichterung. Jetzt kann es noch mit einem Makro so organisiert werden, dass bei einer Änderung im Formular "Automarken" das Listfeld für die Automarken automatisch mit einem "Refresh" versehen wird.
Noch schöner wäre es vermutlich, wenn Du in die Listenfelder direkt etwas eingeben könntest, das dann automatisch in der einen und der anderen Tabelle abgespeichert wird. So ein Makro habe ich im Handbuch beschrieben und in den Beispieldateien beigefügt. Den Code hier zu posten sprengt den Rahmen. Letztlich funktioniert dieses Makro mit einem (nicht weiter verbundenen) Kombinationsfeld und einem versteckten numerischen Feld. Sieh' Dir einfach die Beispieldatenbank dazu an. heiß Beispiel_Combobox_Listfeld.

Ich würde erst einmal die Grundlagen von Base so weit wie möglich ausreizen und dann eine Entscheidung treffen, ob der Einsatz von Makros notwendig ist. Beim Ausreizen lernst Du viel mehr über die Struktur von Base. Es soll schon Leute gegeben haben, die mit Makros die einfachsten Funktionalitäten nachgebaut haben, weil sie sich mit der eigentlichen Struktur von Base nicht aus kannten.

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

suwo
Beiträge: 94
Registriert: Sa 12. Mär 2011, 10:40

Re: Beziehungen in Datenbank

Beitrag von suwo » Fr 7. Feb 2014, 19:52

Hallo.
Vielen Dank für die Hinweise. Dann werde ich das vermutlich mal mit dem Unterformular versuchen. Makros wollte ich noch hinten anstellen. Ersten ist mir das zu komplex und zweitens habe ich auch schon genug unerkundete Möglichekeiten ohne Makros die ich noch ausprobieren will.
Ich werde mich wieder melden,

suwo

suwo
Beiträge: 94
Registriert: Sa 12. Mär 2011, 10:40

Re: Beziehungen in Datenbank

Beitrag von suwo » Mo 10. Feb 2014, 15:09

Hallo.
Ich schon wieder. ich habe das ganze jetzt mal ein wenig umgebaut. Das heißt, weniger Tabellen ausgelagert. Das mit den Listenfeldern klappt soweit. Aber jetzt zeigen mir alle anderen Felder, die in der Haupttabelle verblieben sind, eine Null an. Das erste Feld habe ich zum Ausprobieren als Kombifeld definiert. Die anderen als Textfeld gelassen. Eingaben funktionieren, aber beim Sprung in das nächste Feld wird der Wert auf Null gesetzt. Ich vermute mal wieder eine Verständnisfrage meinerseits. Kann mir jemand auf die Sprünge helfen und die DB korrigieren?

Danke im vorraus,

Suwo
Dateianhänge
NeueDatenbank1.odb.zip
(21.57 KiB) 271-mal heruntergeladen


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