Voorkomen dat record onnodig wordt toegevoegd

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Ik heb een formulier (nieuwe offerte) dat geopend wordt met de knop "nieuwe offerte".

Probleem is nu dat zodra het formulier "nieuwe offerte" geopend wordt, er een record toegevoegd wordt. Mocht de gebruiker nu tóch die offerte niet willen toevoegen en het scherm sluit, dan wordt er tóch een record aangemaakt, maar dan leeg.

Ik heb een knop "ongedaan maken" op het formulier die wél ervoor zorgt dat het record geannuleerd en niet toegevoegd wordt (als de gebruiker deze knop drukt voor het scherm te sluiten).

Nu wil ik niet afhankelijk zijn van de gebruiker/deze knop en fouten voorkomen.

Hoe kan ik hier het beste mee omgaan?
 
Je record wordt nu aangemaakt en opgeslagen omdat je met standaardwaarden werkt. Daar zou je dus vanaf kunnen stappen. Of je kunt (meer) velden verplicht maken (wat ik zowiezo zou aanraden) zodat bij het aanmaken van een record dat pas kan worden opgeslagen als die verplichte velden zijn ingevuld. Een record wordt dan pas opgeslagen als alle verplichte velden zijn ingevuld. Bij ongedaan maken gebeurt dan exact dat: het record wordt niet opgeslagen.
 
Hmm, oké...:)

En hoe kan ik dat het beste doen?

Ik ben nu aan het denken over een stukje code bijvoorbeeld dat bij sluiten van het formulier een bericht toont met de vraag of de record moet worden opgeslagen of niet? En dan met een ja en een nee knop in het berichtvenster?
 
Dat gaat niet helpen, tenzij (ook een oplossing) je het formulier loskoppelt van de Recordbron. Maar dan zul je met VBA een recordset moeten werken, en allerlei knoppen maken die door de recordset heenbladeren. Het is een onderwerp dat binnenkort wel aan bod komt in de cursus, maar daar heb je nu niks aan. Ik zou zeggen: hou het in eerste instantie simpel, en begin met de veldeigenschappen aan te passen. Dat is simpel te doen in de tabel. Eventueel met een aangepaste foutmelding, want de standaard foutmelding is niet de meest gebruiksvriendelijke tekst.
 
Ik neem aan dat dat de eigenschappen van tekstvakken etc. op het formulier zijn die 'verplicht' ofzo heten?
 
Opslaan doe je in een tabel, en veldeigenschappen dus ook.
 
Oké, hij slaat hem nu niet meer op zonder dat vereiste velden ingevuld zijn.

Volgende vraag is hoe voorkom ik de meldingen:
- "Voer een waarde in voor het veld ...."
en
- "U kunt deze record nu niet opslaan.....wilt u het databaseobject toch sluiten?"

?
 
Elk formulier heeft een gebeurtenis <Bij fout>. Die kun je gebruiken om de foutmeldingen af te vangen. Hier een paar voorbeelden van foutnummers:

Code:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
    MsgBox "Foutnummer: " & DataErr
    Select Case DataErr
        Case 3146
            MsgBox ("Je probeert een dubbele waarde in te voeren.")
            Response = 0
        Case 3022
            MsgBox ("Deze combinatie is strijdig met de sleutel.")
            Response = 0
        Case 3314
            MsgBox ("Je hebt een verplicht veld leeg gelaten.")
            Response = 0
        Case Else
    End Select
    Response = 0
End Sub
De msgbox staat erbij zodat je het nummer van de fout kunt uitlezen en opzoeken in de help. Elke fout heeft natuurlijk een andere boodschap nodig.
 
Oké, dank je. Handig die functie :)

De volgende code gebruik ik nu bij "bij fout" van het formulier:

Code:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Select Case DataErr
        Case 3314
            MsgBox ("Je hebt een verplicht veld leeg gelaten. Nieuwe offerte is incompleet. Wijzigingen worden niet opgeslagen.")
            Response = 0
        Case Else
    End Select
    Response = 0
End Sub
 
De laatste Response=0 kan weg; die stond er nog uit de oorspronkelijke code toen ik nog geen Select Case had toegevoegd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan