Date: prev next · Thread: first prev next last
2014 Archives by date, by thread · List index


Danke Robert.

Jetzt habe ich in der Hilfe und dem schönen Base-Handbuch versucht, herauszufinden, wie ich ein Tabellenkontrollfeld in ein Formular bringe. das Icon "Kontrollfeld" ist inaktiv, solange ich kein existierendes Feld markiert habe. Für den Zweck (Ansehen der Berechnungsergebnisse) reichen ja Felder, die in der Tabelle gar nicht genannt sind, für spätere Auswertungen, Listen etc. habe ich die Formeln in der Abfrage. Um in meiner Minimaske die geplanten 5 Ergebnisfelder mit Makros zu füllen, muß ich jetzt erst mal die 20 Handbuchseiten zum Thema "Makros in Base" durcharbeiten. Mal sehen, ob ich zurechtkomme....

Viele Grüße
Jürgen



Am 19.02.2014 14:02, schrieb Robert Großkopf:
Hallo Jürgen,

ich habe in Base zu einer Tabelle und einer Abfrage ein Formular als
Eingabemaske erstellt. Da ich mit den eingegebenen Daten Berechnungen anstelle,
habe ich als Quelle die Abfrage genommen. "Im Prinzip" klappt das gut,
allerdings werden die Berechnungen erst durchgeführt, wenn ich auf den Buttom
"Datensatz speichern" klicke. Da das Prog. erst mal erfahren muß, daß die
Abfrage auch ausgeführt/aktualisiert werden soll, leuchtet mir das noch ein.

Das geht über die Abfrage nicht anders, weil die Daten ja erst hinterher
bei der Datenbank landen und dann die Daten aus der Datenbank für die
Abfrage wieder verwendet werden.

Die Möglichkeit, hierfür eine Abfrage zu verwenden, ist nicht geeignet
für Formulare, bei denen Du Daten in Einzelfelder eingibt. Dafür eignet
sich bei Datenänderungen und Neueingaben am besten das
Tabellenkontrollfeld. Dann siehst Du ja den gerade eingegebenen Datensatz.

Du musst so einen Wert über Makros berechnen. So etwas dürfte in etwa so
gehen:
SUB Eingabekontrolle(oEvent AS OBJECT)
oFeld = oEvent.Source
oForm = oFeld.Parent
oFeld2 = oForm.getByName("Zielfeldname")
oFeld2.CurrentValue = oFeld.getCurrentValue / 123456
END SUB

Habe ich jetzt nicht weiter ausprobiert. Das Makro schreibt dann den
entsprechenden Wert in die Zelle "Zielfeldname" im gleichen Formular wie
dem, in dem das Feld liegt. Das Makro sollte z.B. beim Verlassen der
Zelle ausgelöst werden.
Das Makro schreibt den Wert nicht in eine Datenbank. Dazu musst Du an
oFeld2.BoundField.updateDouble(oFeld.getCurrentValue / 123456)
gehen, da hiermit dann auch ein Wert an die darunterliegende Tabelle
weitergegeben wird. Das ist aber nicht erforderlich, da letztlich doch
der Wert sowieso berechnet und nicht abgespeichert wird.

Ich hoffe, dass das so hin haut. Mit den direkten Wegen über das
auslösende Ereignis habe ich noch nicht so viel Erfahrung.

Gruß

Robert




--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.