Discussion:
Bestehender Datensatz überschreiben per VBA
(zu alt für eine Antwort)
Raphael Niederer
2007-04-16 11:28:50 UTC
Permalink
Hallo Leute.... habe auf einem Formular, 2 Datensätze, die ich speichern
muss. Da ich dies per vba machen muss hab ich das "problemchen" zuerst so
gelöst:

CurrentDb.Execute "INSERT INTO tablle1(ID, spalte2) VALUES ('" & Me!ID &
"','" & Me!textfeld2 & "')", dbFailOnError

jetzt ist es aber leider so, dass die ID womöglich (es ist beides
möglich --> die ID besteht schon || --> die ID besteht noch nicht) besteht
und ich möchte die spalte2 bloss überschreiben!

wie stelle ich das an?

mfg Raphael
Gunter Avenius
2007-04-16 11:39:29 UTC
Permalink
Hallo Raphael,
Post by Raphael Niederer
Hallo Leute.... habe auf einem Formular, 2 Datensätze, die ich
speichern muss. Da ich dies per vba machen muss hab ich das
CurrentDb.Execute "INSERT INTO tablle1(ID, spalte2) VALUES ('" &
Me!ID & "','" & Me!textfeld2 & "')", dbFailOnError
jetzt ist es aber leider so, dass die ID womöglich (es ist beides
möglich --> die ID besteht schon || --> die ID besteht noch nicht)
besteht und ich möchte die spalte2 bloss überschreiben!
wie stelle ich das an?
Prüfe nach ob die ID vorhanden ist (DLookup) und mache dann ein
Currenddb.execute "UPDATE ...") wenn nicht vorhanden ein "INSERT
INTO..."
--
Gruß
Gunter
_________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
SQL Server-Entwickler-Konferenz (SEK1), 21./22.4.2007, Nürnberg
http://www.donkarl.com/?SEK
Stefan Hoffmann
2007-04-16 11:42:18 UTC
Permalink
hallo Raphael,
Post by Raphael Niederer
CurrentDb.Execute "INSERT INTO tablle1(ID, spalte2) VALUES ('" & Me!ID &
"','" & Me!textfeld2 & "')", dbFailOnError
jetzt ist es aber leider so, dass die ID womöglich (es ist beides
möglich --> die ID besteht schon || --> die ID besteht noch nicht) besteht
und ich möchte die spalte2 bloss überschreiben!
Ungefähr so:

Dim dbc As DAO.Database

Set dbc = CurrentDb

dbc.Execute "UPDATE tabelle1 " & _
"SET spalte2 = '" & _
Replace(Textfeld2.Value, "'", "''") & "' " & _
"WHERE ID = " & Me![ID], _
dbFailOnError

If dbc.RecordsAffected = 0 Then
dbc.Execute "INSERT...", dbFailOnError
End If



mfG
--> stefan <--
--
Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm
Raphael Niederer
2007-04-16 12:08:30 UTC
Permalink
Post by Stefan Hoffmann
Dim dbc As DAO.Database
Set dbc = CurrentDb
dbc.Execute "UPDATE tabelle1 " & _
"SET spalte2 = '" & _
Replace(Textfeld2.Value, "'", "''") & "' " & _
"WHERE ID = " & Me![ID], _
dbFailOnError
If dbc.RecordsAffected = 0 Then
dbc.Execute "INSERT...", dbFailOnError
End If
Danke viel mal war genau das richtige!

Dim dbc As DAO.Database

Set dbc = CurrentDb

dbc.Execute "UPDATE tblKontrolle " & _
"SET KontrollAusgegeben = '" & _
Replace(Me!Ausgegeben.Value, "'", "''") & "' " & _
"WHERE MonID = " & MonID, _
dbFailOnError

If dbc.RecordsAffected = 0 Then
dbc.Execute "INSERT INTO tblKontrolle(MonID, KontrollAusgegeben)
VALUES ('" & MonID & "','" & Me!Ausgegeben & "')", dbFailOnError
End If

mfg Rapahel
Post by Stefan Hoffmann
hallo Raphael,
Post by Raphael Niederer
CurrentDb.Execute "INSERT INTO tablle1(ID, spalte2) VALUES ('" & Me!ID &
"','" & Me!textfeld2 & "')", dbFailOnError
jetzt ist es aber leider so, dass die ID womöglich (es ist beides
möglich --> die ID besteht schon || --> die ID besteht noch nicht)
besteht und ich möchte die spalte2 bloss überschreiben!
Dim dbc As DAO.Database
Set dbc = CurrentDb
dbc.Execute "UPDATE tabelle1 " & _
"SET spalte2 = '" & _
Replace(Textfeld2.Value, "'", "''") & "' " & _
"WHERE ID = " & Me![ID], _
dbFailOnError
If dbc.RecordsAffected = 0 Then
dbc.Execute "INSERT...", dbFailOnError
End If
mfG
--> stefan <--
--
Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm
Henry Habermacher [MVP Access]
2007-04-16 12:43:08 UTC
Permalink
Hallo Raphael
Post by Raphael Niederer
Hallo Leute.... habe auf einem Formular, 2 Datensätze, die ich
speichern muss. Da ich dies per vba machen muss hab ich das
CurrentDb.Execute "INSERT INTO tablle1(ID, spalte2) VALUES ('" &
Me!ID & "','" & Me!textfeld2 & "')", dbFailOnError
jetzt ist es aber leider so, dass die ID womöglich (es ist beides
möglich --> die ID besteht schon || --> die ID besteht noch nicht)
besteht und ich möchte die spalte2 bloss überschreiben!
Das geht mit einem Recordset ziemlich elegant.

Dim db as Database
Dim rs as Recordset
set db = CurrentDB()
set rs = db.OpenRecordset("Select spalte2 FROM tabelle1 WHERE ID = " &
Me!DeineID, dbOpenDynaset)
With rs
If .recordcount = 0 Then
.addnew
!ID = Me!DeineID
Else
.Edit
End If
!splate2 = Me!textfeld2
.update
.close
End With
set rs = nothing
set db = nothing

HTH
Henry
--
Keine E-Mails auf Postings in NGs. Danke.
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com
OH: Online Hilfe (Taste F1)
Downloads: http://www.dbdev.org
Loading...