Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: HabNeFrage am September 17, 2016, 13:38:30

Titel: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: HabNeFrage am September 17, 2016, 13:38:30
Hallo ich habe nichts finden können was passt,
ich habe ein Feld dessen Hintergrundfarbe abhängig von Feldinhalt/Format sein soll.
Die Mitarbeiter sollen sofort sehen, das der Feldinhalt falsch ist. Sie bearbeiten Daten nach,
da kann ich das Format des Feldes  (Tabelle) nicht festzurren, dann könnte der Wert beim einlesen der Daten nicht mit übernommen werden.

Alles was dieses Format hier nicht hat soll einen roten Hintergrund bekommen

432.40-350417 (3x Zahl, ein Punkt, 2x Zahl, Bindestrich, und dann mind.3x Zahl) Die Stellenzahl am Ende ist offen, jedoch mindestens 3x Zahl.

Das Feld heißt InvNr.
Wenn es dazu einen VBA gib oder eine andere Möglichkeit....

Danke im Voraus.
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: bahasu am September 17, 2016, 14:36:52
Hallo,

ist machbar mit der zum Steuerelement gehörenden Eigenschaft "Backcolor"
z.B.
Me.InvNr.BackColor = 255  ' macht den Hintergrund rot.

Harald
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: HabNeFrage am September 17, 2016, 14:44:27
Hallo bahasu,
danke das Du dich meldest. Ich müßte aber das Format prüfen, abhängig davon soll sich die HGF ändern.
Habe auch was über bedingte Formatierung gelesen, aber auch das hat mir nicht geholfen. Schade.
Das würde dem Mitarbeiter sehr helfen, denn es fällt sofort der Fehler auf.

Aber vielleicht fällt Dir noch was ein.
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: bahasu am September 17, 2016, 15:01:40
Hi,

Deine Vorgabe "Alles was dieses Format hier nicht hat" ist für mich noch nicht in Computer-Deutsch zu übersetzen.
Was muss vorliegen, damit die Aussage "Feldinhalt falsch" zutrifft?

Ich bitte um nähere Erläuterungen.

Harald
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: HabNeFrage am September 17, 2016, 15:19:29
Hallo,
blättern die Mitarbeiter durch die Datensätze, oder geben ein Format ein das von dem unten stehenden Format abweicht ist dies ein Fehler und soll den Hintergrund in rot wandeln (normal ist die Hintergrundfarbe ein helles grün)

Dies ist das Format das als richtig vorgegeben ist:

432.40-350417 (3x Zahl, ein Punkt, 2x Zahl, Bindestrich, und dann mind.3x Zahl)
Die Stellenzahl am Ende ist offen, jedoch mindestens 3x Zahl.
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: bahasu am September 17, 2016, 15:35:51
Hi,

hast Du schon versucht via Vorgabe eines Eingabeformats zu verhindern, dass falsche Einträge entstehen?

Z.B. bei den Eigenschaften des Steuerelements im Reiter "Daten" beim "Eingabeformat" eintragen:
999.99\-999999;_

Vielleicht hilft das?

Harald
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: Lachtaube am September 17, 2016, 15:50:44
Nun, man könnte noch vor der Eingabe eine Prüfung nach diesem Muster vornehmen.Private Sub DeinTextEingabefeld_BeforeUpdate(Cancel As Integer)
   With DeinTextEingabefeld
      '// Falls das Feld nicht leer sein darf, Or IsNull(.Value) entfernen
      If .Value Like "###.##-###*" Or IsNull(.Value) Then
         MsgBox "Falsche Eingabe"
         Cancel = True
      End If
   End With
End Sub
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: HabNeFrage am September 17, 2016, 16:57:30
Ist ja super,
habe es gerade mal ausprobiert, manchmal ist es ihm egal und macht doch weiter.
Muß ich noch mal schauen, jetzt ich wech aus Büro und 130km....

Schöne Woche, ich jetzt 3Wo. U.
Dann gehts weiter.

Danke allen, Ihr wart sehr hilfreich. Bis bald.
Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: Wurliwurm am September 18, 2016, 20:05:30
Zitat von: HabNeFrage am September 17, 2016, 13:38:30
432.40-350417 (3x Zahl, ein Punkt, 2x Zahl, Bindestrich, und dann mind.3x Zahl) Die Stellenzahl am Ende ist offen, jedoch mindestens 3x Zahl.

Bei der Beschreibung denkt man natürlich sofort an reguläre Ausdrücke, siehe etwa https://activevb.de/rubriken/kolumne/kol_19/regexp.html (https://activevb.de/rubriken/kolumne/kol_19/regexp.html)

Die Prüfung muß dann bei einem geeigneten Ereignis beim Textfeld eingegeben werden, entweder BeforeUpdate oder auch schon beim Tippen in das Feld, und dann die Backcolor-Eigenschaft gesetzt werden.

Ein kleiner Beitrag von mir zur Verwendung des regulären Ausdrucks:
Public Sub EinTest()

    Dim objRegEx As Object
    Set objRegEx = CreateObject("vbscript.regexp")
    objRegEx.Global = True
    objRegEx.IgnoreCase = False
   
    Dim strRegex As String
    '(3x Zahl, ein Punkt, 2x Zahl, Bindestrich, und dann mind.3x Zahl)
    strRegex = "^[0-9]{3}\.[0-9]{2}\-[0-9]{3,}$"
   
    'Erläuterung:
    '[0-9]{3}  bedeutet "genau 3 Zahlen hintereinander"
    '\.  bedeutet "ein Punkt", der Backslash ist ein Escape-Zeichen
    '[0-9]{2}  bedeutet "genau 2 Zahlen hintereinander"
    '\-  bedeutet "ein Strich", der Backslash ist ein Escape-Zeichen
    '[0-9]{3,}  bedeutet "mindestens Zahlen 3 hintereinander"
    'Dach am Anfang und Dollar am Ende bedeuten, daß ein genaues Match erforderlich ist,
    'und nicht nur ein Teil der Zeichenkette dem REGEX entsprechen muß
   
    objRegEx.Pattern = strRegex
   
    Dim strInput As String
    strInput = InputBox("Bitte den Feldinhalt eingeben", "regex " & strRegex & "   ", "432.40-350417")
   
    If objRegEx.Test(strInput) Then
       MsgBox strInput & " ist gültig   ", vbInformation, strRegex & "   "
    Else
       MsgBox strInput & " ist ungültig   ", vbExclamation, strRegex & "   "
    End If

End Sub

Titel: Re: Hintergrundfarbe abhängig vom Feldinhalt, genauer - Eingabeformat
Beitrag von: Wurliwurm am September 18, 2016, 20:32:41
Hat mich selber interessiert, ob das flutscht, im Anhang mein Beispiel