collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 93
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14059
  • stats Beiträge insgesamt: 67483
  • stats Themen insgesamt: 9095
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Datensatz speichern wenn Pflichtfelder OK  (Gelesen 4803 mal)

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Datensatz speichern wenn Pflichtfelder OK
« am: Dezember 07, 2013, 07:53:21 »
Hallo,

Ich möchte einen Datensatz nur speichern wenn alle Pflichtfelder ausgefüllt sind.
Dazu mache ich eine Abfrage auf Änderungen und prüfe nun ob alle Pflichtfelder ausgefüllt sind. Wennn nicht kommt einem Meldung die darauf hinweist dass diese noch ausgefüllt werden müssen.
Das funktioniert soweit auch alles. Mein Problem ist jetzt folgendes:
User gibt Daten ein und verläßt das Ufo, dann kommt die Meldung "Änderungen speichern?" User klickt auf "Ja". Da aber nicht alle Pflichtfelder ausgefüllt wurden kommt die Meldung " Bitte alle erforderlichen Felder ausfüllen!".
Jetzt füllt der User nur einen Teil der Pflichtfelder aus und verläßt wieder das Ufo. Bei der jetzigen Frage ob er die Änderungen speichern will klickt er auf Nein.

Jetzt werden aber nur die Änderung rückgängig gemacht die nach der Meldung "Bitte alle erforderlichen Felder ausfüllen!" gemacht wurden. Die Daten die am Anfang eingegeben wurden sind gespeichert.

Wie kann ich diese Daten auch zurücksetzen?

Ich hoffen Ihr versteht mein Problem.

Hier die Datenbank falls von nöten -> Motordatenbank

Tom


Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #1 am: Dezember 07, 2013, 19:24:52 »
Hi,

denkbar wäre doch, das erste Speichern nur zuzulassen, wenn alle erforderlichen Felder ausgefüllt sind.
Dann wäre ein "Rückspeichern" von unvollständigen Infos nicht nötig.

Harald
Servus
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #2 am: Dezember 08, 2013, 06:40:08 »
denkbar wäre doch, das erste Speichern nur zuzulassen, wenn alle erforderlichen Felder ausgefüllt sind.
Dann wäre ein "Rückspeichern" von unvollständigen Infos nicht nötig.

Das sind ja alles gebundene Formularfelder, also wird ja sofort alles gespeichert.
Und ich möchte nicht alle Felder zurücksetzen nur weil eins nicht ausgefüllt wurde, sonst muss man ja immer alles neu eingeben.

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #3 am: Dezember 08, 2013, 12:12:17 »
hI;

Deine Routinen stehen an der falschen Stelle: nicht bei CLOSE
sondern bei "vor Aktualisierung"

Dort ist if me.dirty unnötig {wie schon zuvor erwähnt}

Eine Anweisung in der Art:
Code: (vb) [Auswählen]
Cancel = CheckInput = FALSEgehört dorthin. Und auch noch:
Code: (vb) [Auswählen]
If cancel then MsgBox "Bitte füllen Sie alle erforderlichen (roten) Felder aus!", vbInformation + vbOKOnly, "Hinweis"
Harald

PS die Gänsefüße bei "false" habe ich entfernt, da die Test-Routine einen Wahrheitswert liefert. Die Krücke über einen Text-String halte ich für suboptimal. Gilt zumindestens, wenn der Teil aus der anderen Anfrage umgesetzt wird.  ;D
« Letzte Änderung: Dezember 08, 2013, 18:27:24 von bahasu »
Servus
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #4 am: Dezember 09, 2013, 20:27:54 »
Deine Routinen stehen an der falschen Stelle: nicht bei CLOSE
sondern bei "vor Aktualisierung"

Verstehe ich das richtig ich muss die Routinen aus _BeforeUpdate nach  _Close verschieben?

Dort ist if me.dirty unnötig {wie schon zuvor erwähnt}

Hab ich schon entfernt :)

Eine Anweisung in der Art:
Code: (vb) [Auswählen]
Cancel = CheckInput = FALSEgehört dorthin. Und auch noch:
Code: (vb) [Auswählen]
If cancel then MsgBox "Bitte füllen Sie alle erforderlichen (roten) Felder aus!", vbInformation + vbOKOnly, "Hinweis"

Wo soll diese Anweisung hin?


PS die Gänsefüße bei "false" habe ich entfernt, da die Test-Routine einen Wahrheitswert liefert. Die Krücke über einen Text-String halte ich für suboptimal. Gilt zumindestens, wenn der Teil aus der anderen Anfrage umgesetzt wird.  ;D

Hab ich auch schon geändert da es auf einem anderem System zu Problemen führte.

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #5 am: Dezember 09, 2013, 21:38:22 »
Deine Routinen stehen an der falschen Stelle: nicht bei CLOSE
sondern bei "vor Aktualisierung"

Verstehe ich das richtig ich muss die Routinen aus _BeforeUpdate nach  _Close verschieben?

Dort ist if me.dirty unnötig {wie schon zuvor erwähnt}

Hab ich schon entfernt :)

Eine Anweisung in der Art:
Code: (vb) [Auswählen]
Cancel = CheckInput = FALSEgehört dorthin. Und auch noch:
Code: (vb) [Auswählen]
If cancel then MsgBox "Bitte füllen Sie alle erforderlichen (roten) Felder aus!", vbInformation + vbOKOnly, "Hinweis"

Wo soll diese Anweisung hin?


PS die Gänsefüße bei "false" habe ich entfernt, da die Test-Routine einen Wahrheitswert liefert. Die Krücke über einen Text-String halte ich für suboptimal. Gilt zumindestens, wenn der Teil aus der anderen Anfrage umgesetzt wird.  ;D

Hab ich auch schon geändert da es auf einem anderem System zu Problemen führte.

Tom

Nein: Die Überprüfungsroutine auf unvollständige Daten darf nicht bei Close stehen, sie muss bei vor Aktualisierung stehen, damit Du eine Chance hast, vor dem Speichern darauf zu reagieren, wenn noch nicht vollständig.

Harald
Servus
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #6 am: Dezember 10, 2013, 21:39:48 »
Nein: Die Überprüfungsroutine auf unvollständige Daten darf nicht bei Close stehen, sie muss bei vor Aktualisierung stehen, damit Du eine Chance hast, vor dem Speichern darauf zu reagieren, wenn noch nicht vollständig.

Aber die steht doch außer im Hfo immer im BeforeUpdate-Ereignis!
Das passiert z.B. im Ufo Getriebedaten. Wenn dort etwas geändert wird und so wie oben beschrieben verfahren wird, dann wird ein unvollständiger DS gespeichert.

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #7 am: Dezember 15, 2013, 01:27:57 »
Hi Tom,

wenn Du den Inhalt Deiner Überprüfungsroutine dem Parameter Cancel zuweist (siehe weiter oben), wird das Speichern verhindert, sofern Cancel auf TRUE gesetzt worden war.
Cancel ist True, wenn "CheckInput = FALSE" gilt.

CANCEL ist als Parameter in der Kopfzeile des Ereignisses deklariert.

Harald
Servus
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #8 am: Dezember 15, 2013, 08:07:29 »
Moin,

und nun ein Beispiel für das Formular "frm01MotorErfassungUfoMechDat"

Code: (vb) [Auswählen]
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim CheckInput As String
Dim strMsgBox As Integer

If 1 = 2 Then   ' damit werden die folgenden Zeilen deaktiviert
    If Me.Dirty = True Then
        strMsgBox = MsgBox("Änderungen speichern?", vbQuestion + vbYesNo, "Änderungen speichern")
      
        If (strMsgBox = 6) Then 'JA wurde gedrückt
            CheckInput = MechDatenPruefen_neu()
        
            If (CheckInput = "FALSE") Then
                'DoCmd.Undo
                ' Registerwechsel unterbinden bis alle Felder ausgefüllt sind
                RegChgAllow = 0
                MsgBox "Bitte füllen Sie alle erforderlichen (roten) Felder aus!", vbInformation + vbOKOnly, "Hinweis"
                Exit Sub
            Else
                ' Registerwechsel erlauben
                RegChgAllow = 99
            End If
        Else
            ' Registerwechsel erlauben            RegChgAllow = 99
            Me.Undo
        End If
    End If

    ' ***************************************************************************************************
    
Else        ' hier beginnt die alternative Routine
    
    If MechDatenPruefen_neu() = True Then       ' alle Daten korrekt eingetragen
        Cancel = False
        
        ' Registerwechsel erlauben
        RegChgAllow = 99
    
    Else
        ' Registerwechsel unterbinden bis alle Felder ausgefüllt sind
        RegChgAllow = 0
        
        MsgBox "Bitte füllen Sie alle erforderlichen (roten) Felder aus!", vbInformation + vbOKOnly, "Hinweis"

        
        strMsgBox = MsgBox("Änderungen speichern?", vbQuestion + vbYesNo, "Änderungen speichern")
      
        If (strMsgBox = 6) Then 'JA wurde gedrückt
            ' Registerwechsel erlauben
            RegChgAllow = 99
            Cancel = False
        
        Else
            Cancel = True
        End If
    End If
End If      ' hier endet die alternative Routine
End Sub


Die Abfrage, ob die Daten auch bei Unvollständigkeit gespeichert werden sollen, habe ich drin gelassen, um die Möglichkeit aufzuzeigen, dass  trotzdem auf Nachfrage gespeichert werden kann {auch wenn ich das nicht für sinnvoll erachte}.


Harald
« Letzte Änderung: Dezember 15, 2013, 09:43:57 von bahasu »
Servus
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: Datensatz speichern wenn Pflichtfelder OK
« Antwort #9 am: Dezember 23, 2013, 16:51:51 »
Danke für das Beispiel!

-Tom-
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen