Aufbau einer Datenbank

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

Code: Alles auswählen

SELECT "ID",
COALESCE ( "Pacht/ Verw. Gebühr", 
( SELECT "qm" FROM "Garten" WHERE "a"."Garten_ID" = "ID" )
 * "EUR/qm", 
 0 ) 
AS "Pacht/ Verw. Gebühr_berechnet"
FROM "Pacht" AS "a"
Jetzt einmal an dem Feld "Pacht/ Verw. Gebühr_berechnet" im Detail: Mit AS weise ich einem Feld oder einer Tabelle eine Aliasbezeichnung zu. So heißt dann dieses Feld in der Abfrage oder die Tabelle in der Abfrage.

Der Tabelle "Pacht" ist auch ein Alias zugewiesen. Dies ist notwendig, damit ich in einer Unterabfrage etwas auslesen kann, was sich auf den aktuellen Datensatz bezieht.

Code: Alles auswählen

COALESCE ("Pacht/ Verw. Gebühr", ...)
Nur wenn dieses Feld aus der Tabelle "Pacht" leer ist (NULL), dann wird der nach dem Komma stehenden Teil weiter verfolgt. Ansonsten wird die Gebühr aus dem Eintrag übernommen.
Aus der Tabelle "Garten" soll der Wert für die "qm" ausgelesen werden, der zu aktuellen Datensatz passt. Da ich aber (um eine editierbare Abfrage problemlos zu behalten) die Tabelle "Garten" gar nicht in die Tabellen mit aufgenommen habe, weiß diese Unterabfrage erst einmal nicht, welche qm-Zahl denn ausgelesen werden soll. Also sage ich ihr: Suche in der äußeren Abfrage ("a" - Alias der äußeren Tabelle) dazu das Feld "Garten_ID". Dann weißt Du, zu welchem Garten Du etwas auslesen sollst. Und "EUR/qm" müssen aus der Tabelle "Pacht", jetzt "a", direkt ausgelesen werden.
Ist auch diese Abfrage ohne Ergebnis, so soll stattdessen '0' als Ausgabe der Rechnung geschrieben werden.

Die Sache mit der Unterabfrage kannst Du auch verhindern, indem Du eben beide Tabellen in die Abfrage aufnimmst. Dann müssen aber beide Primärschlüssel aus den Tabellen vorhanden sein und auch die Abfrage so gestellt sein, dass selbst Datensätze aus "Pacht" dabei sind, die keine "Garten_ID" haben.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

ich habe mir die Codes kopiert und bei mir eingefügt. Danach die Feldnamen geändert, so daß es bei mir passt. Ich habe keine Garten ID , sondern ID Gärten. Daher habe ich das angepasst. Auch EUR / qm da mußte ich noch Leerzeichen einfügen usw.

Trotzdem habe ich noch Fehlermeldungen:
Screenshot 2020-11-20 032607.jpg
Screenshot 2020-11-20 032607.jpg (180.15 KiB) 5306 mal betrachtet
Screenshot 2020-11-20 032559.jpg
Screenshot 2020-11-20 032559.jpg (187.27 KiB) 5306 mal betrachtet
Ich habe allen IDs Namen gegeben, damit ich sie besser unterscheiden kann.

Was habe ich falsch gemacht?

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

wenn ich Deinen letzten Tabellenentwurf und die Beziehungen dazu sehe, dann gibt es bei Dir:
"Gärten"."ID Gärten" und "Pacht"."ID Garten". Deswegen musst Du an vielen Stellen Deinen Code ändern. Hier ein Beispiel:

Code: Alles auswählen

COALESCE ("Pacht/Verw. Gebühr",(SELECT "qm" FROM "Gärten" WHERE "a"."ID Gärten" = "ID") * "EUR/qm",0)
Das sucht in "Gärten" ein Feld "ID", das es nach dem Entwurf nicht gibt. Und es sucht in Pacht, hier mit dem Alias "a", ein Feld "ID Gärten", das es auch nicht gibt.
So müsste es nach den letzten Screenshots aus den Beziehungen her heißen.

Code: Alles auswählen

COALESCE ("Pacht/Verw. Gebühr",(SELECT "qm" FROM "Gärten" WHERE "a"."ID Garten" = "ID Gärten") * "EUR/qm",0)
Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Leider immer noch nicht. Ich habe es nochmal geprüft. Alle angegebenen Inhalte befinden sich in den jeweiligen Tabellen.
Screenshot 2020-11-21 001615.jpg
Screenshot 2020-11-21 001615.jpg (177.75 KiB) 5267 mal betrachtet
Warum muß man das denn mehrfach schreiben?

Gruß

Sylvia

P.S: Ich brauche noch Felder für die Raten. Einige überweisen wohl die Pacht in Raten. Konnte ich bisher nicht sehen.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

in der Fehlermeldung steht: Spalte "a"."ID Gärten" nicht gefunden. Hast Du tatsächlich jetzt in der Tabelle "Pacht" "ID Gärten" (mit ä) stehen oder "ID Garten" (mit a) stehen. Mein Änderungsvorschlag ging von "ID Garten" aus, weil das Dein Screenshot zeigte.

Die Bezahlung würde ich in eine separate Tabelle verlegen - mit Zahlungseingang. Dann brauchst Du bei der Pacht nur zu überprüfen, ob jetzt alles eingegangen ist.
Also: Tabelle Zahlung mit eigener ID, Fremdschlüssel "Pacht ID", einem Datumsfeld und einem Währungsfeld.
Dann kannst Du beliebig viele Zahlungen für eine Pacht verbuchen und auch belegen, wann der Zahlungseingang war.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

danke, es sieht so aus als wenn es geklappt hat.
Screenshot 2020-11-22 015629.jpg
Screenshot 2020-11-22 015629.jpg (327.65 KiB) 5222 mal betrachtet
Ich habe die Pacht bereits berechnet in der Tabelle, das muß ich noch ändern. Schreibe ich dort 0 hin?

Dann habe ich auch eine Tabelle ID Zahlung angelegt, mit Betrag und Datum, auch ID Pacht. Dazu eine Beziehung zur Pacht aufgebaut.

Allerdings habe ich keine IDs in der Zahlung drin, daher konnte ich in der Pacht auch keine ID in der Zahlung eingeben.
Sollte ich vielleicht soviele IDs eintragen, wie Mitglieder sind? Irgendwie muß ich ja dann nachher die Zahlungen entsprechend zuordnen.

Muß ich auch den SQL Code ändern?

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

die Felder, die nur berechnet werden, gehören in keine Tabelle. Die musst Du auch nicht auf '0' setzen. Der berechnete Wert wird nirgendwo noch einmal gespeichert. Das erledigt die Abfrage oder für eventuelle Berichte noch besser die Ansicht, die Du aus einer Abfrage zusammenstellst.

Wenn Du anfangs die Felder mit drin hältst um zu überprüfen, ob die Berechnungen nicht falsche Werte ausspucken ist das in Ordnung. Eingaben in die Felder machst Du später aber nicht mehr.

Die Tabelle mit den Zahlungen hat einen Primärschlüssel als Autowert. Diese Tabelle wird als Unterformular zu "Pacht" bzw. der entsprechenden Abfrage eingebunden, und zwar als kleines Tabellenkontrollfeld. Gehst Du dann auf ein Feld für die Pacht, dann siehst Du dort die eingegangenen Zahlungen. Da Du für 2021 planst, ist diese Tabelle im Moment natürlich leer.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

ich habe in der Tabelle keine Felder die berechnet werden.
Screenshot 2020-11-22 162301.jpg
Screenshot 2020-11-22 162301.jpg (73.44 KiB) 5174 mal betrachtet
Ich habe das falsch gesehen, das ist ja die Abfrage "Tabelle" .

Bin ich jetzt soweit, daß ich die Briefe schreiben kann oder muß da noch was gemacht werden? Falls ich die Briefe schon machen kann, wie geht es weiter?

Soll ich jetzt das Formular erstellen?

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

