Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hawebe am Februar 09, 2014, 13:09:32

Titel: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: hawebe am Februar 09, 2014, 13:09:32
Hallo,
was in access2003 ohne Probleme lief, greift bei mir unter access2010 nicht mehr.
Die gewollte Farbänderung erfolgt nicht. Woran liegt das? Könnt Ihr mir auf die Sprünge helfen?

Private Sub ctxtFarb1_Dirty(Cancel As Integer)
10    On Error GoTo ctxtFarb1_Dirty_Err
20        Me!ctxtFarb1.BackColor = 13434879
ctxtFarb1_Dirty_Exit:
30       Exit Sub
ctxtFarb1_Dirty_Err:
40       Call Fehlerbehandlung("Form_frm_ERSTBESTELLUNG ", "ctxtFarb1_Dirty", Erl, "Bemerkungen: ./.")
50       Resume ctxtFarb1_Dirty_Exit
End Sub
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: Hondo am Februar 09, 2014, 13:59:03
Hallo,
der Code läuft auch unter Access 2010 ohne Probleme.
Setze mal einen Haltepunkt auf Private Sub... und schau mal ob überhaupt die Prozedur ausgeführt wird, was ich bezweifel.
Falls nicht ausgeführt wird:
Benenne es einfach mal um in ctxtFarb2... und erstelle im VBA-Editor eine neue Ereignisprozedur indem du das Steuerelement links oben auswählst, und rechtsoben das Ereignis. Dann kopiere einfach deinen Code in die neue Ereignisprozedur.

Gruß Andreas
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: database am Februar 09, 2014, 16:59:23
Hallo,

nimm mal diese komischen Zeilennummern raus - in VBA ist es eigentlich nicht üblich mit Zeilennummern zu arbeiten.

Was ist denn   'ctxtFarb1'   ist das ein Textfeld?

Wenn du auf eine Änderung des Feldinhaltes hinauf die Farbe des Feldhintergrundes ändern möchtest
könntest du auch das Ereignis 'BeforeUpdate' verwenden in dem du mit  ctxtFarb1.OldValue den 'alten' Datenbestand ermittelst
und mit ....
If Me!ctxtFarb1.OldValue <> Me!txtFarb1 Then
    Me!ctxtFarb1.BackColor = 13434879
End If

...auf die Änderung des Dateninhaltes reagieren.

Das funktioniert unter Acc2010 auf jeden Fall - zumindest hätte ich das eben durch einen 'Feldversuch' so bestätigt bekommen. ;D 8)

Was aber das Problem ist, ist die Tatsache, dass die Hintergrundänderung fortan für jeden Datensatz gültig ist.
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: Hondo am Februar 09, 2014, 17:15:04
Hallo Peter,
ne die Zeilennummern sind schon OK, sonst kannst du im Fehlerfalle keine Auswertung mittels ERL machen.
Der Code an sich ist ja in Ordnung, was fehlt ist das "verlinken" des Formularevents. Bei mir hat es anfangs auch nicht funktioniert einfach den Code in ein Form zu kopieren.

Andreas
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: database am Februar 09, 2014, 17:32:24
Nun denn,

ich wollte ja nicht sagen, dass der Code nicht funktioniert  :D

eher eine Alternative anbieten ... naja, das mit den Zeilennummern stammt ja noch aus den Urzeiten des Basic wenn ich mich da noch 30 Jahre zurück erinnere  ::)
Zumal ja der VBE von sich aus auch keine Möglichkeit bietet diese Zeilennummern zu implementieren - da bist auf Fremdtools angewiesen (z.B. MZ-Tools)


Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: hawebe am Februar 09, 2014, 18:11:36
Hi,
danke für Euere Unterstützung. Ich habe nun alles mal getestet.

Es ist so, wie Hondo sagte: (Beide) vogeschlagenen Codes werden nicht ausgeführt.
Ich bin dann das Ganze noch einmal unter Access2003 getestet. Aber auch hier erfolgt keine Ausführung des Codes.

Das Feld ctxtFarb1 ist ein ungebundenes Testfeld. Hintergrundfarbe Grün (Eingabe gefordert). Um die Eingabe kenntlich zu machen, wechselt die Farbe.
Hondos Vorschlag kann ich mangels Wissen nicht umsetzen. Ich habe mich daher entschieden, die Farbe in dem nachfogenden
Private Sub ctxtFarb1_Exit(Cancel As Integer) vor einer msg (.. soll die ... übernommen werden?) unterzubringen.

Also danke noch mal Euch beiden.
Ich nahm an, ews gäbe eine Lösung im vorübergehen.
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: DF6GL am Februar 09, 2014, 18:47:16
Hallo,


da es sich um ein ungebundenes Textfeld handelt, existiert die "Bei geändert" (Dirty) - Eigenschaft nicht und es tritt auch kein Ereignis dabei auf... Benutz mal das "Bei Änderung" -Ereignis :

Private Sub ctxtFarb1_Change()
.
.
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: database am Februar 09, 2014, 19:14:55
Eine Bedingte Formatierung wäre dann auch noch eine Alternative...
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: hawebe am Februar 10, 2014, 21:06:40
Hallo Franz,

das war es dann mal wieder. Mit change läuft die Farbumstellung astrein.
Ich habe einfach nicht gewusst, dass dirty bei ungebundenen Textfeldern nicht greift.

Herzlichen Dank, ich werde jetzt in meinen 69. Geburtstag sehr ruhig hineinschlafen.
Titel: Re: Dirty(Cancel As Integer) Änderung der Hintergrundfarbe bei Eingabe
Beitrag von: DF6GL am Februar 10, 2014, 22:37:54
Hi,
na denn, guten Rutsch und alles Gute ...