Seite 1 von 1
Mehrere Abfragen in einen Bericht einbinden
Verfasst: Fr, 30.01.2009 15:16
von MacLennan
Guten Tag
Für eine Vereinsbuchhaltung habe ich eine Tabelle erstellt, in welche ich Einnahmen und Ausgaben eintragen kann. Diese Beträge werden Konten 1 - 5 zugewiesen.
Anschliessend habe ich 6 Abfragen erstellt, welche mir die Saldi der Konten 1 - 5 errechnen sowie den Gesamtsaldo. Ich kann nun die 6 Zahlen mit Kopieren / Einfügen in ein Writer-Dokument übertragen, aber das ist etwas umständlich:
Ist es möglich, einen Bericht zu erstellen, welcher alle 6 Abfragen ausliest und die Saldi übersichtlich darstellt?
Mit freundlichen Grüssen
MacLennan
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: So, 08.02.2009 12:58
von Barlee
Hallo MacLennan,
ein anderer Vorschlag:
Wie wäre es, wenn die die 6 einzelnen Abfragen mittels UNION zu einer einzelnen verbindest? Damit erhältst Du eine Ergebnistabelle in der Form:
Saldo Konto1
Saldo Konto2
Saldo Konto3
Saldo Konto4
Saldo Konto5
Saldo Gesamt
Da Du dann nur noch einen Abfrage hast, kannst Du diese als Grundlage für den Bericht angeben.
Wäre das eine Alternative für Dich?
Gruß Barlee
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Mi, 11.02.2009 12:03
von MacLennan
Hallo Barlee
Herzlichen Dank für Deinen Vorschlag! Er tönt interessant. Leider bin ich aber ein so blutiger Anfänger mit dieser Datenbank, dass ich keine Ahnung habe, wie ich das tun sollte. Den Begriff "UNION" habe ich auch in der OOo Hilfe nicht gefunden.
Mit freundlichen Grüssen
MacLennan
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Mi, 11.02.2009 19:30
von Barlee
Hallo MacLennan,
zur UNION gibt es hier im Forum schon einige Beiträge, z.B. hier:
viewtopic.php?f=8&t=5550&p=64559&hilit=UNION#p64559
Du schreibst, dass Du 6 Abfragen erstellt hast. Weiterhin schreibst Du von 6 Zahlen, so dass ich davon ausgehe, dass jede Abfrage wirklich nur eine Zahl zurückgibt - und zwar den jeweiligen Saldo.
Angewendet auf Dein Beispiel würde die UNION dann so aussehen:
Code: Alles auswählen
[Abfrage_1]
UNION ALL
[Abfrage_2]
UNION ALL
[Abfrage_3]
UNION ALL
[Abfrage_4]
UNION ALL
[Abfrage_5]
UNION ALL
[Abfrage_6]
Du musst [Abfrage_1] - [Abfrage_6] durch den Code Deiner bereits erstellten Abfragen ersetzen (z.B. SELECT Saldo1 FROM Tab_Saldo)
Um eine UNION auszuführen, muss unter "Bearbeiten" die Option "SQL Kommando direkt ausführen" aktiviert sein.
Falls Du Probleme mit der Anwendung hast, dann kopiere am besten Deine Abfragen hier ins Forum.
Gruß Barlee
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Do, 12.02.2009 17:43
von MacLennan
Hallo Barlee
Ich habe es versucht und habe eine neue Abfrage erstellt, Die so aussieht ("1." - "5." und "Saldo" sind die Namen der alten Abfragen, "Buchhaltung XXX" ist der Name der Tabelle):
SELECT 1._Beiträge_Aktivmitglieder FROM Buchhaltung_XXXX
UNION ALL
SELECT 2._Beiträge_Passivmitglieder FROM Buchhaltung_XXXX
UNION ALL
SELECT 3._Auftritte FROM Buchhaltung_XXXX
UNION ALL
SELECT 4._Material FROM Buchhaltung_XXXX
UNION ALL
SELECT 5._Verwaltung_&_Verschiedenes FROM Buchhaltung_XXXX
UNION ALL
SELECT Saldo FROM Buchhaltung_XXXX
Die Option SQL-Kommando direkt ausführen habe ich aktiviert (in den 6 alten Abragen ist sie nicht aktiviert). Die Leerzeichen der alten Abfragen habe ich durch Unterstriche ersetzt. Eine weitere Abfrage habe ich gleich geschrieben, mit Abfrage- und Tabellennamen in Anführungs- und Schlusszeichen. Es hat nicht geklappt. Die Fehlermeldung lautete:
Die Dateninhalte konnten nicht geladen werden. Table not found in statement:
und unter Fehler:
SQL-Status: S0002
Fehler-Code: -22
Table not found in statement [SELECT "1._Beiträge_Aktivmitglieder" FROM "Buchhaltung_XXXX"
UNION ALL
SELECT "2._Beiträge_Passivmitglieder" FROM "Buchhaltung_XXXX"
UNION ALL
SELECT "3._Auftritte" FROM "Buchhaltung_XXXX"
UNION ALL
SELECT "4._Material" FROM "Buchhaltung_XXXX"
UNION ALL
SELECT "5. Verwaltung_&_Verschiedenes" FROM "Buchhaltung_XXXX"
UNION ALL
SELECT "Saldo" FROM "Buchhaltung_XXXX"]
Wenn ich statt der Unterstriche wieder Leerschläge einbaue, sieht die Fehlermeldung ähnlich aus. Die alten Abfrage funktionieren und ergeben eine Zahl mit zwei Stellen nach dem Komma. Ich glaube, dass ich etwas Grundsätzliches falsch mache. Vermutlich bin ich im falschen Forum - aber "Base / Anfänger" oder "Base / 1ST-BASE" gibt es leider nicht.
Herzliche Grüsse
MacLennan
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Do, 12.02.2009 19:48
von Barlee
Hallo MacLennan,
Vermutlich bin ich im falschen Forum
Nein, hier bist Du schon richtig!
Die Leerzeichen der alten Abfragen habe ich durch Unterstriche ersetzt
Und genau hier liegt Dein Fehler. Du weist selbst darauf hin:
"Buchhaltung XXX" ist der Name der Tabelle
Wenn in der alten (funktionierenden) Abfrage z.B. steht:
Code: Alles auswählen
SELECT "1. Beiträge Aktivmitglieder" FROM "Buchhaltung XXXX"
dann wird:
Code: Alles auswählen
SELECT 1._Beiträge_Aktivmitglieder FROM Buchhaltung_XXXX
zu dem von Dir beschriebenen Fehler führen. Warum? Weil es die Tabelle "Buchhaltung_XXX" nicht gibt. Sie heißt richtig "Buchhaltung XXX". Und genauso musst Du sie in der Abfrage ansprechen. Das gilt ebenfalls für die Spaltenbezeichner:
"1. Beiträge Aktivmitglieder" enstpricht nicht 1._Beiträge_Aktivmitglieder. Demnach wird die Spalte nicht gefunden, was mit dem Fehler "COLUMN NOT FOUND" quittiert würde.
Mache folgendes:
Benutze die alten Abfragen. Sie funktionieren ja und sollten demnach korrekt die Spalten ansprechen. Setze die Namen der Spalten und der Tabelle in Anführungsstriche und probiere erneut, die Abfrage auszuführen.
Also z.B.:
Code: Alles auswählen
SELECT "1. Beiträge Aktivmitglieder" FROM "Buchhaltung XXXX"
UNION ALL
SELECT "2. Beiträge Passivmitglieder" FROM "Buchhaltung XXXX"
UNION ALL
SELECT "3. Auftritte" FROM "Buchhaltung XXXX"
Gruß Barlee
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Fr, 13.02.2009 15:47
von MacLennan
Lieber Barlee
Zuerst danke ich Dir herzlich dafür, dass Du Dich so um mich bemühst. Deinen letzten Rat habe ich ausprobiert, aber ohne Erfolg. Irgendwie bin ich plötzlich darauf gekommen, eine der alten Abfragen in SQL-Ansicht zu öffnen. Das hat mich zu einem Versuch veranlasst und jetzt sieht meine neue Abfrage so aus:
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 1.0
UNION ALL
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 2.0
UNION ALL
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 3.0
UNION ALL
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 4.0
UNION ALL
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 5.0
UNION ALL
SELECT SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX"
Diese Abfrage ergibt in einer Spalte "Betrag" 6 Zahlen untereinander. Weil die Tabelle erst 2 Datensätze enthält (einmal Konto 5, einmal Konto 6), sind die oberen 3 Felder leer. Im untersten sind die beiden vorhandenen Beträge aber korrekt addiert.
Über diesen Teilerfolg freue ich mich natürlich. Einen Bericht konnte ich nur unter Verwendung des Assistenten erstellen. Er bezieht sich auf diese Abfrage und nur das Feld "Betrag" stand zur Verfügung. Er zeigt nur eine Zahl an. Diese kann ich mir nicht erklären. Sie ist deutlich grösser als die beiden Beträge in der Tabelle und auch grösser als mit zusätzlich dazu gezähltem Gesamtsaldo. Wenn der Bericht ausgeführt werden soll, erscheint eine Fehlermeldung:
Die Abfrage mit dem Ausdruck (Ganze Abfrage in SQL-Ansicht) konnte nicht ausgeführt werden. Überprüfen Sie die Datenquelle.
Trotz der zwischenzeitlichen Freude über die gelungene Abfrage stehe ich nun wieder da wie der Esel am Berg. In der base-Einführung steht nichts von "Bericht in SQL-Ansicht erstellen", dafür von "Bericht-Designer" und von "Bericht in Basic", das aber nicht weiter erklärt wird.
Wäre so ein Bericht zu erstellen oder muss ich bei der Abfrage anders vorgehen?
Mit freundlichen Grüssen
MacLennan
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Fr, 13.02.2009 20:35
von Barlee
Hallo MacLennan,
sehr schön, geht doch voran

