Acc2003: Datensatz kopieren per VBA mit ID

10/05/2010 - 11:05 von Jürgen Malberg | Report spam
Hallo,

ich stehe etwas auf dem Schlauch...

Tabelle: StArtikel (IDArtikel, ArtikelNr , ArtikelVariante,
felder)
IDArtikel ist Autowert und Primary Key, ArtikelNr & ArtikelVariante
sind Eindeutiger Key

Folgende VBA soll nun einen Datensatz auswàhlen und neu einfügen aber
noch nicht speichern, denn einige Felder werden genullt und der User
muss noch eine ArtikelNr eingeben.

Code Beginn==
vArtikelNr = Me.ArtikelNr 'ArtikelNr sichern
dMEHGewicht = fRound(Me.MEHGewicht, 1, vroundup)

Me.AllowAdditions = True

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdRecordsGoToNew
DoCmd.RunCommand acCmdSelectRecord 'Neu
'DoCmd.RunCommand acCmdPasteAppend
DoCmd.RunCommand acCmdPaste


'Felder neu berechnet
Me!ArtikelNrAlt = vArtikelNr 'ArtikelNr der Quelle
sichern
Me!MEHGewicht = dMEHGewicht

'Felder die nicht kopiert werden nullen bzw neu setzen
Me!EAN = Null
Me.rIDStatus = "StArtikel00"

Me.ArtikelNr.SetFocus

Me.AllowAdditions = False

Code Ende==
Leider wird aber der Datensatz gespeichert , statt einfach nur vorerst
eingefügt, so dass der User eben noch etwas àndern kann (und muss).
Das Einfügen erzeugt dann natürlich eine Fehlermeldung.


Habe ich da irgendwo einen Denkfehler?

Muss "Me.AllowAdditions = False" am Ende raus?
 

Lesen sie die antworten

#1 Peter Doering
10/05/2010 - 12:32 | Warnen spam
Hallo,

Jürgen Malberg wrote:

Tabelle: StArtikel (IDArtikel, ArtikelNr , ArtikelVariante,
felder)
IDArtikel ist Autowert und Primary Key, ArtikelNr & ArtikelVariante
sind Eindeutiger Key

Folgende VBA soll nun einen Datensatz auswàhlen und neu einfügen aber
noch nicht speichern, denn einige Felder werden genullt und der User
muss noch eine ArtikelNr eingeben.



Wenn ich deinen Code richtig interpretiere, willst du den aktuellen
Datensatz als neuen DS kopieren. Dafuer wuerde sich die Default-Eigenschaft
besser eignen. Je nach gewuenschtem Ablauf kannst du in Form_Current oder
Form_AfterUpdate folgende Zeilen einfuegen:

Me!ArtikelNrAlt.DefaultValue = Me!ArtikelNr
Me!MEHGewicht.DefaultValue = fRound(Me!MEHGewicht, 1, vroundup)
Me!rIDStatus.DefaultValue = "StArtikel00"

Wenn du jetzt im Formular auf einen neuen DS springst, erscheinen die
Felder bereits vorbelegt.

Gruss - Peter

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

Ähnliche fragen