ich würde jetzt das Formular erstellen - ähnlich dem, was ich Dir geschickt habe, nur mit noch einem Unterformular für die Einzahlungen.

Die berechneten Felder würde ich wie bei meiner Vorlage separat farbig kennzeichnen, auf "Nur Lesen" stellen sowie den Tabulator für diese Felder raus nehmen. Gleiches gilt für die Felder, die über einen AutoWert als Primärschlüsselfelder erscheinen.

Und wenn das mit dem Buchen klappt, dann kommt so langsam das Editieren von Briefen - entweder als Serienbrief oder mit dem Berichtsgenerator, der in Base eingebaut ist.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

ich habe versucht das Formular zu erstellen, doch leider ging es nicht. Ich weiß nicht wie du es gemacht hast. Ich habe jetzt 2 Formulare, aber ich brauche 1 Formular wo alles drin steht.

Du hast zwar auch 2 Formulare, aber irgendwie steht alles bei dir unter Mitglieder drin. Wie du dort hingekommen bist, konnte ich nicht erkennen.

Ich habe den Assistenten benutzt.
Screenshot 2020-11-23 013617.jpg
Screenshot 2020-11-23 013617.jpg (4.48 KiB) 5155 mal betrachtet
Screenshot 2020-11-23 013551.jpg
Screenshot 2020-11-23 013551.jpg (226.65 KiB) 5155 mal betrachtet
Ich kann immer nur 1 Unterformular auswählen, mehr lässt der Assistent nicht zu.
Formular Start
Formular Start
Screenshot 2020-11-23 014146.jpg (83.05 KiB) 5155 mal betrachtet
Ich habe hier mal die Pachtabfrage ausgewählt
2. Bild
2. Bild
Screenshot 2020-11-23 014249.jpg (85.05 KiB) 5155 mal betrachtet
Unterformular Tabelle Zahlung
3. Bild
3. Bild
Screenshot 2020-11-23 014336.jpg (79.51 KiB) 5155 mal betrachtet
4. Bild
4. Bild
Screenshot 2020-11-23 014410.jpg (83.99 KiB) 5155 mal betrachtet
Die IDs brauche ich nicht, nur bei den Mitgliedern.

Ich brauche das komplette Formular mit allen Tabellen und Abfragen, als Überblick.
Daraus bastel ich ja dann den Serienbrief.

Danke

Gruß

Sylvia
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Aufbau einer Datenbank

Beitrag von Hiker »

Roxianna hat geschrieben: Mo, 23.11.2020 01:51 Hallo Robert,

ich habe versucht das Formular zu erstellen, doch leider ging es nicht. Ich weiß nicht wie du es gemacht hast. Ich habe jetzt 2 Formulare, aber ich brauche 1 Formular wo alles drin steht.

Du hast zwar auch 2 Formulare, aber irgendwie steht alles bei dir unter Mitglieder drin. Wie du dort hingekommen bist, konnte ich nicht erkennen.
...
Hallo,

der Begriff Formular (englisch Form) wird leider doppelt genutzt. Du meinst einfach die Eingabemaske auf Deinem Bildschirm. Dies kann in LibreOffice aus mehreren Formularen bestehen, die sowohl gleichberechtigt nebeneinander stehen können oder als Unterformular vom im Hauptformular gewählten Datensatz gesteuert werden. Zur Übersicht gibt es den Formularnavigator (das Symbol mit dem Kompassstern in der Ecke).

Ich habe den Assistenten schon ewig nicht mehr verwendet, glaube aber, dass er da nicht weiterhilft.
Unter diesem Link findest Du ein Video, in dem ab ca. 2:56 im Formularnavigator gearbeitet wird und das auch Änderungen der Formularhierarchie zeigt:
https://youtu.be/Jy9CV1yD7ew

Mfg, Jörn.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

mit dem Assistenten für die Formulare habe ich als Hauptformular die Mitglieder genommen und als Unterformular die Pacht. Die beiden sind ja auch in den Beziehungen verbunden, so dass dort im 2. Schritt des Assistenten auf jeden Fall das Unterformular auf einer bestehenden Beziehung beruht.