Zuerst eine Anregung. Damit Du in Deiner Abfrage auch weißt, welcher Betrag zu welchem Konto gehört, könntest Du sie folgendermaßen erweitern:
SELECT
'Konto 1.0' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 1.0
UNION ALL
SELECT
'Konto 2.0' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 2.0
UNION ALL
SELECT
'Konto 3.0' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 3.0
UNION ALL
SELECT
'Konto 4.0' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 4.0
UNION ALL
SELECT
'Konto 5.0' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX" WHERE "Konto" = 5.0
UNION ALL
SELECT
'Gesamt' AS "Betrag_von", SUM( "Betrag" ) AS "Betrag" FROM "Buchhaltung XXXX" AS "Buchhaltung XXXX"
Führe sie einmal aus und schau Dir das Resultat an. Es macht, meiner Meinung nach, die Sache ein wenig übersichtlicher.
---
Du beschreibst zwei Probleme. Zum Einen die Darstellung einer recht großen Zahl anstelle der erwarteten Einzelsummen; zum Anderen eine Fehlermeldung. Letztere liegt vermutlich daran, dass direkt auf die Abfrage zugegriffen wird, die ihrerseits ein direktes Ausführen des SQL Kommandos erfordert. Also gehe folgendermaßen vor:
- Erstelle aus Deiner Abfrage eine Ansicht (einen View). Rechte Maustaste auf Deine Abfrage >> "Als Ansicht erstellen". Die Ansicht findest Du anschließend unter "Tabellen"
- Erstelle erneut mit Hilfe des Assistenten einen Bericht und wähle den soeben erstellten View als Datenbasis aus. Nach erfolgreichem Abschluss sollten nun alle Zahlen einzeln ausgewiesen werden.
Viel Erfolg!
Gruß Barlee
Re: Mehrere Abfragen in einen Bericht einbinden
Verfasst: Fr, 13.02.2009 22:45
von MacLennan
Lieber Barlee
Schon bevor ich Deine Antwort gelesen habe, bin ich darauf gekommen, eine neue Abfrage zu erstellen, welche die 6 Zahlen der vorhergehenden ausliest. Dann konnte ich einen Bericht erfinden, welcher die 6 Zahlen untereinander schreibt. Weil ich aber links neben die Zahlen nicht hinschreiben konnte, wofür sie stehen, musste ich das darüber tun. Das war natürlich nicht sehr übersichtlich!
Deine Idee, 'Konto 1.0' AS "Betrag_von", in die Abfrage (a) einzufügen, ist einfach grossartig. Ich habe eine Abfrage (b) erstellt, welche die Abfrage (a) liest und dann einen Bericht, der die Abfrage (b) aufbereitet und darstellt. Das Resultat ist genau das, was ich gesucht habe.
Vielen herzlichen Dank!!!
MacLennan