Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: robsonlele am September 28, 2012, 09:02:40

Titel: Variable nicht definiert
Beitrag von: robsonlele am September 28, 2012, 09:02:40
Hallo an alle,

ich überarbeite zur Zeit ein Formular und möchte, dass wenn ein bestimmter Wert für das Feld Unter-/Überboten wird, sich die Textfarbe rot färbt und sonst schwarz bleibt.

Hab dafür in VBA ein kurzes Programm geschrieben:

Private Sub gem_BH__mm__AfterUpdate()
Dim gem_BH_mm As Long
    If [gem_BH_(mm)] = 297.5 And 302.5 Then
    .gem_BH_mm.BackColor = RGB(255, 0, 0)
    Else
    .gem_BH_mm.BackColor = RGB(255, 255, 255)
    End If
End Sub

Gebe ich jetzt im Formular einen Wert ein, kommt die Meldung Fehler beim Kompilieren, die Variable mm ist nicht definiert.
Das verstehe ich nicht, habe doch das Feld als Zahl definiert mit dem Dim ... As Long? oder doch nicht?

Danke im Voraus für eure Hilfe

Mfg Robby
Titel: Re: Variable nicht definiert
Beitrag von: MzKlMu am September 28, 2012, 09:26:45
Hallo,
Du hast die Variable in der If Zeile auch falsch geschrieben, Du hast da Klammern um mm. Die Deklaration ist aber überflüssig, das ist ja ein Formularfeld. Formularfelder werden mit Me. angesprochen.Außerdem ist die Bedingung falsch.
297.5 Und (And) gleichzeitig 302.5 kann ja nicht sein.

Was willst Du genau machen?

PS:
Long ist eine Ganzahl und würde für eine Kommazahl ohnehin nicht funktionieren.
Titel: Re: Variable nicht definiert
Beitrag von: robsonlele am September 28, 2012, 09:42:34
hallo,

erstmal danke für die raschen Antwort.

Also das Feld ist für die Vermessung der Bauhöhe eines Heizkörpers.
Ich möchte, dass sich der Text im Feld rot markiert wenn ein Wert die Schwelle unter-/überschreitet, damit man sofort sehen kann dass der Wert unter der Schwelle ist.

Quasi, wenn der Heizkörper kleiner als 297,9 oder größer als 302,1 ist, dann soll das Feld rot werden. Bei gemessener Bauhöhe zwischen den beiden Werten soll der Text schwarz bleiben.

Gruß Robby
Titel: Re: Variable nicht definiert
Beitrag von: Jonny am September 28, 2012, 10:39:03
Hallo Robby,
so müsste es funktionieren:
Private Sub gem_BH__mm__AfterUpdate()
'Dim gem_BH_mm As Long
    If me![gem_BH_mm] <297.5 or me![gem_BH_mm] > 302.5 Then
    me!gem_BH_mm.BackColor = RGB(255, 0, 0)
    Else
    me!gem_BH_mm.BackColor = RGB(255, 255, 255)
    End If
End Sub

Gruß

Johann
Titel: Re: Variable nicht definiert
Beitrag von: robsonlele am September 28, 2012, 11:00:31
Hallo Johann,

erstmal danke für deine Antwort.

Leider funktioniert das auch nicht so richtig, jetzt kommt zwar nicht mehr "Fehler beim Kompilieren" sondern Laufzeitfehler 2465 "Microsoft Access kann das von Ihnen angesprochene Feld "gem_BH_mm nicht finden.

Gruß Robby
Titel: Re: Variable nicht definiert
Beitrag von: DF6GL am September 28, 2012, 11:49:29
Hallo,


vermutlich lauten die Namen der Felder nicht so, wie Du sie schreibst...


gem_BH_ mm.


"Private Sub gem_BH__mm__AfterUpdate()"

lässt auf einen Namen schliessen, der

gem_BH_.mm.
oder

gem_BH_ mm.


heißen könnte.


Heißt das Feld [gem_BH_mm]   (Eckklammern hier nur zur Verdeutlichung) , dann sollte sowas funktionieren:



Private Sub gem_BH_mm_AfterUpdate()
   If Me![gem_BH_mm] < 297.5 or Me![gem_BH_mm] > 302.5 Then
   Me![gem_BH_mm].BackColor = RGB(255, 0, 0)   'oder auch     vbRed
   Else
   Me![gem_BH_mm].BackColor = RGB(255, 255, 255) oder auch     vbWhite
   End If
End Sub
Titel: Re: Variable nicht definiert
Beitrag von: robsonlele am September 28, 2012, 12:42:12
Hallo Franz,

danke für deine Hilfe. Mit deiner Lösung bekomme ich jetzt keine Fehler mehr angezeigt, aber irgendwie verfärbt es die Werte noch nicht wenn sie außerhalb der Toleranz liegen. Hast du einen Ansatz woran das liegen könnte, bzw. wie man das jetzt noch hinbekommt???

Danke im Voraus
Robby
Titel: Re: Variable nicht definiert
Beitrag von: DF6GL am September 28, 2012, 13:56:26
Hallo,


wird die Funktion überhaupt aufgerufen?

Setz einen Haltepunkt an den Anfang des Codes und ändere mal den Inhalt des Feldes, bzw. gebe einen ein..


Wenn die Funktion nicht aufgerufen wird, dürfte die Textfeld-Eigenschaft "Nach Aktualisierung" nicht den Eintrag "[Ereignisprozedur]" aufweisen, oder  die Namen sind immer noch nicht korrekt...