Du kannst auch zuerst "Mitglieder" nehmen und dann als Unterformular direkt die Abfrage mit den Berechnungen. Dann musst Du die Beziehungen selbst erstellen.

Das weitere Unterformular für die Zahlungen geht nicht über den Assistenten. Der schafft nur ein Hauptformular und ein Unterformular. Danach ist Schicht. Für die Zahlungen musst Du den Formularnavigator aufrufen und dort dann das Formular für die Pacht suchen. Dann mit der rechten Maustaste auf dieses Formular ein neues Formular erstellen ("Zahlungen") und dieses Formular mit den entsprechenden Feldern (wie in Deinem Screenshot "Pacht ID") verbinden. Schau Dir dazu die Formularerstellung im Handbuch an. Das, was Du da erstellst, ist sozusagen ein UnterUnterformular.

Gruß

Robert
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Aufbau einer Datenbank

Beitrag von Stephan »

mit allen Tabellen und Abfragen
Welchen Sinn soll das machen, da Abfragen ja ohnehin bereits die gewünschten Informationen aus Tabellen ziehen? Warum formulierst Du bei Bedarf keine passende Abfrage?


Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Aufbau einer Datenbank

Beitrag von Hiker »

Roxianna hat geschrieben: Mo, 23.11.2020 01:51 ...
Ich brauche das komplette Formular mit allen Tabellen und Abfragen, als Überblick.
Daraus bastel ich ja dann den Serienbrief.
da würde ich widersprechen. Formulare sind zum editieren und Eingeben von Datensätzen. Bei kkeinen Datenbeständen auch zur Übersicht.
Den Serienbrief macht man meist mit einer Abfrage als Datenquelle. Ohne jetzt auf Deine genaue Struktur einzugehen z.B.

Code: Alles auswählen

SELECT Name, Vorname, Garten, Pacht FROM AlleMitglieder WHERE Pacht>0
als Abfrage Pachtbrief, diese als Datenquelle angeben und dann im Writer-Dokument via Einfügen->DatenbankFeld die Felder Vorname, Nachname etc im Text verteilen.

Auch Formatierungen wie Leerzeichen nach dem Vornamen kann man direkt in der Abfrage machen:

Code: Alles auswählen

SELECT ( IFNULL ( Vorname || ' ', '') || Nachname) AS AdrZeile1 FROM ...
Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo,

ich bin jetzt etwas weiter gekommen. Ich habe es nicht ganz so gemacht, wie in dem Video. Mir war es zu umständlich alle Felder einzeln zu erstellen, daher habe ich ein 2. Formular gemacht mit einem Unterformular. Dies habe ich dann kopiert und in die Oberfläche eingefügt. So habe ich die Gartengruppe und die Gärten gemacht. Die Zahlung habe ich einzeln gemacht, waren ja nur 3 Felder.
So sieht es jetzt aus.
Screenshot 2020-11-25 021753.jpg
Screenshot 2020-11-25 021753.jpg (108.42 KiB) 5015 mal betrachtet
Allerdings fehlt die komplette Verknüpfung. Das was im Handbuch auf Seite 218 steht, mit den Auswahlfeldern "Verknüpfen von und Verknüpfen nach " habe ich nicht gefunden. Ich habe mehrfach die Formular-Eigenschaften abgesucht. Der Film hat mir zwar mit dem Navigator etwas geholfen, aber auch dort kann ich keine Verknüpfung finden.
Ich habe mir auch den anderen Film angeschaut, wo einfach nur ein Formular erstellt wird. Vom gleichen Benutzer, nur die Vorgängerversion des Films welches mir Jörn empfohlen hat. Habe auch in Youtube nach anderen Filmen gesucht, aber keinen gefunden, der mir weiterhalf.

Ich verstehe auch nicht, warum ich erst die Beziehungen gemacht habe, wenn jetzt doch keine Verknüpfung ist. Dachte eigentlich, daß sich die IDs aufgrund der Beziehungen unterhalten.

Gruß
Sylvia
Antworten