PDA

Vollständige Version anzeigen : Bericht-Bedingter Formatierung


tetex
01.06.2012, 08:14
Hallo,

kann mir jemand evt. sagen wie ich mehrere Kriterien einfügen kann ?
Erlaubt sind irgendwie 3

gesucht werden bestimmte Worte
wenn bestimmte Text beinhaltet, dann FARBE rot.

Wie gehe ich vor?

Anne Berg
01.06.2012, 08:38
Hallo,

wenn es nur um die Farbe rot geht, so sollte ein Kriterium genügen. Verwende "Ausdruck ist" und füge dort die Bedingungen ein.

tetex
01.06.2012, 08:41
hi,

also ich hab Auswahlfeld mit 7 Kriterien alle habe verschiedene Farb belegung
Wie meinst du das mit dem Ausdruck?

MfG

Atrus2711
01.06.2012, 08:44
Du brauchst nur ein Kriterium: enthält das Tabellenfeld deinen Suchtext, ja oder nein.

Das erledigt ein Ausdruck für dich, siehe Bild.

tetex
01.06.2012, 08:54
Achso, ja das habe ich
[AuswahlF]="Text"
nur was mache ich, wenn ich 7 Kriterien habe

Atrus2711
01.06.2012, 09:02
Die 7 Worte kannst du als Alternativen mit OR eingeben:
[DeinFeld] LIKE "*Erstens*" OR [DeinFeld] LIKE "*Zweitens*" OR ...

Und wenn die Worte nur einen Teil des Feldinhalts ausmachen, wirst du mit einer Suche nach Gleichheit scheitern. Der Artikelname "Biene Maja" wird nicht rot, wenn du nach ="Biene" suchst. Wozu geb ich eigentlich Beispiele mit Bildern, wenn du es dann doch anders machst?

tetex
01.06.2012, 09:10
Naja, ich hab dich nicht verstanden-Sorry.

[DeinFeld] LIKE "*Erstens*" OR [DeinFeld] LIKE "*Zweitens*" OR ...

die haben ja nicht alle selbe farbe
'Erstens = rot,
Zweitens = gelb

etc ...

Anne Berg
01.06.2012, 09:17
Hallo,also ich hab Auswahlfeld mit 7 Kriterien alle habe verschiedene Farb belegung das lässt sich mit bedingter Formatierung nicht umsetzen, statt dessen kannst du die Farbzuweisung im Format-Ereignis des zugehörigen Berichtsbereichs vornehmen.

Fazit: Am besten, du beschreibst dein Problem von Anfang an so, dass man es gleich richtig verstehen kann.

Atrus2711
01.06.2012, 09:20
Access 2003 kann nur bis max. 3 bedingte Formatierungen.

Du kannst aber evtl. per Code arbeiten:
http://www.ms-office-forum.de/forum/showthread.php?t=289826&highlight=bedingte+Formatierung
http://www.ms-office-forum.de/forum/showthread.php?t=269336&highlight=bedingte+Formatierung

tetex
01.06.2012, 09:21
Ja, du schreibst so schön
wovon ich nur 0,5 % davon was verstehe :D

mfg

Atrus2711
01.06.2012, 09:27
Dann nochmal deutlicher:

Mit der normalen bedingten Formatierung gehen maximal 3 Fälle. Du hast 7. Das ist also keine Lösung.
Du kannst aber VBA-Code benutzen, der beim Anzeigen jedes einzelnen Satzes abgearbeitet wird. Dieser VBA-Code kann den aktuellen Satz auf beliebig viele Fälle abtesten und die Farbe dann je nach Ergebnis setzen. Das auslösende Ereignis ist "BeimFormatieren" des Detailbereichs, und der Code dort ist etwa so:
If Me!DeinTabellenFeld LIKE "*Erstens" Then
Me!DeinBerichtsfeld.Backcolor = vba.ColorConstants.vbRed 'Rot
End If
If Me!DeinTabellenFeld LIKE "*Zweitens" Then
Me!DeinBerichtsfeld.Backcolor = vba.ColorConstants.vbGreen 'Grün
End If
'etc

Wenn du dabei hängen bleibst, meld dich wieder.

tetex
01.06.2012, 09:39
Hallo,

ich bekomme Fehler

Private Sub Report_Open(Cancel As Integer)
If Me!LetzterWertvonSt Like "*Draht" Then
Me!LetzterWertvonSt.BackColor = VBA.ColorConstants.vbRed 'Rot
End If
If Me!LetzterWertvonSt Like "*atm" Then
Me!LetzterWertvonSt.BackColor = VBA.ColorConstants.vbGreen 'Grün
End If
'etc
End Sub


Sie haben einen Ausdruck angegeben der keinen Wert hat

Anne Berg
01.06.2012, 09:40
Hallo,statt dessen kannst du die Farbzuweisung im Format-Ereignis des zugehörigen Berichtsbereichs vornehmen.Das Lesen (und Verstehen) können wir dir nicht abnehmen.

