PDA

Vollständige Version anzeigen : Ereignis aktualisieren


Freeman_GER
22.01.2008, 13:39
Hallo!

Vielleicht kann mir jemand von Euch helfen!

Ich habe in einen einem HF schon Datensätze. Dort sind Felder die haben den Wert Null. Jetzt habe ich dem Feld ein Ereignis (after update- Nach Aktualisierung) zugewiesen. (Wenn der Wert Null dann blende bitte im UF das Feld XY aus). Das klappt nur wenn ich mit einem neuen DS oder dem aktuellen DS in dem ich gerade arbeite (sprich ich tausche die Werte probehalber aus und bestätige mit Enter). Nur waren alle DS soweit vorhanden und das UF beachtet nur die Bedingung wenn ich in das Feld im HF hineingehe und mit Enter den Wert nochmals bestätige.

Gibt es in Access 2002 eine Möglichkeit zu sagen: HF sofort beim Start die Bedingungen prüfen und ggf. zu aktualisieren.

Über Hilfe würde ich mich sehr freuen!

Gruß Freeman_GER

Anne Berg
22.01.2008, 14:11
Hallo.

Dazu kannst du das Ereignis "Beim Anzeigen" des Formulars verwenden.

Freeman_GER
23.01.2008, 11:19
Was mache ich falsch?

Ich habe folgenden VBA-Code hinterlegt im
HF-Textfeld:
Parkstaende_Anwohner
bei "Nach Aktualisierung"

If Me!Parkstaende_Anwohner.Value = 0 Then
Form_UF_Belegung!Anwoh_9.Enabled = False
Form_UF_Belegung!Anwoh_9_prozent.Enabled = False
Form_UF_Belegung!Anwoh_12.Enabled = False
Form_UF_Belegung!Anwoh_12_prozent.Enabled = False
Form_UF_Belegung!Anwoh_14.Enabled = False
Form_UF_Belegung!Anwoh_14_prozent.Enabled = False
Form_UF_Belegung!Anwoh_18.Enabled = False
Form_UF_Belegung!Anwoh_18_prozent.Enabled = False
Form_UF_Belegung!Anwoh_20.Enabled = False
Form_UF_Belegung!Anwoh_20_prozent.Enabled = False
Form_UF_Belegung!Anwoh_24.Enabled = False
Form_UF_Belegung!Anwoh_24_prozent.Enabled = False
Else
Form_UF_Belegung!Anwoh_9.Enabled = True
Form_UF_Belegung!Anwoh_9_prozent.Enabled = True
Form_UF_Belegung!Anwoh_12.Enabled = True
Form_UF_Belegung!Anwoh_12_prozent.Enabled = True
Form_UF_Belegung!Anwoh_14.Enabled = True
Form_UF_Belegung!Anwoh_14_prozent.Enabled = True
Form_UF_Belegung!Anwoh_18.Enabled = True
Form_UF_Belegung!Anwoh_18_prozent.Enabled = True
Form_UF_Belegung!Anwoh_20.Enabled = True
Form_UF_Belegung!Anwoh_20_prozent.Enabled = True
Form_UF_Belegung!Anwoh_24.Enabled = True
Form_UF_Belegung!Anwoh_24_prozent.Enabled = True
End If



HF-Textfeld:
Parkstaende_Behinderte
bei "Nach Aktualisierung"



If Parkstaende_Behinderte.Value = 0 Then
Form_UF_Belegung!Behin_9.Enabled = False
Form_UF_Belegung!Behin_9_prozent.Enabled = False
Form_UF_Belegung!Behin_12.Enabled = False
Form_UF_Belegung!Behin_12_prozent.Enabled = False
Form_UF_Belegung!Behin_14.Enabled = False
Form_UF_Belegung!Behin_14_prozent.Enabled = False
Form_UF_Belegung!Behin_18.Enabled = False
Form_UF_Belegung!Behin_18_prozent.Enabled = False
Form_UF_Belegung!Behin_20.Enabled = False
Form_UF_Belegung!Behin_20_prozent.Enabled = False
Form_UF_Belegung!Behin_24.Enabled = False
Form_UF_Belegung!Behin_24_prozent.Enabled = False
Else
Form_UF_Belegung!Behin_9.Enabled = True
Form_UF_Belegung!Behin_9_prozent.Enabled = True
Form_UF_Belegung!Behin_12.Enabled = True
Form_UF_Belegung!Behin_12_prozent.Enabled = True
Form_UF_Belegung!Behin_14.Enabled = True
Form_UF_Belegung!Behin_14_prozent.Enabled = True
Form_UF_Belegung!Behin_18.Enabled = True
Form_UF_Belegung!Behin_18_prozent.Enabled = True
Form_UF_Belegung!Behin_20.Enabled = True
Form_UF_Belegung!Behin_20_prozent.Enabled = True
Form_UF_Belegung!Behin_24.Enabled = True
Form_UF_Belegung!Behin_24_prozent.Enabled = True
End If



Funktioniert aber nur dann wenn ich einen neuen DS anlege.

Bei den schon vorhandenen DS wird es leider erst dann angewand, wenn ich die Daten manipuliere.

Dann habe ich die Codes im HF, Eigenschaften, "Beim Anzeigen" eingefügt!

Wenn ich aber jetzt über eine Dialog Abfrage einen bestimmten Datensatz anzeigen lassen will, hängt sich ACCESS spätestens nach dem 3 DS auf. Vorher funktionierte die Dialog Abfrage einwandtfrei

WAS MACHE ICH FALSCH ICH VERSTEHE DIE WELT NICHT MEHR! Ich will doch nur, das die Bedingungen sofort und auch schon für die vorhandenen DS angewandt werden.

Anne Berg
23.01.2008, 11:24
Hallo,
Wenn ich aber jetzt über eine Dialog Abfrage einen bestimmten Datensatz anzeigen lassen will, Was genau darf man sich darunter vorstellen?

Dass Access sich aufhängt kann ich nicht verstehen, aber du solltest beachten, dass du ein Steuerelement nicht auf "disabled" setzen kannst, wenn es den Fokus hat.

Im übrigen kannst du dir folgendermaßen die Schreibarbeit erleichtern:
Form_UF_Belegung!Anwoh_9.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_9_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_12.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_12_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_14.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_14_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_18.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_18_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_20.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_20_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_24.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)
Form_UF_Belegung!Anwoh_24_prozent.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0)

Freeman_GER
23.01.2008, 14:03
Hallo Anne! :)

Danke das Du dir für einen Anfänger, wie ich es nun einmal bin, Zeit genommen hast. Der Wink mit dem Zaunpfahl war Gold richtig!



Dass Access sich aufhängt kann ich nicht verstehen, aber du solltest beachten, dass du ein Steuerelement nicht auf "disabled" setzen kannst, wenn es den Fokus hat.




Des weiteren habe ich gleich die verkürzte Schreibweise genommen und bei mir eingesetzt. Dazu habe ich aber noch eine grundsätzliche Frage, da ich noch nicht viele Erfahrungen mit ACCESS gesammelt habe:
Warum kann man
Form_UF_Belegung!Anwoh_9.Enabled = NOT (Me!Parkstaende_Anwohner.Value = 0) schreiben? Bei mir schlägt VB immer TRUE oder FALSE vor. Das klingt mir sehr logisch, nur wissen konnte ich das bis jetzt leider noch nicht, erst Dank DIR!

Ich habe mal wieder einiges gelernt! Man(n) lernt immer dazu


Gruß FREEMAN_GER

Anne Berg
23.01.2008, 14:09
Du hast recht, es ist logisch! ;) Logik nämlich, oder höhere (?) Mathematik.

Der Ausdruck (Me!Parkstaende_Anwohner.Value = 0) liefert Wahr oder Falsch, die Klammer ist nur aus optischen Gründen gesetzt. NOT kehrt den Wert um.

Das gleiche Ergebnis liefert möglicherweise Form_UF_Belegung!Anwoh_9.Enabled = (Me!Parkstaende_Anwohner.Value <> 0)
aber ich weiß ja nicht, welche Zustände evtl. noch auftreten können und wie sich das mit NULL-Werten verhält, da habe ich das lieber erstmal 1:1 umgesetzt.

Josef P.
23.01.2008, 14:14
einen kleinen Haken könnte es bei der Kurzform geben. Und zwar dann, wenn Isnull(Me!Parkstaende_Anwohner.Value) = true zutrifft. (NOT NULL liefert wieder NULL)


/edit:
Noch eine Anmerkung:
Wenn immer das gleiche Feld verglichen wird, dann würde ich das Ergebnis in einer Variablen zwischenspeichern, damit nicht so oft auf das Steuerelement zugegriffen werden muss.

dim bolEnabled as boolean
bolEnabled = NOT (NZ(Me!Parkstaende_Anwohner.Value,0) = 0)
'..
With Form_UF_Belegung
!Anwoh_9.Enabled = bolEnabled
...
!Anwoh_24_prozent.Enabled = bolEnabled
end with