Beste,
Een tijd geleden zijn wij bezig geweest met een form waarop een knop met bewerken, opslaan en sluiten zit.
Situatie:
Wanneer er op cmdBewerken wordt gedrukt kunnen er gegevens op het form bewerkt worden. Wanneer er vervolgens op cmdOpslaan wordt gedrukt worden de gegevens opgeslagen in de tabel. Wanneer er dan vervolgens op cmdSluiten wordt gedrukt sluit het form zonder enige melding.
Wanneer er op cmdBewerken wordt gedrukt kunnen er gegevens op het form bewerkt worden. Wanneer er vervolgens niet op cmdOpslaan wordt gedrukt worden de gegevens niet opgeslagen op de tabel. Wanneer er dan vervolgens op cmdSluiten wordt gedrukt krijg de gebruiker een melding: "U heeft de wijzigingen nog niet opgeslagen; wilt u het formulier sluiten"? Met de keuze Ja of Nee.
Code:
Probleem:
Nu is het zo dat de code soms wel en soms niet werkt. Dit maakt het voor mij lastig om de een fout te ontdekken en vraag daarom jullie hulp.
Soms is het zo dat wanneer ik gegevens bewerkt, vervolgens op opslaan druk en daarna op sluiten dat ik de melding krijg dat de er niet is opgeslagen. Dit terwijl ik wel op opslaan heb gedrukt. Het rare is dat hij het dan wel weer doet als ik acces afsluit en opnieuw opstart en dezelfde handelingen verricht.
Het komt ook voor dat wanneer ik op bewerken druk, ik wijzigingen aanbreng en ik op opslaan druk dat alle textboxen leeg worden gemaakt. Dit terwijl ik normaal gesproken op hetzelfde forum blijf en mijn gewijzigde gegevens te zien krijg.
Het is dan wel zo dat wanneer dit gebeurt ik geen bericht van sluiten krijg. Helaas wil ik graag de gegevens die ik zojuist heb veranderd te zien krijgen.
Zelf denk ik dat het Me.Dirty command af en toe in de war wordt geschopt. Mocht dit het geval zijn, is er een manier om zelf de Me.Dirty in te stellen op true of false wanneer ik op een knop druk?
Bij voorbaat dank,
Een tijd geleden zijn wij bezig geweest met een form waarop een knop met bewerken, opslaan en sluiten zit.
Situatie:
Wanneer er op cmdBewerken wordt gedrukt kunnen er gegevens op het form bewerkt worden. Wanneer er vervolgens op cmdOpslaan wordt gedrukt worden de gegevens opgeslagen in de tabel. Wanneer er dan vervolgens op cmdSluiten wordt gedrukt sluit het form zonder enige melding.
Wanneer er op cmdBewerken wordt gedrukt kunnen er gegevens op het form bewerkt worden. Wanneer er vervolgens niet op cmdOpslaan wordt gedrukt worden de gegevens niet opgeslagen op de tabel. Wanneer er dan vervolgens op cmdSluiten wordt gedrukt krijg de gebruiker een melding: "U heeft de wijzigingen nog niet opgeslagen; wilt u het formulier sluiten"? Met de keuze Ja of Nee.
Code:
Code:
Private Sub cmdBewerken_Click()
On Error GoTo Stoppen
If Me.cmdBewerken.Caption = "&Bewerken" Then
With Me.cmdBewerken
.Caption = "&Opslaan"
cmdEmail.Visible = False
cmdVerwijder.Visible = True
For Each Control In Me.Controls
If Control.ControlType = acTextBox Then
Select Case Control.Name
Case _
"txtDebiteurnummer", _
"txtDebiteurnaam", _
"txtStraat", _
"txtHuisnummer", _
"txtPostcode", _
"txtPlaats", _
"txtProvincie", _
"txtLand", _
"txtWebsite", _
"txtVoornaam", _
"txtAchternaam", _
"txtFunctie", _
"txtMobielnummer", _
"txtBedrijfsnummer", _
"txtEmail", _
"txtOpmerkingen"
With Control
.Locked = False
.BorderStyle = 4
.BorderColor = RGB(255, 165, 0)
End With
End Select
End If
Next
End With
ElseIf Me.cmdBewerken.Caption = "&Opslaan" Then
With Me.cmdBewerken
.Caption = "&Bewerken"
cmdEmail.Visible = True
cmdVerwijder.Visible = False
For Each Control In Me.Controls
If Control.ControlType = acTextBox Then
Select Case Control.Name
Case _
"txtDebiteurnummer", _
"txtDebiteurnaam", _
"txtStraat", _
"txtHuisnummer", _
"txtPostcode", _
"txtPlaats", _
"txtProvincie", _
"txtLand", _
"txtWebsite", _
"txtVoornaam", _
"txtAchternaam", _
"txtFunctie", _
"txtMobielnummer", _
"txtBedrijfsnummer", _
"txtEmail", _
"txtOpmerkingen"
With Control
.Locked = True
.BorderStyle = 1
.BorderColor = RGB(199, 199, 199)
End With
End Select
End If
Next
Forms!Debiteuren.Requery
Forms!DebiteurenUitgebreid.Requery
Forms!Debitueren.lstDebiteuren.Requery
End With
ElseIf Me.Dirty Then Me.Dirty = False
DoCmd.RunCommand acCmdSaveRecord
End If
Stoppen:
End Sub
Code:
Private Sub cmdSluiten_Click()
On Error GoTo Stoppen
If Me.Dirty Then
If MsgBox("U heeft de wijzigingen nog niet opgeslagen; wilt u het formulier sluiten?" & vbLf _
& "U raakt alle wijzigingen kwijt.", vbYesNo + vbDefaultButton2) = vbYes Then
Me.Undo
DoCmd.Close acForm, Me.Form.Name, acSaveNo
Else
Exit Sub
End If
Else
DoCmd.Close acForm, Me.Form.Name
End If
Stoppen:
End Sub
Probleem:
Nu is het zo dat de code soms wel en soms niet werkt. Dit maakt het voor mij lastig om de een fout te ontdekken en vraag daarom jullie hulp.
Soms is het zo dat wanneer ik gegevens bewerkt, vervolgens op opslaan druk en daarna op sluiten dat ik de melding krijg dat de er niet is opgeslagen. Dit terwijl ik wel op opslaan heb gedrukt. Het rare is dat hij het dan wel weer doet als ik acces afsluit en opnieuw opstart en dezelfde handelingen verricht.
Het komt ook voor dat wanneer ik op bewerken druk, ik wijzigingen aanbreng en ik op opslaan druk dat alle textboxen leeg worden gemaakt. Dit terwijl ik normaal gesproken op hetzelfde forum blijf en mijn gewijzigde gegevens te zien krijg.
Het is dan wel zo dat wanneer dit gebeurt ik geen bericht van sluiten krijg. Helaas wil ik graag de gegevens die ik zojuist heb veranderd te zien krijgen.
Zelf denk ik dat het Me.Dirty command af en toe in de war wordt geschopt. Mocht dit het geval zijn, is er een manier om zelf de Me.Dirty in te stellen op true of false wanneer ik op een knop druk?
Bij voorbaat dank,
Laatst bewerkt: