PDA

Vollständige Version anzeigen : Berechnetes Steuerelement im Formular sperren


Gunda
06.10.2001, 01:07
Ich habe in einem Formular (Access 97) ein berechnetes Steuerelement. Der Wert soll aber nur einmal berechnet werden. Auch wenn im Datensatz was geändert wird und sich also ein anderer Wert ergeben würde, soll der zuerst errechnete Wert drinbleiben.
Geht das überhaupt? Wenn ja: weiß jemand wie?

Bernd Koch
06.10.2001, 07:46
Nehmen wir an, dein berechnetes Feld im Formular heißt "Rechenfeld". Dann legst du in der Tabelle (nicht im Formular) noch ein neues Feld mit Namen "Erstergebnis" an. Achte darauf, dass in der Zeile Standardwert keine Null steht!! Dieses neue Feld ziehst du dann im Formularentwurf aus der Feldliste ins Formular.

Nun soll im Formular folgendes geschehen:

- ist das Feld "Erstergebnis" noch leer, soll es den Inhalt von "Rechenfeld" übernehmen (das passiert natürlich sofort, wenn der Datensatz zum ersten Mal geöffnet wird oder du bei einem neuen Datensatz etwas in die Felder einträgst, aus denen das Feld "Rechenfeld" gespeist wird.

Aber nun steht auch etwas in "Erstergebnis" drin ... und das soll auch dann nicht geändert werden, wenn sich "Rechenfeld" ändert.

Also schreibst du eine Ereignisprozedur für das Formular (BeimAnzeigen = Form_Current):

If IsNull(Me.Erstergebnis) Then
Me.Erstergebnis = Me.Rechenfeld
End If

Das sollte reichen.

Bernd

erwin
06.10.2001, 09:11
Also wohl besser NICHT BeimAnzeigen, sondern in Form_BeforeUpdate (Vor Aktualisierung) !

Sonst würde solange dein Erstergebnis NULL ist und auch noch nichts berechnet wurde bei JEDEM Datensatzwechsel ein UPDATE erfolgen - nicht unbedingt sinnig.

so long erwin...

Gunda
06.10.2001, 18:43
Tjaaaaaa,
habe ich probiert, bekomme aber ständig "Laufzeitfehler 3326 - Diese Datensatzgruppe kann nicht aktualisiert werden". Die Online-Hilfe dazu sagt mir leider so gut wie gar nichts ....

erwin
06.10.2001, 19:06
es gibt nun mal aktualisierbare aber auch NICHT aktualisierbare Abfragen. Und zweitere - wie der Name ja sagt....

In diesem Fall müsstest du deinen Update per SQL bewerkstelligen:

Das Feld "ErstErgebnis" muss natürlich i.d. entsprechenden Tab. vorhanden sein !

Currentdb.execute "UPDATE DeineTab SET ErstErgebnis = " & Me!berechnetesFeld & " WHERE ID = " & Me!ID & ";"

siehe auch OL-Hilfe zu SQL/UPDATE

HTH erwin...