Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Nicolo#22 am März 16, 2026, 13:07:06

Titel: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Nicolo#22 am März 16, 2026, 13:07:06
Hallo zusammen
Mit folgendem Verhalten habe ich Probleme:
Habe ein HF mit einem UF. In das UF habe ich nun ein weiteres Feld eingefügt, bzw. in die dazugehörige Tabelle,
sowie die entsprechenden Abfragen.
Ziel war jetzt eine Eingabe zu erzwingen und eine MsgBox mit Hinweis anzuzeigen.
Erster Versuch ist, dieses Feld in der Tabelle auf EINGABE ERFORDERLICH zu setzen. Das wird ignoriert.
Zweiter Versuch per VBA.
Den Code habe ich sowohl im HF probiert als auch im UF. Keine Reaktion.
Neue DS mir diesem neuen Feld werden gespeichert ohne die Eingabe.
Was ist falsch?
'dieser Code erzwingt die Eingabe der Rest Reichweite im Ufo
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.txtaktReichw) Or Me.txtaktReichw = "" Then
        MsgBox "Wert für Reichweite eingeben!", vbExclamation, "Eingabe erforderlich"
        Me.txtaktReichw.SetFocus
        Cancel = True ' Speichern verhindern
    End If
End Sub
Titel: Re: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Knobbi38 am März 16, 2026, 14:56:35
Hallo Nicolo,

wenn in der Tabelle ein Feld mit "Eingabe erforderlich" angelegt wird, muß auch etwas eingegeben werden. Man sollte natürlich kein leere Zeichenfolge erlauben, was ja auch eine Eingabe ist!

Der VBA Code macht genau was wer soll und wie du es programmiert hast. Wahrscheinlich hast du aber vergessen, dass ein BeforeUdpdate Event nur ausgelöst wird, wenn sich auch etwas geändert hat!

Eine gute Alternative ist das Form_BeforeUpdate Event. Man könnte jetzt auch auf die Idee kommen, das Textbox_Exit Event zu verwenden, wovon ich aber nur dringend abraten kann!

Eine weitere Möglichkeit wäre noch eine Gültigkeitsregel für die Textbox, aber auch dort gilt das gleiche wie für das BeforeUpdate Event.

Also im Form_BeforeUpdate:
Private Sub Form_BeforeUpdate(Cancel As Integer)
  Debug.Print "Form_BeforeUpdate()"
 
  If Len(Nz(txtaktReichw, "")) = 0 Then
    Cancel = -1
    Beep
    txtaktReichw.SetFocus
  End If
End Sub
und die Eigenschaften für das Feld in der Tabelle richtig einstellen, damit auch Änderungen bei einer SQL-Anweisung abgefangen werden, nicht nur im Formular!

Knobbi38


 
Titel: Re: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Nicolo#22 am März 16, 2026, 17:26:15
Hmm, glaube es ist nicht so einfach wie ich mir das gedacht habe. Weil, es gibt ja bereits einige DS bei denen das Textfeld LEER ist, weil es dieses neue Textfeld ja vorher nicht gab.
Mit meinem Code in #1 passiert jedenfalls nichts, ich muss nichts eingeben.
Kann es sein das ich zuerst manuell die betroffenen DS bearbeiten muss?
Das geht nicht, es sind zuviele.
Vieleicht könnte ich ja lediglich eine MsgBox erzeugen die mich auf eine Eingabe hinweist.
Aber das klappt auch nicht, vermutlich falscher Code an dfalscher Stelle.
War glaube ich keine gute Idee sowas nachzräglich machen zu wollen.
Schade
Titel: Re: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Knobbi38 am März 16, 2026, 17:33:20
Hallo Nicolo,

Code habe ich dir gegeben und wenn du nachträglich so etwas vor hast, müssen natürlich die Felder einen Inhalt haben, könnte auch ein nicht sichtbares Dummy-Zeichen sein, welches du dann z.B. in deinem Code auswerten kannst und bei Bedarf auch ersetzen kannst. Den Dummy-Inhalt selber kannst du von Hand per SQL-Update in das Feld eintragen.

Knobbi38
Titel: Re: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Nicolo#22 am März 16, 2026, 18:43:46
Genau das habe ich nicht bedacht dabei, das die vorh. DS dann alle korrigiert werden müssen.
Das korrekt auszuwerten übersteigt den Aufwand / Nutzen bei weitem.
Es sind über 2000 DS betroffen.
Ich schau mal wie ich das evtl. hinbekommme.
Zuerst müsste ich dieses neue Textfled mit der Ziffer 0 befüllen.
Danach die ca. 10 neuen DS antelle der 0 dann mit den Echtwerten bestücken.
Puh. :)

Update
Ist es richtig das dein Code in dem Feld eine Null hinterlegt, automatisch?
Das wäre schon ok, aber ich wollte eigentlich das ein Hinweis gezeigt wird.
Habe ich jetzt gemacht mittels MsgBox.
Per AnfügeAbfrage habe ich allen DS in dem Feld eine 1 verpasst.
Werde jett testen ob alles gut läuft.
Titel: Re: Auf Eingabe in einem UF feld per VBA hinweisen
Beitrag von: Knobbi38 am März 16, 2026, 19:33:32
Zitat von: Nicolo#22 am Heute um 18:43:46st es richtig das dein Code in dem Feld eine Null hinterlegt, automatisch?
Nein, das ist nicht richtig. Es wird keine Null hinterlegt, sondern nur auf eine Eingabe der Länge 0 geprüft.