Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Berechnung in einem Textfeld

Begonnen von Gockel67, Dezember 24, 2025, 13:41:41

⏪ vorheriges - nächstes ⏩

Gockel67

Moin Gemeinde,

ich bin grad bissl am verzweifeln bzw. an meinem Verstand am Zweifeln.

In einem Textfeld soll das Rechenerbegnis von drei Textfeldern (Inhalt Zahl) ausgerechnet werden.
Textfelder sind Laenge, Breite, Hoehe.

Folgendes habe ich ausprobiert:

=Nz([Laenge];0)*Nz([Breite];0)*Nz([Hoehe];0)/1000

=Laenge*Breite*Hoehe/1000

Bei 100*50*50 müsste als Ergebnis 250 rauskommen.
Ich erhalte aber stets 80785 als Ergebnis.

Was mache ich falsch?

Wünsche allen ein ruhiges und besinnliches Weihnachtsfest
Jörg

MzKlMu

Hallo,
sind das Felder in einem Formular ?
Was haben denn die Felder für einen Namen (Eigenschaften)?

PS:
Das Nz ist überflüssig. Wenn eines der 3 Felder leer (Null) ist gibt es ohnenhin kein Ergebnis.


Auch von mir "Schöne Feiertage"
Gruß Klaus

Normalo0815

#2
Hallo Gockel67,

Breite ist auch eine Eigenschaft des Formulars und die wird anscheinend bei der Berechnung bevorzugt herangezogen. Es wird also die Länge * Breite des Formulars in Twips * Höhe / 1000 gerechnet.

Eine Möglichkeit wäre, die Berechnung bereits in der Abfrage durchzuführen.

Ansonsten für Tabellenfeldnamen Präfixe verwenden, damit es zu keinen "Verwechslungen" mit Eigenschaften kommt, z. B.

tblMasse
-   MaLaenge
-   MaBreite
-   MaHoehe

Dadurch ist auch am Tabellenfeldnamen sofort ersichtlich, von welcher Tabelle die Tabellenfelder stammen, wenn das konsequent umgesetzt wird.
Freundliche Grüße
Normalo0815   :)

Gockel67

Danke für eure Antworten.

@Normalo0815 Danke. Genau daran lag es. Wär ich nie drauf gekommen. Für mich ist Breite immer Width.

MzKlMu

Hallo,
auch Anzahl ist in diesem Zusammenhang eine tückische Fehlerquelle, weil Anzahl auch für die Anzahl der Datensätze steht.
Wenn man die Felder nicht umbenennen will, kann man auch den Tabellen/Abfragename voranstellen.
Z.B. so:
=Laenge*TabellenName.Breite*Hoehe/1000
Gruß Klaus

Knobbi38

Zitat von: Gockel67 am Dezember 24, 2025, 14:33:39Für mich ist Breite immer Width.
Das gilt aber nicht bei Ausdrücken, die du hier als Steuerelementinhalt verwendest und beachte auch die eingestellte Sprache für dein Access.

Bitsqueezer

Hallo,

das ist der Grund, warum ich in meinem Namenssystem grundsätzlich alle Felder mit "F_" Prefix versehe, "ID_" für ID-Felder und "C_" für berechnete. Auf diese Weise gibt es nie Konflikte mit geschützten Begriffen, egal in welcher Sprache.

Frohe Weihnachten!

Christian

Normalo0815

#7
Hallo,
eine andere Möglichkeit - bei Namensgleichheit mit Eigenschaftsbezeichnungen die Tabellenfelder bevorzugt zu verwenden - wäre, an den Tabellenfeldnamen ein oder mehrere Leerzeichen vorne oder hinten anzuhängen, zwischen den eckigen Klammern.

Beispiele:
= [  Laenge] * [ Breite ] * [Hoehe      ] / 1000
= [Anzahl ]
= [ Anzahl]
= [ Anzahl ]

Nur zur Info. Wird in der Praxis wohl kaum jemand machen, weil darauf penibel geachtet werden müsste.  ;)

Möglich, dass das in aktuellen Access-Versionen nicht mehr funktioniert.  ;D
Freundliche Grüße
Normalo0815   :)

Bitsqueezer

Hallo,

ich hoffe, niemand wird die Leerzeichen-Methode verwenden. Eine äußerst schlechte Idee - sorry. Und mit simplem lesbarem Präfix auch ganz einfach zu vermeiden. Darüber hinaus benötigt man keine eckigen Klammern, wenn keine Leer- und Sonderzeichen in Namen verwendet werden, was schon seit Jahrzehnten versucht wird, den Leuten in die Köpfe zu kriegen. Also bitte: KEINE Leerzeichen in Namen!

Gruß

Christian

Normalo0815

#9
Hallo,

ich habe mich vermutlich nicht deutlich genug ausgedrückt in Beitrag #7.

Es handelt sich nicht um Leerzeichen im Tabellenfeldnamen, egal ob vor oder mittendrin oder danach.

Zudem lassen sich vor- und nachgestellte Leerzeichen bei Feldnamen erst gar nicht erfassen im Tabellen-Designer.

Es geht nur um Leerzeichen die zusätzlich zum Tabellenfeldnamen im Formulardesigner vor- oder nachgestellt werden (Diese zusätzliche Leerzeichen sind kein Bestandteil des Tabellenfeldnamens).

Und die eckigen Klammern werden automatisch hinzugefügt im Formular-Designer bei Eingabe in der Eigenschaft Steuerelementinhalt.

Einfaches Beispiel:
Tabellenfeldname: "Anzahl" ... ohne Leerzeichen
Steuerelementinhalt: "=[Anzahl]" ... würde die Anzahl der Datensätze ausgeben (Eigenschaft des Formulares)
Steuerelementinhalt: "=[Anzahl ]" ... zusätzliches Leerzeichen am Ende nachträglich einfügen im Formular-Designer würde den Tabellenfeldinhalt ausgeben, obwohl der Tabellenfeldname nach wie vor ohne Leerzeichen ist

Und wie in #7 bereits angeführt dient dies nur zur Information. In der Praxis wird das kaum jemand so machen.
Freundliche Grüße
Normalo0815   :)