Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Textfeld rot markieren, wenn Ausdruck nicht stimmt

Begonnen von nordland, Juli 04, 2011, 10:05:21

⏪ vorheriges - nächstes ⏩

nordland

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

oma

Hallo,

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

Gruß Oma
nichts ist fertig!

nordland

wie soll der Ausdruck dann bei der bedingten Formatierung aussehen, wenn das zweite Datum in einer anderen Tabelle abgelegt ist?

oma

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
nichts ist fertig!

database

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

oma

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
nichts ist fertig!

database

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



nordland

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

nordland

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!

DF6GL

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


nordland

Ja, eine runde Klammer ist zu viel und am falschen Ort; habe mich hier verschrieben..

Die bedingte Formatierung funktioniert jetzt auch!
Herzlichen Dank!