Pittiplatsch Geschrieben 19. Februar 2008 Geschrieben 19. Februar 2008 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: Zitieren
Der Kleine Geschrieben 19. Februar 2008 Geschrieben 19. Februar 2008 Setze den Fokus als ersten Schritt vor dem Beenden auf ein Feld, welches diese Probleme nicht aufweist. (Also kein Eingabefeld) Zitieren
Pittiplatsch Geschrieben 19. Februar 2008 Autor Geschrieben 19. Februar 2008 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] Zitieren
Reinhold Geschrieben 19. Februar 2008 Geschrieben 19. Februar 2008 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 Zitieren
Der Kleine Geschrieben 19. Februar 2008 Geschrieben 19. Februar 2008 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. Zitieren
Pittiplatsch Geschrieben 19. Februar 2008 Autor Geschrieben 19. Februar 2008 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: Zitieren
Der Kleine Geschrieben 19. Februar 2008 Geschrieben 19. Februar 2008 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. Zitieren
Empfohlene Beiträge
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.