BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> 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)
[ERLEDGT]Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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
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
Onno
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
Hallo Onno,
ändere zunächst erst einmal die Abfrage:
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:
Gruß
Robert
ä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"
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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
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
Onno
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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
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
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
Moin Robert,
habe gerade ausprobiert: navigiere ich von einem Datensatz zum nächsten, wird's gespeichert.
Aber unter Benutzung des Listenfeldes nicht.
Gruß
Onno
habe gerade ausprobiert: navigiere ich von einem Datensatz zum nächsten, wird's gespeichert.
Aber unter Benutzung des Listenfeldes nicht.
Gruß
Onno
Gruß
Onno
Onno
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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:
Dann wird auf jeden Fall ohne Nachfrage gespeichert. Kann aber zu Fehlermeldungen führen, wenn notwendige Felder nicht bereits ausgefüllt sind.
Gruß
Robert
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
Hallo Robert,
ich habe ein bisschen gesucht und folgenden Code gefunden:
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
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
Ich danke Dir für deine Hilfe.
Gruß
Rainier
Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
Hallo onno,
mit Dem von Dir gewählten
bekommst Du dann Probleme, wenn Du einen neuen Datensatz eingibst. Den speichert das nicht ab.
Gruß
Robert
mit Dem von Dir gewählten
Code: Alles auswählen
oForm.updateRow
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
[ERLEDIGT]Re: Mit Listbox Datensatz aufrufen mit gleichzeitiger Feldberechnung(Addition)
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
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 ❤️