BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[ERLEDGT]Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

[ERLEDGT]Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Mi 2. Sep 2020, 20:17

Ich bin Neuling hier. Durch Wechsel zu Mac versuche ich Erfahrung mit Libre-oder Open Office zu machen.
Die Datenbank "Kosten" hat die Tabelle 'Festkosten' mit den Feldern: "Monat", "FKtxt1" - "FKtxt15", "FK1" - "FK15"(Währungsfelder), "SumFK"
Ein Listenfeld für die Monate habe ich eingerichtet, welches funktioniert. Jetzt möchte ich, wenn ich einen Monat aufrufe, daß automatisch die Summe der FK-Felder in SumFK für den ausgewählten Monat erscheint.
Ein Macro habe ich, wie es VBA kenne, in Kosten.ODB erstellt:
Sub_form_current ()
SumFK = FK1 + FK2 usw
End Sub
funktioniert leider nicht! Dann habe Ich eine Abfrage erstellt SummenAbfrage und Festkosten. Die Summe wurde ausgegeben aber der Datensatz läßt sich nicht editieren.
Ich würde mich freuen, wenn mir jemand helfen kann.

Gruß
Onno
Dateianhänge
Kosten.odb.zip
(12.9 KiB) 152-mal heruntergeladen
Zuletzt geändert von Onno am Mi 9. Sep 2020, 11:49, insgesamt 1-mal geändert.
Gruß
Onno

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von RobertG » Do 3. Sep 2020, 16:13

Hallo Onno,

ändere zunächst erst einmal die Abfrage:

Code: Alles auswählen

SELECT "a".*, COALESCE("FK1",0) + COALESCE("FK2",0) + COALESCE("FK3",0) AS "SummeFK" 
FROM "Festkosten" AS "a"
Dann hast Du die Summe beständig in der Abfrage. Die Abfrage kannst Du auch zur Eingabe von Daten nutzen. Und das Feld SumFK löscht Du, da sich das aus den anderen Feldern ergibt.

Natürlich kannst Du das Ganze auch automatisch vorher sichtbar erstellen lassen - während der Eingabe. Du musst Du im Makro aber die Felder innerhalb des Formulars ansprechen und nicht einfach irgendwelche Variablen aneinanderreihen. Außerdem hängt dann die Anzeige davon ab, ob in den Feldern für die Eingabe der einzelnen Beträge etwas geändert wurde.

Das folgende Makro, an die jeweiligen Felder für die Betragseingabe gebunden (Ereignis: Text modifiziert), würde Dir das entsprechende Ergebnis auch während der Eingabe anzeigen:

Code: Alles auswählen

Sub Berechnen(oEvent AS OBJECT)
	DIM do1 AS DOUBLE
	DIM do2 AS DOUBLE
	DIM do3 AS DOUBLE
	DIM doTarget AS DOUBLE
	oForm = oEvent.Source.Model.Parent
	oField1 = oForm.getByName("WF1")
	oField2 = oForm.getByName("WF2")
	oField3 = oForm.getByName("WF3")
	oFieldTarget = oForm.getByName("WF5")
	do1 = oField1.CurrentValue
	do2 = oField2.CurrentValue
	do3 = oField3.CurrentValue
	doTarget = do1 + do2 + do3
	oFieldTarget.BoundField.UpdateDouble(doTarget)
End Sub
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

Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Fr 4. Sep 2020, 12:24

Hallo Robert,
danke, das funktioniert einwandfrei.
Wenn ich aber einen Wert z.b. im "Jan" ändere und wechsel im Listenfeld auf "Feb", dann wird der geänderte Wert im "Jan" leider nicht gespeichert, heißt:selektiere ich wieder "Jan", erscheint der alte Wert wieder. Ich habe das mit
".Store()" versucht - kein Erfolg.

Gruß
Onno
Gruß
Onno

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von RobertG » Fr 4. Sep 2020, 16:20

Hallo Onno,

ich verstehe nicht, was eine Eingabe in ein Textfeld mit einer Berechnung zu tun haben soll. Auch weiß ich nicht, was Du mit .Store erreichen willst. Speichern geht doch einfach über das Formular - Sprung zum nächsten Datensatz, oder?

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

Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Sa 5. Sep 2020, 11:09

Hallo Robert,

Im Formular wähle ich im Listenfeld "Feb" aus und ändere den Inhalt in "FK1" von 20 auf 25, so wird die Berechnung ausgeführt-ok.
Aber der geänderte Wert wird nicht in der Tabelle gespeichert! Denn wenn ich nach der Änderung im "Feb" einen anderen Monat aufrufe, ist der Wert im "Feb" wieder 20.
Also muß bei Änderungen in einem Monat erst das Formular beenden und speichern "ja", um dann in einem andern Monat Änderungen vorzunehmen.
Das erscheint mir sehr umständlich.
Gibt es die Möglichkeit z.Bsp. im Feld "FK1" oder mit einem Button ein Macro zum speichern einzurichten?
In MS Access ändere ich einen Wert und er wird sofort übernommen.

Ich hoffe, meine Schilderung ist nicht zu umständlich.

Gruß

Onno
Gruß
Onno

Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Sa 5. Sep 2020, 11:16

Moin Robert,

habe gerade ausprobiert: navigiere ich von einem Datensatz zum nächsten, wird's gespeichert.
Aber unter Benutzung des Listenfeldes nicht.

Gruß

Onno
Gruß
Onno

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von RobertG » Sa 5. Sep 2020, 19:58

Hallo Onno,

dass das nicht gespeichert wird liegt an der Konstruktion Deines Formulars zusammen mit einem Makro, das das Formular zu einem anderen Datensatz springen lässt. Dadurch, dass Du dieses Makro auch noch direkt in das eigentliche Formular einbaust (Statt in ein Nebenformular oder geregelt über ein Hauptformular) scheint es möglich zu sein, dass Du alle Sicherheiten der Abspeicherung austrickst. Sonst würde nämlich eine Nachfrage kommen, ob der Datensatz abgespeichert werden soll - wie z.B. beim Schließen des Formulars.
Du kannst natürlich in das Makro zur Berechnung den folgenden Code einbauen:

Code: Alles auswählen

IF oForm.isNew THEN
oForm.insertRow()
ELSE
oForm.updateRow()
END IF
Dann wird auf jeden Fall ohne Nachfrage gespeichert. Kann aber zu Fehlermeldungen führen, wenn notwendige Felder nicht bereits ausgefüllt sind.

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

Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Di 8. Sep 2020, 14:35

Hallo Robert,

ich habe ein bisschen gesucht und folgenden Code gefunden:

Code: Alles auswählen

Sub Reload 
   dim oDoc as object, oForm as object
    oDoc = ThisComponent
    oForm = oDoc.DrawPage.Forms(0)
    oForm.updateRow()
   REM oForm.reload
   End Sub
    
Das Macro habe im Feld "WF1" nach Aktualisieren eingefügt. "oForm.Reload" deaktiviert, damit es nicht wieder auf den ersten Datensatz springt. So funktioniert das Speichern jedes Datensatzes nach Änderung..
Ich danke Dir für deine Hilfe.

Gruß

Rainier

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von RobertG » Di 8. Sep 2020, 16:44

Hallo onno,

mit Dem von Dir gewählten

Code: Alles auswählen

oForm.updateRow
bekommst Du dann Probleme, wenn Du einen neuen Datensatz eingibst. Den speichert das nicht ab.

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

Onno
Beiträge: 10
Registriert: Mi 2. Sep 2020, 12:28

[ERLEDIGT]Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)

Beitrag von Onno » Mi 9. Sep 2020, 11:42

Hallo Robert,

danke für den Hinweis.
da ich ja nur 12 Datensätze (Monate) habe, werden keine neuen Datensätze hinzugefügt.
Die ganze Aufgabe hätte ich sicherlich mit einer Tabellenkalkulation einfacher bewerkstelligen können aber ich arbeite gerne mit Datenbanken.
Dank Deiner Hilfe läuft es so, wie ich es mir vorgestellt habe.
Vielen Dank nochmal.

Gruß

Onno

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten