[Messagebox] Meerdere opties en relevante acties

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Een standaard messagebox maken lukt me nog wel. Als ik echter een wat meer "geavanceerde" messagebox wil die de gebruiker vraagt "wilt u opslaan?" met vervolgens de opties: Ja, Nee, Annuleren.....dat lukt me niet. Hier vind ik verder ook geen informatie over.

Wat lukt me precies niet?
"Ja"
Hoe kan ik het formulier laten sluiten en gegevens opslaan? Is dit de juiste code:
Code:
DoCmd.Close acForm, "Formuliernaam", acSaveYes
??

"Nee"
Hoe kan ik het formulier laten sluiten en gegevens NIET opslaan? Is dit de juiste code:
Code:
DoCmd.Close acForm, "Formuliernaam", acSaveNo
??

"Annuleren"
Hoe kan ik de messagebox laten sluiten als de gebruiker "per ongeluk" op de betreffende knop heeft gedrukt?
Hier kan ik me geen code voor bedenken.
 
Neem hier eens een kijkje: MsgBox Arguments

Voorbeeld uit de losse pols:
Code:
Dim LResponse As Integer
LResponse = MsgBox("De tekst die je aan een gebruiker vraagt hier", vbYesNoCancel , "Titel van de MsgBox")

If LResponse = vbYes Then
   DoCmd.Close acForm, "Formuliernaam", acSaveYes
Else If LResponse = vbNo Then
   DoCmd.Close acForm, "Formuliernaam", acSaveNo
End If

Een else is niet nodig, als de gebruiker op Annuleren drukt gebeurt er simpelweg niks.
 
Het gaat om formulier "Nieuwe klant"
De betreffende knop heet voor nu even "Knop50"

Ik heb nu deze code, naar aanleiding van jou voorbeeld:

Code:
Private Sub Knop50_Click()
Dim LResponse As Integer
LResponse = MsgBox("Wilt u de ingevoerde gegevens opslaan?", vbYesNoCancel, "Opslaan")

If LResponse = vbYes Then
   DoCmd.Close acForm, "Nieuwe klant", acSaveYes
ElseIf LResponse = vbNo Then
   DoCmd.Close acForm, "Nieuwe klant", acSaveNo
End If
End Sub

Annuleren werkt, alleen bij het klikken op "nee" slaat hij TOCH gegevens op.....
 
Dit helpt:

Code:
Private Sub Knop50_Click()
Dim LResponse As Integer
LResponse = MsgBox("Wilt u de ingevoerde gegevens opslaan?", vbYesNoCancel, "Opslaan")

If LResponse = vbYes Then
   DoCmd.Close acForm, "Nieuwe klant", acSaveYes
ElseIf LResponse = vbNo Then
    Me.Form.Undo
   DoCmd.Close acForm, "Nieuwe klant", acSaveNo
End If
End Sub
 
De opties acSaveYes en acSaveNo in je code
Code:
If LResponse = vbYes Then
   DoCmd.Close acForm, "Nieuwe klant", acSaveYes
ElseIf LResponse = vbNo Then
    Me.Form.Undo
   DoCmd.Close acForm, "Nieuwe klant", acSaveNo
End If
kun je net zo goed weglaten, want die doen niks. Die zijn alleen bedoeld om aanpassingen in het formulier die je met VBA maakt op te slaan of niet. En daar is hier geen sprake van. Dan moet je een formulier in VBA in de DesignModus openen, dan iets veranderen in het formulier (bijvoorbeeld de recordbron) en dan het formulier opslaan met acSaveYes.
Je houdt jezelf dus voor de gek met die twee opties. Maar dat heb ik je al in een andere topic gezegd...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan