neuer Datensatz wird nicht erkannt (Me.NewRecord=True)

24/03/2009 - 12:05 von Volker Scherf | Report spam
Hallo NG,
wenn ich ein gebundenes Formular öffne um einen neuen Datensatz anzulegen
z.B. 'DoCmd.OpenForm docName, , , , acFormAdd', dann ist NewRecord immer auf
False.

Daher funktioniert folgende Sub net korrekt:

*****
Private Sub Form_BeforeUpdate(Cancel As Integer)

If Me.NewRecord = False Then

If Me.Dirty = True Then

If MsgBox("Daten wurden geàndert! Abspeichern?", vbYesNo +
vbQuestion + vbDefaultButton2, "") = vbNo Then
DoCmd.CancelEvent
End If

End If

End If

End Sub
*****
Ich möchte also die Frage nur dann, wenn ein bestehender Datensatz geàndert
wird und nicht wenn ein neuer hinzugefügt wird.

Oder stehe ich auf der Leitung und verstehe NewRecord falsch?

A2K+SP3, WinXP

Viele Grüße,
Volker
 

Lesen sie die antworten

#1 Peter Doering
24/03/2009 - 12:38 | Warnen spam
Hallo,

Volker Scherf wrote:

wenn ich ein gebundenes Formular öffne um einen neuen Datensatz anzulegen
z.B. 'DoCmd.OpenForm docName, , , , acFormAdd', dann ist NewRecord immer auf
False.



Eigentlich nicht.

Daher funktioniert folgende Sub net korrekt:

*****
Private Sub Form_BeforeUpdate(Cancel As Integer)

If Me.NewRecord = False Then

If Me.Dirty = True Then



Das kannst du dir sparen. Nach Form_BeforeUpdate geht's nur im Fall von
Dirty=True.

If MsgBox("Daten wurden geàndert! Abspeichern?", vbYesNo +
vbQuestion + vbDefaultButton2, "") = vbNo Then
DoCmd.CancelEvent



Hier reichen

Cancel=True
Exit Sub

End If

End If

End If

End Sub
*****
Ich möchte also die Frage nur dann, wenn ein bestehender Datensatz geàndert
wird und nicht wenn ein neuer hinzugefügt wird.

Oder stehe ich auf der Leitung und verstehe NewRecord falsch?

A2K+SP3, WinXP



Ich hab unter A2K3+SP2, WinXP getestet und da funktioniert alles wie
beschrieben.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen