Neuigkeiten:

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

Mobiles Hauptmenü

Feld einfärben je nach Wert der in der Abfrage herauskommt

Begonnen von Sealine, Juli 22, 2011, 16:01:36

⏪ vorheriges - nächstes ⏩

Sealine

Mahlzeit zusammen.
Hab da (mal wieder) ne Idee aber die Umsetzung will nicht so ;)

Also ich habe eine Tabelle U1 in die aus einem Formular die Daten geschrieben werden.
Aus dieser Tabelle wird eine Abfrage gemacht die je nach Datum einen Wert ausgibt:
Status: Schalter(Datum()<[Vorlage160];"OK";Datum()=[Vorlage160];"CHECK";Datum()>[Vorlage160];"KRITISCH") (da gehört natürlich noch was anderes zu aber dieses resultat is wichtig ;) )

Diese Berechnung wiederrum wird in genau das Formular übertragen, mit dem ich den Usprungswert in die Tabelle schreibe. Funktioniert auch alles (Danke nochmal für die Idee mit der Abfrage und der Formel ;) )

Nun möchte ich ganz gerne das Feld im Formular je nach Ergebnis einfräben. Hieße also bei OK grüner Hintergrund weiße schrift, bei Check gelber hintergrund und weiße schrift, bei Kritisch roter hintergrund und weiße schrift.

Habe schon versucht das mit einer bedingten Formatierung zu realisieren aber das will nicht so wirklich klappen.

Hat wer einen Lösungsansatz für mich ?
Vielen Dank schonmal im voraus ;)

edgar.basler

Unter der Voraussetzung, daß es ein Einzelformular ist, kann man dies recht einfach machen.

if me.feld="kritisch" then
me.feld.backcolor = rgb(255,0,0)
end if


database

#2
Hallo,

ZitatUnter der Voraussetzung, daß es ein Einzelformular ist, kann man dies recht einfach machen.


If Me!Feld = "KRITISCH" Then
    Me!Feld.BackColor = RGB(255, 0, 0)      'Hintergrund rot
    Me!Feld.ForeColor = RGB(255, 255, 255)  'Schrift weiss
ElseIf Me!Feld = "CHECK" Then
    Me!Feld.BackColor = RGB(255, 255, 0)    'Hintergrund gelb
    Me!Feld.ForeColor = RGB(255, 255, 255)  'Schrift weiss
ElseIf Me!Feld = "OK" Then
    Me!Feld.BackColor = RGB(0, 153, 0)      'Hintegrund grün
    Me!Feld.ForeColor = RGB(255, 255, 255)  'Schrift weiss
Else
    Me!Feld.BackColor = RGB(255, 255, 255)  'Hintergrund weiss
    Me!Feld.ForeColor = RGB(0, 0, 0)        'Schrift schwarz
End If


...und am Besten im Ereignis 'Beim Anzeigen' (Form_Current) des Formulars, auf dem sich das Feld befindet bzw. ein geeignetes Ereignis des Feldes sebst

Sealine

Klasse. Habe das Ganze mal getestet. Wenn ich das Feld nehme und den Code dort benutze als OnClick Ereigniss geht es. Finde bei den Ereignissen aber kein "Beim Anzeigen" .
Wie gesagt seid bitte gnädig mit mir ^^ Bin absoluter Neuling, versuche aber schnell zu lernen :-D

DF6GL

Hallo,

vermutlich schaust Du in den Eigenschaften des Steuerelementes und nicht in den Eigenschaften des Formulares nach...

Sealine

Und du hast da wahrscheinlich recht gehabt ;)

Mit welchen Ereignissen kann ich es denn nun richtig anstellen das:
Die richtige Farbe beim öffnen des Formulares geladen bzw gesetzt wird
und was noch viel wichtiger ist
Das wenn ich an dem Ursprungsdatum etwas ändere und dann ins nächste Feld "tabbe" und der Status sich in der berechnung ändert, ich das auch gleich im Formular sehe.

Hoffe Ihr versteht mein kauderwelsch ;)

DF6GL

Hallo,

nun, die beiden besagten Ereignisse:

Form_Current ("Beim Anzeigen" des Formulares)

Afterupdate()  ( "Nach Aktualisierung" des Steuerelementes)

Sealine

Muss ich bei afterupdate dann den Namen des steuerelements mit angeben ? Also das was aktualisiert wurde?

DF6GL

Hallo,

mhmm,

weißt Du denn, wie man eine Ereignisprozedur anlegt?


"Das wenn ich an dem Ursprungsdatum etwas ändere und dann ins nächste Feld "tabbe" und der Status sich in der berechnung ändert"


Für das Textfeld, das das Ursprungsdatum anzeigt, triit das Ereignis "Nach Aktualisierung" auf, wenn man den Wert geändert hat und den Fokus  in ein anderes Feld bewegt.

Sealine

Japp weiß ich, zugegeben war ne blöde Frage... War wohl zu müde ;)

Aber ist ja auch logisch. AfterUpdate als Ereignisprozedur für das Datumsfeld.
Ist garnicht so einfach sich da rein zu fuchsen, aber das muss nun irgendwie mal klappen ;)