Hallo Nick,
bevor ich auf das Untenstehende eingehe: Du hast bei Deiner Mail eine andere
Mail als Grundlage genommen und auf "Antworten" geklickt - vermutlich
unbewusst. So erscheint diese Mail jetzt eingeordnet unter "Schwierigkeiten
mit Briefe ... "
>
> Wie kann man in einer Datenbank eine Formel eingeben, so dass man das
> Resultat im Formular sofort sieht. z. B. „Feld xy“+“Feld abc“.
Kleine Ernüchterung vorweg: Auch wenn es bei den Formularen so etwas wie das
Tabellenkontrollfeld gibt heißt das noch lange nicht, dass gleiche Funktionen
wie bei einer Tabellenkalkulation vorhanden sind. Das Kontrollfeld ist dazu
gedacht, auf möglichst komfortable und übersichtliche Art Daten darzustellen
und in eine Datenbank reinzubringen - also keine Formeln ...
2 Möglichkeiten gibt es dennoch, wobei die einfachere Möglichkeit die Werte
nicht "sofort" anzeigt sondern erst nach der Abspeicherung und Aktualisierung
der Ansicht.
1. einfache Version: Mache eine Abfrage, die sich lediglich auf die eine
Tabelle bezieht, die Du sowieso in Deinem Formular darstellen willst. In einem
zusätzlichen Feld Addierst Du dann einfach die Werte der beiden gewünschten
Felder.
Im Formular wirst Du dieses Feld ebenfalls einbauen müssen und dann am besten
als schreibgeschützt und ohne Tabstop versehen. Die Werte sind bei
abgespeicherten Datensätzen sichtbar, nicht aber während der Eingabe, wie dies
z.B. in Calc der Fall wäre.
2. etwas komplizierte Version: Lies per Makro die Werte aus "Feld xy" und
"Feld abc" aus, ermittle den neu darzustellenden Inhalt durch Addition und
schreibe ihn in das gewünschte "Feld z". Das Makro verbindest Du dann mit den
Feldern "xy" und "abc" mit der Eigenschaft "Bei Focusverlust".
Makro:
SUB Feldaddition
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM oFeld3 AS OBJECT
DIM i AS INTEGER
oDrawpage=thisComponent.drawpage
oForm=oDrawpage.forms.getByName("Formularname")
oFeld1=oForm.getByName("Feld xy")
oFeld2=oForm.getByName("Feld abc")
oFeld3=oForm.getByName("Feld z")
i = oFeld1.currentValue + oFeld2.currentValue
oFeld3.BoundField.updateInt(i)
END SUB
Am besten ist die Kombination beider Wege, denn sonst wird mit dem einen nur
das angezeigt, was abgespeichert wurde und mit dem anderen das, was gerade
bearbeitet wird.
Das obige Makro geht übrigens davon aus, dass es sich bei Deinem Formular
nicht um ein Tabellenkontrollfeld handelt. Bei diesem müsste dann die
Vorgehensweise so sein, dass die Felder 1 bis 3 nicht als direkt zum Formular
gehörig angesprochen werden sondern als Unterpositionen zum
Tabellenkontrollfeld. Wenn Dies der Fall sein sollte und Du damit keine
Erfahrung hast melde Dich einfach wieder.
Gruß
Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]