Atrus2711
01.06.2012, 10:05
Ergänzend zu Anne könnte es auch sein, dass Access 2003 die Farbkonstanten nicht kennt. Nutze mal testweise feste Zahlenwerte:
Rot ist 255
Grün ist 65280
Gelb ist 65535
Blau ist 16711680

tetex
01.06.2012, 10:15
ja ich finde das aber nicht.

Anne Berg
01.06.2012, 10:20
Was genau findest du nicht?

Die Farbkonstanten findest du im Objektkatalog, zu öffnen aus dem VBA-Editor heraus.
Oder einfach mal nach vbred in der Hilfe suchen.

Atrus2711
01.06.2012, 10:43
Da gibts nichts zu finden:

<strike>Private Sub Report_Open(Cancel As Integer)</strike>
'Im Format-Ereignis des Detailbereichs:
If Me!LetzterWertvonSt Like "*Draht" Then
Me!LetzterWertvonSt.BackColor = 255 'Rot
End If
If Me!LetzterWertvonSt Like "*atm" Then
Me!LetzterWertvonSt.BackColor = 65280 'Grün
End If
'etc

Die Zahlen sind natürlich etwas kryptisch, daher ja der Vorschlag mit den Konstanten. Die sind "sprechend"; aber ich bin halt nicht sicher, ob die in 2003 auch schon so nutzbar waren. Anness Tipp kann dir da weiterhelfen; aber funktionieren sollte der Code auch mit "blanken" Zahlen.

Josef P.
01.06.2012, 10:50
Hallo!

Da gibts nichts zu finden
.. bis auf die passende Ereignisbehandlung. ;-) (das "ich finde das aber nicht." bezog sich vermutlich auf Beitrag #13)
Private Sub Report_Open(Cancel As Integer)
Msgbox Me!LetzterWertvonSt
End Sub

Als Reaktion auf Report.Open wird es schwierig werden, auf die Daten der Controls zuzugreifen.

mfg
Josef

Atrus2711
01.06.2012, 10:52
@Josef:
Touché. :eek: Das Ereignis hat Anne schon korrigiert, und ich fauler Hund hab sie aus dem Code des Fragestellers kopiert.... Ich wollte eher auf die Konstanten raus...

tetex
01.06.2012, 12:18
hi,

ah habs gefunden "lol"
Aber geht trotzdem nicht.
Bekomme immernoch eine Fehlermeldung


Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck beim Formatieren eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Code kann im Entwurdsmodus nicht ausgeführt werden.

und nu?

Atrus2711
01.06.2012, 12:21
Da ist irgendwo noch ein Entwurf offen. Mach die Datenbank mal zu und wieder auf, dann probiers nochmal.

Anne Berg
01.06.2012, 12:33
Oder zeig doch bitte mal deine aktuelle Version des VBA-Codes.

tetex
01.06.2012, 12:37
also im mom sieht es so aus

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
If Me!LetzterWertvonStation Like "Draht erodieren" Then
Me!LetzterWertvonStation.BackColor = 255 'Rot
End If
If Me!LetzterWertvonStation Like "*atm" Then
Me!test.BackColor = 65280 'Grün
End If
End Sub

Atrus2711
01.06.2012, 12:50
An sich ok, allerdings braucht LIKE eigentlich immer ein Platzhalterzeichen (*), dein Draht erodieren hat keinen Platzhalter.

tetex
01.06.2012, 12:56
Auch wenn ich das ändere geht das nicht
hm was mache ich nur falsch

Atrus2711
01.06.2012, 12:57
Ich sehs auch nicht. Lad mal hoch.

tetex
01.06.2012, 13:04
Hallo, Datei ist mit vielen Dateien Verknüpft.
Kannst du mir evt. ein Simplen Formular+Bericht zeigen?

Atrus2711
01.06.2012, 13:05
Kopiers und und stutz es auf ein paar Dateien zurecht. Die Pfade ändere ich auf meine Verhältnisse ab, so dass ich es nachvollziehen kann.

tetex
01.06.2012, 13:13
Würde ich gerne, bin grad auf der Arbeit
hab keine Rechte fürs hochladen. oO

maikek
01.06.2012, 13:27
IMHO:
1. Den Code richtig schreiben:
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
If Me!LetzterWertvonStation Like "*Draht*" Then
Me!LetzterWertvonStation.BackColor = 255 'Rot
End If
If Me!LetzterWertvonStation Like "*atm*" Then
Me!LetzterWertvonStation.BackColor = 65280 'Grün
End If
End Sub
2. Prüfen, ob Draht oder atm auch in den aktuellen Daten des Berichts/des Feldes vorkommen.

Dann noch mal Bescheid sagen, ob es klappt oder welcher Fehler gemeldet wird.
maike

EmiliaM
01.06.2012, 13:28
Was genau findest du nicht? das BeimFormatieren Ereignis des Detailbereichs, die Farkonstanten oder sonstwas?

Die Farbkonstanten sind in Access 2000 bekannt.

-----------
Oops, sorry! Das war eine Antwort auf Beitrag Seite 1, ich habe die Folgeseiten nicht gesehen. Asche auf mein Haupt :entsetzt: