Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Verhindern, dass Access in Erfassungsformular zu nächstem Datensatz geht

Begonnen von tragger, August 15, 2010, 14:55:16

⏪ vorheriges - nächstes ⏩

tragger

Hallo Leute,

ich habe mal wieder ein Problem.
Ich habe ein Erfassungsformular mit 6 Feldern. Wenn das letzte Feld des Formulares verlassen wird, springt er immer schon zum nächsten neuen Datensatz. Kann man das verhindern? Er soll nämlich keinen weiteren Datensatz hinzufügen.

Oder kann ich irgendwie verhindern, dass diese Werte schon in der Tabelle gespeichert werden? Hätte es gerne, dass die Werte erst gespeichert werden, wenn jemand einen Button auslöst und die Plausibilität geprüft wird. Auch hier sollte er nicht automatisch zu einem weiteren neuen Datensatz springen.

2 kleine Probleme, die sich hoffentlich lösen lassen ;)

Tragger

Manfred S

Hallo,

1. Frage:
Unter Formulareigenschaften im Reiter "Andere" bei Zyklus "Aktueller Datensatz" einstellen. Dann navigierst Du nur noch im angezeigten / geöffneten Datensatz.

2. Frage ist aufwändiger und beispielhaft mit folgendem Code lösbar:

If Me!Sachbearbeiter <> "" And Nz(Me!Nachname, "") = "" Then
   MsgBox "Es muss ein Nachname eingegeben werden.", vbOKOnly + vbInformation, "Hinweis"
   Me!Nachname.SetFocus
   Me!Nachname.Dropdown
   Exit Sub
End If

Das Datenfeld Sachbearbeiter wird auf einen Eintrag hin geprüft. Wurde dort etwas ausgewählt und das Datenfeld Nachname ist
leer und das Formular soll bsp. über einen Ereignisbutton (bsp. Schliessen-Button) geschlossen werden, gibt es diese Fehlermeldung. Der Cursor springt dann in das betreffende Feld und führt dann beispielsweise den Dropdown-Befehl aus, um eine Auswahlliste anzuzeigen. Du mußt den Code natürlich Deinen Feldbezeichnern anpassen und hinter diversen Schaltflächen hinterlegen. Wenn Du die Codezeilen wiederholst, kannst Du auch weitere Eingabefelder prüfen.

Und um beispielsweise eine Datenänderung im Formular rückgängig zu machen (war zwar nicht gefragt)
legst du einen Button namens "Abbrechen" an und im Klickereignis fügst Du folgenden Corde ein:
Dim strMsg As String
 
   strMsg = "Möchten Sie eventuell vorgenommene Änderungen nicht speichern und wirklich abbrechen?"
  If MsgBox(strMsg, vbYesNo + vbQuestion, "Abbrechen:") <> vbYes Then Exit Sub
 
  On Error Resume Next
  DoCmd.SetWarnings False
  DoCmd.RunCommand acCmdUndo
  DoCmd.SetWarnings True
  DoCmd.Close acForm, Me.Name, acSavePrompt

oma

Hallo Tragger,

ZitatHätte es gerne, dass die Werte erst gespeichert werden, wenn jemand einen Button auslöst und die Plausibilität geprüft wird.

hierzu kann man auch ein ungebundenes Eingabeformular benutzen, d.h. das Formular ist ist an keine Datenherkunft gebunden, du schreibst die Eingaben in ungebundene Felder u. zum Schluss kannst du die eingegebenen Werte per Button in eine entsprechende Tabelle speichern.

Natürlich umgehst du damit auch Springen in andere DS, da gar keine vorhanden


Gruß Oma
nichts ist fertig!

tragger

OK, das mit der Überprüfung hatte ich ähnlich und dem Abbrechenbutton über
Me.Undo
    DoCmd.Close


Das mit dem Zyklus war genau das, was noch fehlte....

Vielen DanK!