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

[gelöst] Spalte aus einem Tabellenkontrollfeld summieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
harald235

[gelöst] Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von harald235 » Do 29. Mär 2012, 19:20

Hallo Ihr lieben Helfer und Mitfühlenden,
seit kurzem baue ich eine Datenbank zum schreiben von einfachen Rechnungen. Auch ein paar Auswertungen sind enthalten, bei einer komme ich nicht weiter.

Arbeitsmittel:
openSUSE 12.1
LibreOffice Base 3.4.2
HSQLDB 1.8.0.10-24.1 eingebettet

Problem:
Rechnungen aus einem Zeitraum werden aufgelistet, der Zeitraum wird mit Datumsfeldern "von" und "bis" bestimmt, die Daten werden in einem Tabellenkontrollfeld (Unterformular) gelistet. Das alles funktioniert.

Nun soll unter dem Tabellenkontrollfeld die Summe der Rechnungen im gewählten Zeitraum gezeigt werden. Da hakt's bei mir.

Ein Makro steuert den Zeitraum für das Tabellenkontrollfeld :

Code: Alles auswählen

	oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
	oSubSumme = ThisComponent.DrawPage.Forms.getByName("SubSumme") ' das Formular für das Feld "GesSumme"
	cZeitSumme = oSubSumme.getByName("GesSumme")
	
' Filter setzen für Zeitraum
	dVonDatum = oForm.getByName("von_Datum").date
	dBisDatum = oForm.getByName("bis_Datum").date
	oForm.Filter="RechDat >= " + convDate(dVonDatum) + " and RechDat <= " + convDate(dBisDatum)
	oForm.reload
	
'Zugriff auf das Tabellenkontrollfeld "MainForm_Grid"	
	oGridcontrol = oForm.getByINDEX(0) ' oder getByName("MainForm_Grid") 
	
' Zugriff auf Spalte "RNetto"
	oSpalte = oGridcontrol.getByINDEX(4) ' = 5. Spalte = RNetto
	
' Betrag der 1.Zeile auslesen
	cZeitSumme = oSpalte.currentValue
	
' --- bis hier funktioniert alles	

' Spalte RNetto summieren für Zeitraum  ( im Feld "GesSumme")
Aber hier komme ich nicht weiter. Meine Hoffnung ist, mit einem Select Sum Befehl weiterzukommen, aber ich pack's nicht.

Wenn mir freundlicherweise jemand auf die Sprünge helfen könnte?

mfG
harald
Zuletzt geändert von harald235 am So 22. Apr 2012, 11:56, insgesamt 2-mal geändert.

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

Re: Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von F3K Total » Fr 30. Mär 2012, 06:59

Hallo,
folgende Idee:
1.) Trage im Entwurfsmodus in das Formular "SubSumme",Reiter Daten, Feld "Art des Inhaltes" "SQL-Befehl" ein.
2.) Klicke rechts in Zeile "Inhalt" auf das kleine Kästchen mit den drei Punkten und erzeuge die Summen-Abfrage, speichern.z.B.:

Code: Alles auswählen

Select sum ("RNetto") as "SumRNetto" from "Deine Tabelle"
3.) Wende im Makro den gleichen Filter auf beide Formulare an und füge diese Zeile hinten an:

Code: Alles auswählen

oSubSumme.reload
4.) Wähle im Entwurfsmodus für das Kontrollfeld "GesSumme", Reiter Daten, Inhalt: "SumRNetto"
nicht geprüft.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

harald235

Re: Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von harald235 » Fr 30. Mär 2012, 12:08

Hallo R,

danke für die enorm schnelle Antwort und Deine Hilfsbereitschaft.

Leider löst sie mein Problem nicht, denn so wird die Gesamtsumme aller Rechnungen in der Tabelle Rechnung ermittelt. Das habe ich bereits gelöst über "SELECT SUM( "RNetto" ) FROM "Rechnung"".

Ich habe mein Anliegen wohl ungeschickt formuliert.
Mir geht es darum: Standardmäßig werden im "MainForm_Grid" alle Rechnungen gezeigt, mit Angabe der Gesamtsumme im Feld "GesSumme" darunter. Das funktioniert.

Mit Hilfe von 2 Datumsfeldern "von" und "bis" kann anschließend im "MainForm" ein Zeitraum gewählt werden. Nach Auswahl sollen dann nur die Rechnungen des gewählten Zeitraumes in "MainForm_Grid" zu sehen sein. Das klappt auch.

Nur die Summe für den gewählten Zeitraum im Feld "GesSumme" unter dem "Mainform_Grid", das krieg' ich nicht hin.... Mir schwirrt der Kopf vor lauter einfachen, doppelten und doppelt doppelten Anführungszeichen ...

Gruß harald

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

Re: Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von F3K Total » Fr 30. Mär 2012, 19:00

Hallo Harald,
wenn Du meine Antwort genauer gelesen hättest, wäre dir dieser Satz aufgefallen:
F3K Total hat geschrieben:3.) Wende im Makro den gleichen Filter auf beide Formulare an und füge diese Zeile hinten an:

Code: Alles auswählen

oSubSumme.reload
Ich dachte, du hättest dein eigenes Makro verstanden, es muß also vollständig so aussehen:

Code: Alles auswählen

 oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
   oSubSumme = ThisComponent.DrawPage.Forms.getByName("SubSumme") ' das Formular für das Feld "GesSumme"

' Filter setzen für Zeitraum
   dVonDatum = oForm.getByName("von_Datum").date
   dBisDatum = oForm.getByName("bis_Datum").date
   oForm.Filter="RechDat >= " + convDate(dVonDatum) + " and RechDat <= " + convDate(dBisDatum)
   oSubSumme.Filter="RechDat >= " + convDate(dVonDatum) + " and RechDat <= " + convDate(dBisDatum)
   oForm.reload
   oSubSumme.reload
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

harald235

Re: Spalte aus einem Tabellenkontrollfeld summieren (gelöst)

Beitrag von harald235 » Fr 30. Mär 2012, 21:54

Hallo R,

Du bist so richtig gut. Und ich habe Tomaten auf den Augen (Brille -3,5 Dioptrien, reichen wohl nicht mehr).
Besten Dank für die schnelle Hilfe. Es funktioniert.

Viele Grüße harald

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

Re: Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von F3K Total » Fr 30. Mär 2012, 22:04

Tja,
und jetzt Fragst Du Dich, wie kriege ich den Filter wieder raus?
So:

Code: Alles auswählen

oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
oSubSumme = ThisComponent.DrawPage.Forms.getByName("SubSumme") ' das Formular für das Feld "GesSumme"

' Filter löschen

oForm.Filter = ""
oSubSumme.Filter = ""
oForm.reload
oSubSumme.reload
z.B einem Button "alle anzeigen", dem Ereignis Aktion Ausführen zugeordnet, sollte es klappen.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

harald235

Re: Spalte aus einem Tabellenkontrollfeld summieren

Beitrag von harald235 » Fr 30. Mär 2012, 22:37

Danke R,

aber diese Frage hatte ich mir schon beantwortet.

btw: Deine Unterstützung ist einfach gut.

Viele Grüße harald


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