Zum Inhalt springen

Access / VBA --- leere Felder


Empfohlene Beiträge

Geschrieben

Hallo, vieleicht kann mir ja doch einer helfen ... ;)

Habe eine Datenbank in Access angelegt, in der Lagereingänge erfasst und verwaltet werden sollen.

In dem eigendlichen Erfassungs - Formular hab ich ein Feld, welches auf seinen Inhalt abgefragt wird.

Private Sub Masseinheit_Exit(Cancel As Integer)

If IsNull(Masseinheit) Then

MsgBox "Bitte füllen Sie das Feld Masseinheit aus!"

Cancel = True

Me.Masseinheit.SetFocus

ElseIf Me.Masseinheit = "l*b" Then

Me.VE.Visible = False

Me.VE_Bezeichnungsfeld.Visible = False

Me.Länge.Visible = True

Me.Länge_Bezeichnungsfeld.Visible = True

Me.Breite.Visible = True

Me.Breite_Bezeichnungsfeld.Visible = True

Me.Länge.SetFocus

Else

Me.VE.Visible = True

Me.VE_Bezeichnungsfeld.Visible = True

Me.Länge.Visible = False

Me.Länge_Bezeichnungsfeld.Visible = False

Me.Breite.Visible = False

Me.Breite_Bezeichnungsfeld.Visible = False

Me.VE.SetFocus

End If

End Sub

Jetzt habe ich allerdings das folgende Problem.

Ich habe in diesem Formular einen Button, der dieses Formular schließen soll.

Sobald ich allerdings einmal dieses Feld "Masseinheit" aktiviert habe aber das Formular ohne zu speichern schließen will, kommt beim Klick auf den Beenden-Button die für dieses Feld angegebene Fehlermeldung, da es ja leer bleibt.

Wie kann ich es jetzt vermeiden, daß diese Fehlermeldung beim Klick auf "Beenden" erscheint ? :confused::confused:

Geschrieben

hm ... Der Kleine

Das Problem is ja, dass die Fehlermeldung für das Feld "Masseinheit" in demm Moment angezeigt wird, in dem der Kurser dieses Feld verlässt und keine Daten eingetragen wurden.

Anders ausgedrückt, wenn ich in das Feld gehe und dann aber gleich den Button Beenden drücke, kommt die Fehlermeldung, auch wenn ich dem Button bei nem Click-Ereignis sage, er soll den Focus auf ein anderes Feld setzen.

Habe das Problem jetzt aber etwas anders gelöst


Private Sub Masseinheit_Exit(Cancel As Integer)
If IsNull(Masseinheit) Then
If MsgBox("Bitte füllen Sie das Feld Masseinheit aus", vbOKCancel) = vbOK Then
Cancel = True
Me.Masseinheit.SetFocus
Else
Cancel = False
Me.beenden.SetFocus
End If
ElseIf Me.Masseinheit = "l*b" Then
Me.VE.Visible = False
Me.VE_Bezeichnungsfeld.Visible = False
Me.Länge.Visible = True
Me.Länge_Bezeichnungsfeld.Visible = True
Me.Breite.Visible = True
Me.Breite_Bezeichnungsfeld.Visible = True
Me.Länge.SetFocus
Else
Me.VE.Visible = True
Me.VE_Bezeichnungsfeld.Visible = True
Me.Länge.Visible = False
Me.Länge_Bezeichnungsfeld.Visible = False
Me.Breite.Visible = False
Me.Breite_Bezeichnungsfeld.Visible = False
Me.VE.SetFocus
End If
End Sub

Wenn jetzt das Feld "Masseinheit" verlassen wird, kommt eben ne MsgBox mit Ok bzw. Abbrechen. Bei OK bleibt der Focus in dem Feld, bei Abbrechen geht er auf den Beenden-Button ... is zwar nich sehr sauber, aber funzt

[/PHP]

Geschrieben

Moin,

wenn ich das richtig sehe, dann muss das Feld bei einem bestehenden Datensatz sehr wohl ausgefüllt sein und dann macht die Meldung ja auch Sinn. Anders sieht es bei einem neuen Datensatz aus.

Falls das so ist, dann kannst du in einer sinnvollen Art und Weise auswerten, ob das gerade ein neuer Datensatz ist:

If Me.NewRecord Then ...

hth

Reinhold

Geschrieben
hm ... Der Kleine

Das Problem is ja, dass die Fehlermeldung für das Feld "Masseinheit" in demm Moment angezeigt wird, in dem der Kurser dieses Feld verlässt und keine Daten eingetragen wurden.

Anders ausgedrückt, wenn ich in das Feld gehe und dann aber gleich den Button Beenden drücke, kommt die Fehlermeldung, auch wenn ich dem Button bei nem Click-Ereignis sage, er soll den Focus auf ein anderes Feld setzen.

es sieht so aus, als ob das Feld in der Tabelle als Nichtleer definiert wurde. Dann sollte die Einheit natürlich ausgefüllt werden müssen und dein Ansatz ist korrekt.
Geschrieben

Reinhold

Danke für deinen Tipp => If Me.NewRecord Then ...

Aber hierbei gehts ja eigendlich darum, neue Datensätze zu erfassen.

In diesem Formular (siehe Anhang) sind Felder enthalten, die je nach Inhalt des Feldes "Masseinheit" aus- bzw. eingeblendet werden, daher ist eine Eingabe ja auch erforderlich.

Allerdings möchte ich auch die Möglichkeit bieten, die Eingabe abzubrechen, ohne die Daten in die entsprechende Tabelle zu schreiben, also im Endeffekt sowas, wie das Drücken der ESC-Taste.

Der Kleine

danke ... ;)

Aber ab hier komm ich nich wirklich weiter.

:rolleyes::rolleyes:

post-16685-1443044783095_thumb.jpg

Geschrieben

du kannst, sofern du diesen Datensatz wieder canceln willst, die befehlsfolge für Rückgängig anwenden, so daß der neue datensatz noch nicht erfasst ist und dann schliessen.

Bei bedarf suche ich auch die Stelle (aus meinen Programmierungen Access 97), diese sollte noch so geblieben sein.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...