Juni 24, 2021, 20:23:45

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Funktion im Formular, Wert Übergabe an Tabelle

Begonnen von Magix1977, Februar 12, 2021, 21:48:58

⏪ vorheriges - nächstes ⏩

Magix1977

Hallo zusammen,

ich weiß leider nicht, ob das Thema hier hingehört oder aber in die Kategorie "Formulare", daher
habe ich an beiden Stellen gepostet - sorry, wenn es falsch sein sollte.

ich habe in einem Formular ein Feld, welches mit einer Funktion berechnet wird. Die Funktion heißt FktCntTage, hier wird ein Wert ermittelt. Dieser Wert der dort ermittelt wird, soll jetzt in die Tabelle geschrieben werden, in das Feld Tage.

Wie stelle ich das an? Ich habe schon so etwas hier gefunden:
Me![Feld] = Me![Zielfeld]

Aber wie setze ich das jetzt mit der Funktion um?

Me![Tage] = Me![FktCntTage] --> hier läuft der Eintrag dann auf einen Fehler.... und umgekehrt genauso...

Wäre über Eure Hilfe dankbar!

Gruß

Magix1977

MzKlMu

Hallo,
wie sieht denn die Funktion aus und wie und wo wird diese aufgerufen ?
Und was soll in welchem Feld gespeichert werden.

Eigentlich ist es in einer Datenbank nicht üblich berechnet Werte zu speichern.
Es wird immer neu berechnet wenn der Wert benötigt wird. Die Funktion lässt sich auch in einer Abfrage nutzen, welche gleichwertig zu einer Tabelle ist (meist ist eine Abfrage sogar zu bevorzugen).

Warum willst Du also speichern ?
Gruß
Klaus

andyfau

Hallo,

ab Version Access2010 lassen sich berechnete Felder direkt in Tabellen definieren. Dies schließt auch den Aufruf von Funktionen ein. Optimal ist es, wenn alle Werte, die zur Berechnung benötigt werden, bereits im Datensatz, in der Tabelle vorhanden sind. Dann kann man die Formel mit der Zauberstabfunktion praktisch direkt während des Aufbaus der Tabelle entwickeln.

Das berechnete Tabellenfeld kann man dann in Formularen, Abfragen, Report, etc. wie jedes andere Tabellenfeld ansprechen.

Beste Grüße
Andreas

MzKlMu

Hallo,
ZitatOptimal ist es, wenn alle Werte, die zur Berechnung benötigt werden, bereits im Datensatz, in der Tabelle vorhanden sind.
Das ist keinesfalls optimal, sondern je nach Datensatzzahl eine ziemliche Bremse.
In der Tabelle wird nämlich immer berechnet, auch wenn Du nur 5 Felder der Tabelle zur Anzeige brauchst und das berechnete Feld gar nicht dabei ist. Es wird trotzdem berechnet.
Daher ist es eher empfehlenswert Berechnungen in Abfrage zu verlegen, die dort fast genaus so wie die berechneten Felder in Tabellen angelegt werden. Auch mit Nutzung von Funktionen. Und des Zauberstabs.  ;D

Und die Berechnung wird nur in die Abfrage aufgenommen, wenn diese auch gebraucht wird.
Da man ohnehin nicht auf die Tabellen direkt zugreifen sollte, sondern immer über Abfragen ist das kein Nachtteil.
Gruß
Klaus

andyfau

Hallo,

diese Diskussion wird in jedem Datenbankforum, oft mit viel Leidenschaft, geführt.
Es gibt für jede Vorgehensweise gute Gründe dafür und dagegen.

Pro berechnete Felder:
 - man hat sie immer und überall (Abfragen, Formulare, Berichte...) wie Tabellenfelder originär zur Verfügung.
 - Man spart sich einen Haufen Arbeit, Abfragen zu bauen und jedesmal die passende Funktion wieder zu suchen. Es ist halt saubequem, quick and dirty.
Contra berechnete Felder:
 - Es entspricht nicht der reinen Lehre der Normalisierung einer DB. (Aber welcher Katholik ist heutzutage Freitags nur Fisch? ;-))
 - Die Performance leidet beim Scrollen. Da ist eine Abfrage deutlich im Vorteil, weil eben nur das Dataset gerechnet wird, was auch benötigt wird.(hab's gerade mal mit 100000 Sätzen ausprobiert. ca Faktor 3 schneller)

Pro Berechnungen in Abfragen:
 - siehe Nachteile oben.
 - höhere Flexibilität, können alles, was Tabellen auch können und noch mehr.
Contra Berechnungen in Abfragen:
 - steht die gleiche Berechnungsformel in mehreren Abfragen muss man bei Änderungen aufpassen, dass man alle erwischt. (Lösung VBA Function, nicht jeder macht aber VBA).

Todsünde:
Berechnte Werte in Tabellen als eigene Felder ablegen.
Aber, selbst das kann manchmal absolut notwendig sein. Nämlich, wenn eine Historie gebildet werden muss, wenn die Ursprungswerte entweder nicht mehr benötigt werden oder nicht mehr durch Neuberechnung rekonstruierbar sind.
Oder, wenn selbst die Performance der besten Abfrage nicht mehr ausreicht dynamisch zu berechnen.

Also, find the best for your use.
Gruß
Andreas