Wenn dann Bedingungen im Bericht/Formular
Moderator: Moderatoren
Wenn dann Bedingungen im Bericht/Formular
Bisher nutzte ich für die Datenein- und Ausgabe Calc. Nun möchte ich - der Übersicht halber - auf base umstellen.
Folgende Probleme ergeben sich dabei:
- Eingabe von Zahlenwerten deren Summen bereits im Formular angezeigt werden (ist das möglich?)
- Wenn eine bestimmte Summe erreicht ist automatisch Noten anzeigen (bisher als wenn ... dann Verknüpfung in calc z. B.: =WENN(U5>U4*0,9;1;WENN(U5>U4*0,76;2;WENN(U5>U4*0,56;3;WENN(U5>U4*0,38;4;WENN(U5>U4*0,24;5;6)))))
Folgende Probleme ergeben sich dabei:
- Eingabe von Zahlenwerten deren Summen bereits im Formular angezeigt werden (ist das möglich?)
- Wenn eine bestimmte Summe erreicht ist automatisch Noten anzeigen (bisher als wenn ... dann Verknüpfung in calc z. B.: =WENN(U5>U4*0,9;1;WENN(U5>U4*0,76;2;WENN(U5>U4*0,56;3;WENN(U5>U4*0,38;4;WENN(U5>U4*0,24;5;6)))))
Zuletzt geändert von wodga am Di, 08.07.2008 12:49, insgesamt 1-mal geändert.
sidux 2009-04, oo 3.1.1
-
- **
- Beiträge: 39
- Registriert: Mi, 14.03.2007 13:39
Re: Wenn dan Bedingungen im Bericht/Formular
Hallo wodga,
die WENN DANN Bedingung läßt sich am besten mittels der CASE WHEN SQL-Anweisung durchführen. Das Problem hierbei ist, dass diese nur im SQL-Modus "SQL-Kommando direkt ausführen funktioniert". In diesen Modus kommt man, wenn man beim Abfrageentwurf die Design-Ansicht ausschaltet und die SQL-Schaltfläche drückt.
Die SQL-Anweisung würde wie folgt aussehen:
Wenn Du nun die Ergebnisse einer derartigen Abfrage mittels Sun Report Builder ausgeben willst, funktioniert er mit dieser Art von Abfragen nicht. Du kannst Dir aber behelfen, indem Du aus dieser Abfrage eine Ansicht erstellst. Die Ansicht wird dann wie eine Tabelle in den Report Builder eingebunden.
die WENN DANN Bedingung läßt sich am besten mittels der CASE WHEN SQL-Anweisung durchführen. Das Problem hierbei ist, dass diese nur im SQL-Modus "SQL-Kommando direkt ausführen funktioniert". In diesen Modus kommt man, wenn man beim Abfrageentwurf die Design-Ansicht ausschaltet und die SQL-Schaltfläche drückt.
Die SQL-Anweisung würde wie folgt aussehen:
Code: Alles auswählen
CASE
WHEN U5>U4*0,9 THEN 1
WHEN U5>U4*0,76 THEN 2
:
WHEN U5>U4*0,24 THEN 5
ELSE 6
END AS "Note"
Herbie
Re: Wenn dann Bedingungen im Bericht/Formular
cool, da kennt sich jemand aus!
Gibt es dann sowas wie eine Art "sql-Wörterbuch" das du mir empfehlen kannst?
Muss ich für jede Berechnung eine eigene Abfrage erstellen?
Kann ich die Ausgabe auch im Formular anzeigen lassen?
Gibt es dann sowas wie eine Art "sql-Wörterbuch" das du mir empfehlen kannst?
Muss ich für jede Berechnung eine eigene Abfrage erstellen?
Kann ich die Ausgabe auch im Formular anzeigen lassen?
Zuletzt geändert von wodga am Di, 08.07.2008 12:49, insgesamt 1-mal geändert.
sidux 2009-04, oo 3.1.1
-
- **
- Beiträge: 39
- Registriert: Mi, 14.03.2007 13:39
Re: Wenn dan Bedingungen im Bericht/Formular
Hallo wodga,
wenn Du Dich noch nicht mit Datenbanken auseinandergesetzt hast, ist der Einstieg doch etwas umfangreicher. Der Blickwinkel bei Datenbanken ist etwas anders, als bei einem Tabellendokument, bei dem man die Tabelle ja optisch am Bildschirm sieht. Die Überlegungen bei Datenbanken kann man vereinfacht so zusammenfassen:
- Zuerst überlegt man sich die Grundtabellen mit den zugehörigen Datenfeldern (Spalten). Hierbei ist zu beachten, dass keine Daten doppelt geführt werden.
- Anschließend stellt man die Beziehungen zwischen den Tabellen her (z.B. die Tabelle der Namen mit der Tabelle der erzielten Punkte pro Prüfung).
- Mittels Abfragen kann man sich dann Zusammenstellungen der Tabellendaten erzeugen, die für den jeweiligen Einsatzfall geeignet sind. Mit den Abfragen lassen sich Daten in Tabellen verknüpfen. Mittels Funktionen lassen sich neue Spalten erstellen (z.B. die erzielte Note mit der schon erwähnten CASE WHEN Anweisung). Auch kann man mittels Aggregatfunktionen mehrere Zeilen zusammenfassen (z.B. die Summe aller Einzelpunkte der Aufgaben pro Schüler).
Hier noch einige Links:
Einführung Base: http://de.openoffice.org/doc/einfuehrun ... g_Base.pdf
Beispieldatenbank: http://de.openoffice.org/doc/oooauthors ... enbank.pdf
SQL-Tutorial: http://www.sql-und-xml.de/sql-tutorial/index.html
Der Einstieg in Base ist etwas aufwendiger. Es lohnt sich aber. Ist die Datenbank gut angelegt, kann man sich alle Informationen mittels Abfragen zusammenstellen, die man benötigt. Diese kannst Du dann in einem Formular oder einem Bericht darstellen. Der Bericht hat den Vorteil, dass man ihn ausdrucken kann.
wenn Du Dich noch nicht mit Datenbanken auseinandergesetzt hast, ist der Einstieg doch etwas umfangreicher. Der Blickwinkel bei Datenbanken ist etwas anders, als bei einem Tabellendokument, bei dem man die Tabelle ja optisch am Bildschirm sieht. Die Überlegungen bei Datenbanken kann man vereinfacht so zusammenfassen:
- Zuerst überlegt man sich die Grundtabellen mit den zugehörigen Datenfeldern (Spalten). Hierbei ist zu beachten, dass keine Daten doppelt geführt werden.
- Anschließend stellt man die Beziehungen zwischen den Tabellen her (z.B. die Tabelle der Namen mit der Tabelle der erzielten Punkte pro Prüfung).
- Mittels Abfragen kann man sich dann Zusammenstellungen der Tabellendaten erzeugen, die für den jeweiligen Einsatzfall geeignet sind. Mit den Abfragen lassen sich Daten in Tabellen verknüpfen. Mittels Funktionen lassen sich neue Spalten erstellen (z.B. die erzielte Note mit der schon erwähnten CASE WHEN Anweisung). Auch kann man mittels Aggregatfunktionen mehrere Zeilen zusammenfassen (z.B. die Summe aller Einzelpunkte der Aufgaben pro Schüler).
Hier noch einige Links:
Einführung Base: http://de.openoffice.org/doc/einfuehrun ... g_Base.pdf
Beispieldatenbank: http://de.openoffice.org/doc/oooauthors ... enbank.pdf
SQL-Tutorial: http://www.sql-und-xml.de/sql-tutorial/index.html
Der Einstieg in Base ist etwas aufwendiger. Es lohnt sich aber. Ist die Datenbank gut angelegt, kann man sich alle Informationen mittels Abfragen zusammenstellen, die man benötigt. Diese kannst Du dann in einem Formular oder einem Bericht darstellen. Der Bericht hat den Vorteil, dass man ihn ausdrucken kann.
Herbie
Re: Wenn dann Bedingungen im Bericht/Formular
Danke für deine ausführliche Info! Es ist nicht so, dass Datenbanken für mich völliges Neuland wären, da ich bereits ein Grundlagenbuch darüber gelesen habe. Im Detail habe ich jedoch vermutlich doch noch einige Verständnisprobleme.
Vorallem natürlich in Bezug auf das`, was base nun kann und was (noch) nicht.
Ist es möglich über den sql-Befehl "Select Sum" mehrere Spalten einer Zeile zu addieren (und nicht nur mehrere Zeilen einer Spalte)?
In einem Tutorial habe ich gelesen, dass mit openoffice nur "select"-Befehle in sql funktionieren, ist das auch mit der aktuellen 2.4. noch der Fall?
Vorallem natürlich in Bezug auf das`, was base nun kann und was (noch) nicht.
Ist es möglich über den sql-Befehl "Select Sum" mehrere Spalten einer Zeile zu addieren (und nicht nur mehrere Zeilen einer Spalte)?
In einem Tutorial habe ich gelesen, dass mit openoffice nur "select"-Befehle in sql funktionieren, ist das auch mit der aktuellen 2.4. noch der Fall?
sidux 2009-04, oo 3.1.1
-
- **
- Beiträge: 39
- Registriert: Mi, 14.03.2007 13:39
Re: Wenn dann Bedingungen im Bericht/Formular
Die Funktion SUM ist eine Aggregat-Funktion und addiert somit einen Spaltenwert über mehrere Zeilen. Wenn Du einzelne Spalten einer Zeile addieren willst, so geht das viel einfacher. Du addierst einfach die entsprechenden Spalten der Zeile in der Abfrage, z.B.
Diese Abfrage liefert als Ergebnis eine Tabelle mit drei Spalten: Spalte1, Spalte2 und Ergebnis.
Es ist richtig, dass man in OpenOffice nur lesende Abfragen erstellen kann (im Gegensatz zu MS Access). Willst Du mittels SQL auf die Datenbank schreiben, so geht das nur mittels der Funktion Extras SQL-Befehl direkt ausführen. Hierbei ist aber größte Vorsicht geboten, da auf diese Weise durchgeführte Veränderungen der Datenbank nicht mehr rückgängig gemacht werden können.
Code: Alles auswählen
SELECT
Spalte1,
Spalte2,
Spalte1 + Spalte2 AS Ergebnis
FROM tabelle
Es ist richtig, dass man in OpenOffice nur lesende Abfragen erstellen kann (im Gegensatz zu MS Access). Willst Du mittels SQL auf die Datenbank schreiben, so geht das nur mittels der Funktion Extras SQL-Befehl direkt ausführen. Hierbei ist aber größte Vorsicht geboten, da auf diese Weise durchgeführte Veränderungen der Datenbank nicht mehr rückgängig gemacht werden können.
Herbie
Berechnungen im Formular anzeigen
An das Ende meiner select-Anweisung habe ich folgendes angehängt:
"aufg1-01" + "aufg1-02" + "aufg1-03" + "aufg1-04" AS "sumaufg1", "aufg2-01" + "aufg2-02" + "aufg2-03" AS "sumaufg2", "aufg3-01" + "aufg3-02" + "aufg3-03" + "aufg3-04" + "aufg3-05" + "aufg3-06" AS "sumaufg3" FROM "grunddaten-schueler"
Das funktioniert soweit ganz prima. Doch bei der Eingabe der Daten in mein Formular bekomme ich eine Fehlermeldung angezeigt, dass für "sumaufg1" eine Eingabe erforderlich ist, obwohl ich im Formular "nur lesen: ja" eingestellt habe.
Welche Einstellung ist nun im Formular falsch, oder können Berechnungen nicht ins Formular eingebaut werden?
"aufg1-01" + "aufg1-02" + "aufg1-03" + "aufg1-04" AS "sumaufg1", "aufg2-01" + "aufg2-02" + "aufg2-03" AS "sumaufg2", "aufg3-01" + "aufg3-02" + "aufg3-03" + "aufg3-04" + "aufg3-05" + "aufg3-06" AS "sumaufg3" FROM "grunddaten-schueler"
Das funktioniert soweit ganz prima. Doch bei der Eingabe der Daten in mein Formular bekomme ich eine Fehlermeldung angezeigt, dass für "sumaufg1" eine Eingabe erforderlich ist, obwohl ich im Formular "nur lesen: ja" eingestellt habe.
Welche Einstellung ist nun im Formular falsch, oder können Berechnungen nicht ins Formular eingebaut werden?
- Dateianhänge
-
- eingabe-erforderlich.jpg (10.18 KiB) 6762 mal betrachtet
Zuletzt geändert von wodga am Mi, 09.07.2008 13:15, insgesamt 2-mal geändert.
sidux 2009-04, oo 3.1.1
CASE WHEN in der Praxis
Gleich noch eine Frage hinterher: Ich hab das jetzt ausprobiert mit der "case-when-Anweisung"
Der Einfachkeit halber habe ich nur 2 Resultate als Möglichkeiten angegeben:
SELECT "Gesamtpunktzahl" CASE WHEN "Gesamtpunktzahl"<50 THEN "schlecht" ELSE "gut" END AS "Bemerkung" FROM "Abfrage_grunddaten-schueler".
Welchen Fehler habe ich in meinem sql-Ausdruck?
Benötigt man eigentlich immer die Anführungszeichen, oder kann man sie auch weglassen?
Der Einfachkeit halber habe ich nur 2 Resultate als Möglichkeiten angegeben:
SELECT "Gesamtpunktzahl" CASE WHEN "Gesamtpunktzahl"<50 THEN "schlecht" ELSE "gut" END AS "Bemerkung" FROM "Abfrage_grunddaten-schueler".
Welchen Fehler habe ich in meinem sql-Ausdruck?
Benötigt man eigentlich immer die Anführungszeichen, oder kann man sie auch weglassen?
- Dateianhänge
-
- unexpected token.jpg (15.47 KiB) 6748 mal betrachtet
sidux 2009-04, oo 3.1.1
-
- **
- Beiträge: 39
- Registriert: Mi, 14.03.2007 13:39
Re: Wenn dann Bedingungen im Bericht/Formular
Es ist nicht ganz einfach, bzgl. der Fehlermeldungen eine Ferndiagnose durchzuführen. Im Formular kann man ohne Code keine Berechnung durchführen. Was aber geht, als Datenquelle des Formulars eine Abfrage anzugeben. In der Abfrage kann man sich dann die Spalten mit den zugehörigen Berechnungen zurechtlegen und überprüfen, ob sie das richtige Ergebnis liefert. Wenn alles OK ist, dann ein Formular entwerfen und die Abfrage als Datenquelle angeben.
Die CASE WHEN Anweisung muss richtig lauten:
Als Ergebnis bekommst du eine Liste mit zwei Spalten. Die erste mit der Gesamtpunktzahl und die zweite mit der zugehörigen Note. Zu beachten ist, dass die Spalten (Felder) durch Komma voneinander getrennt sind.
Die doppelten Anführungszeichen (") werden benötigt, um die Feldnamen eindeutig zu spezifizieren. Die einfachen Anführungszeichen (') brauchst Du, wenn Du einen Text-String angeben willst. Deshalb kann man sie nicht einfach weglassen.
Die CASE WHEN Anweisung muss richtig lauten:
Code: Alles auswählen
SELECT
"Gesamtpunktzahl",
CASE WHEN "Gesamtpunktzahl"<50 THEN 'schlecht' ELSE 'gut' END AS "Bemerkung"
FROM "Abfrage_grunddaten-schueler"
Die doppelten Anführungszeichen (") werden benötigt, um die Feldnamen eindeutig zu spezifizieren. Die einfachen Anführungszeichen (') brauchst Du, wenn Du einen Text-String angeben willst. Deshalb kann man sie nicht einfach weglassen.
Herbie
Re: Wenn dann Bedingungen im Bericht/Formular
So, damit die Ferndiagnose ein Ende hat, die Datenbank als attachement.
case when
case when
- Die case when-Abfrage funktioniert nicht, da als Quelle eine Tabelle verlangt wird und keine Abfrage
- - Meine Formulare haben als Grundlage die Abfrage.
- Das Formular "Bewertung" ist aus irgendeinem Grund schreibgeschützt,
- "Abfrage_grunddaten-schueler" wurde mit dem Assistenten neu angelegt.
- "Abfrage_grunddaten-schueler" hat das Problem, bei den Berechnungsfeldern eine Eingabe zu fordern.[
- Dateianhänge
-
- Bewertung.odb
- Die besprochene Beispieldatenbank
- (52.68 KiB) 172-mal heruntergeladen
sidux 2009-04, oo 3.1.1
-
- **
- Beiträge: 39
- Registriert: Mi, 14.03.2007 13:39
Re: Wenn dann Bedingungen im Bericht/Formular
Das war mir nicht so klar, dass die CASE WHEN Anweisung nur mit Tabellen funktioniert. Das Problem bekommst Du in Griff, wenn Du aus der Abfrage eine Ansicht erstellst (Klick mit rechter Maustaste auf die Abfrage und die Funktion "Ansicht erstellen" auswählen). Eine Ansicht ist wie eine virtuelle Tabelle und wird in der Datenbank abgelegt. Damit geht es (siehe modifizierte Datei im Anhang). Das Problem mit dem Formular habe ich mir noch nicht angesehen.
Herbie
Re: Wenn dann Bedingungen im Bericht/Formular
Als Zwischenstand nun die Version mit vervollständigter casewhen-Abfrage von der Ansicht.
Das Problem mit den Formularen ist leider ungelöst: wenn ich die case-when Abfrage mit ins Formular einbaue, verlangt das Formular nach Eingabe von Daten in ebendiese Abfrage!
Das Problem mit den Formularen ist leider ungelöst: wenn ich die case-when Abfrage mit ins Formular einbaue, verlangt das Formular nach Eingabe von Daten in ebendiese Abfrage!
- Dateianhänge
-
- Bewertung-0.4.odb
- (26.56 KiB) 220-mal heruntergeladen
sidux 2009-04, oo 3.1.1