Felder berechnen mit VBA-Funktion

Ich habe mit Access 97 in einem Formular folgende Textfelder: »Stück«, »Länge«, »Breite« und »Ergebnis«. Nun möchte ich im Feld »Ergebnis« sowohl die Längenberechnung (»Stück« * »Länge«) als auch die Flächenberechnung (»Stück« * »Länge« * »Breite«) durchführen. Die Flächenberechnung funktioniert einwandfrei, doch bei der Längenberechnung erhalte ich kein Ergebnis, da im Feld »Breite« kein Wert enthalten ist. Können Sie mir helfen?

Sie haben wahrscheinlich in der Eigenschaft »Steuerelementinhalt« des Textfeldes »Ergebnis« eine Formel hinterlegt, wie zum Beispiel:

»=[Formular]![Stueck]*[Formular]![Laenge]*[Formular]![Breite]«. In diesem Fall müssen alle drei Felder, welche in die Berechnung eingehen, Werte ungleich 0 enthalten, sonst ist das Ergebnis = 0.

Ihr Problem lösen Sie am einfachsten, indem Sie die Berechnung in einer kleinen VBA-Funktion durchführen. Öffnen Sie hierzu Ihr Formular in der Entwurfsansicht. Rufen Sie im Menü den Befehl »Ansicht | Code« auf; es erscheint das Klassenmodul des Formulars. Rufen Sie nun den Menübefehl »Einfügen | Prozedur« auf. Im Dialog »Prozedur einfügen« geben Sie der Funktion einen Namen wie »berechneErgebnis«. Der »Typ« der neuen Funktion ist »Funktion«, unter »Geltungsbereich« wählen Sie die Option »Privat«. Wenn Sie diese Angaben mit »OK« bestätigten, erzeugt Access 97 die leere Funktion. Ergänzen Sie darin den folgenden VBA-Code:



Private Function berechne Ergebnis()

If IsNull(Me!Stueck) Or IsNull(Me!Laenge) Then
Me!Ergebnis = äô
Exit Function
End If

If IsNull(Me!Breite) Then
Me!Ergebnis = Me!Stueck * Me!Laenge
Else
Me!Ergebnis = Me!Stueck * Me!Laenge * Me!Breite
End If

End Function



Diese Funktion berechnet und belegt je nach Inhalt der Felder »Stueck«, »Laenge« und »Breite« den Inhalt des Feldes »Ergebnis«. Sie muss immer ausgeführt werden, wenn sich die Belegung eines der in die Berechnung eingehenden Felder ändert. Zu diesem Zweck tragen Sie in der Eigenschaft »Nach Aktualisierung« der drei eingehenden Felder den String »=berechneErgebnis()« ein.