Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: nordland am Juli 04, 2011, 10:05:21

Titel: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: nordland am Juli 04, 2011, 10:05:21
Hallo zusammen,
ich habe eine Plausibilitätsprüfung zwischen zwei Datumsangaben programmiert; wenn die Prüfung zutrifft, möchte ich, dass das betreffende Feld im Formular automatisch rot markiert wird. Hat jemand eine Idee, wie man das von VBA aus machen kann?

If Me.DateSComplet - DLookup ([DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
MsgBox "Study complection to early"
End If
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: oma am Juli 04, 2011, 10:37:17
Hallo,

du könntest die bedingte Formatierung anwenden oder beim Ereignis 'Beim Hingehen' mit deiner Prüfung die Hintergrundfarbe des Steuerelementes ändern.

Gruß Oma
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: nordland am Juli 04, 2011, 10:45:03
wie soll der Ausdruck dann bei der bedingten Formatierung aussehen, wenn das zweite Datum in einer anderen Tabelle abgelegt ist?
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: oma am Juli 04, 2011, 10:57:02
Hallo,

sorry, meinte Ereignis "Beim Anzeigen"

bei der bedingten Formutierung Feld im Formular mit DLookup darstellen u. dann Differenz in Bedingung der bedingten Formatierung einsetzen!

Gruß Oma
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: database am Juli 04, 2011, 15:22:06
Hallo,

wenn du z.B. lediglich einen roten Rahmen um dein Feld legen willst würde sich auch die Änderung der Rahmenfarbe anbieten.


Private Sub Form_Current()

    If Me!DateSComplet - DLookup ([DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
        Me!DateSComplet.BorderColor = vbRed
    Else
        Me!DateSComplet.BorderColor = vbGreen 'oder jede andere Farbe
    End If

End Sub
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: oma am Juli 04, 2011, 16:39:37
Hallo Nordlicht ;D

wie auch immer du das machst, ob mit bedingter Formulierung oder beim Ereignis "Beim Anzeigen" ( Private Sub Form_Current()) die Hintergundfarbe ändern (oder Peters Vorschlag mit dem Rahmen) :

Ich würde immer den Vergleichswert (mit DLookup) und die Differenz im Formular darstellen u. das Feld mit der Differenz farbig kennzeichnen. Ich kenne Anendungen mit bedingter Formatierung und man fragt sich: was soll mir nun die Farbe des Datumsfeldes sagen?!

Das soll nur ein allgemeiner Gestaltungshinweis sein ;)

Gruß Oma
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: database am Juli 04, 2011, 16:48:59
@oma

Zitatwas soll mir nun die Farbe des Datumsfeldes sagen
ich kann dir nur beipflichten - eine farbliche Kennzeichnung kann und sollte m.E. nur als Hervorhebung (im konkreten Fall - einer Unstimmigkeit) dienen.
Die eigentliche Information würde ich BENUTZERFREUNDLICH entweder über ein Label oder (wenn das Problem nur sporadisch auftritt) über eine MsgBox auch textmäßig bekanntgeben.


Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: nordland am Juli 05, 2011, 09:23:45
Ihr seid einfach super!!
Das farbliche Hervorheben eines Feldes soll wirklich nur als Userfreundlichkeit anggesehen werden und noch was, wenn ich die Daten schon mal eingegeben habe und den Datensatz nochmals öffne, sehe ich gleich, dass etwas nicht gestimmt hat, wenn ein Feld gleich rot markiert erscheint.

Man lernt hier echt sehr viel! ;D
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: nordland am Juli 06, 2011, 08:59:24
Hm, habe Schwierigkeiten den Ausdruck unter bedingte Formatierung zu schreiben.
Wenn die VBA Code so aussah:

If Me.DateSComplet - DLookup("[DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
MsgBox "Study complection to early"

Soll die Syntax etwa so aussehen?
[DateSComplet] < 26 DLookup("[DateAnDetails])", "tbl_F1AnimalDetails")

Danke!
Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: DF6GL am Juli 06, 2011, 09:35:13
Hallo,

bist Du sicher, dass

ZitatIf Me.DateSComplet - DLookup("[DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
funktioniert??


Erklär mal genau(!) in Worten, wie die Berechnung ablaufen soll..



Syntaxtisch sollte die Zeile mindestens so lauten:

If Me.DateSComplet - DLookup("[DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then


wobei Dlookup infolge des fehlenden Kriteriums den Wert des ersten Datensatzes aus der Tabelle liefert, der aber nicht der erste, in der Tabellen-Datenblattanzeige sichtbare sein muss.



In der Bedingten Formatierung sollte das so heißen:

Ausdruck ist:         [DateSComplet]  - DLookup("[DateAnDetails]"; "tbl_F1AnimalDetails") < 26

Titel: Re: Textfeld rot markieren, wenn Ausdruck nicht stimmt
Beitrag von: nordland am Juli 06, 2011, 09:55:44
Ja, eine runde Klammer ist zu viel und am falschen Ort; habe mich hier verschrieben..

Die bedingte Formatierung funktioniert jetzt auch!
Herzlichen Dank!