|
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.
|
|