Datensatz hinzufügen, nicht überschreiben Access
Liebe Gemeinde,
ich habe folgenden Code (bei Button klick):
Wähle ich mit diesem Code einen anderen Wert im Kombifeld aus, so wird der alte Wert im Table überschrieben, wie muss der Code aussehen damit der Wert in den Datensatz hinzugefügt wird, also nicht überschrieben.
Besten Dank für eure Hilfe!
Gruß
Dr.
ich habe folgenden Code (bei Button klick):
DoCmd.RunSQL "UPDATE Korridor_Daten SET Kommentar = '" & Date & ": " & Me.txtComment.Value & "' WHERE PersNr=" & Me.PersNrFeld.Value
Wähle ich mit diesem Code einen anderen Wert im Kombifeld aus, so wird der alte Wert im Table überschrieben, wie muss der Code aussehen damit der Wert in den Datensatz hinzugefügt wird, also nicht überschrieben.
Besten Dank für eure Hilfe!
Gruß
Dr.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 308965
Url: https://administrator.de/forum/datensatz-hinzufuegen-nicht-ueberschreiben-access-308965.html
Ausgedruckt am: 26.12.2024 um 13:12 Uhr
19 Kommentare
Neuester Kommentar
Selbst ist der Mann: INSERT
INSERT INTO
Regards
DoCmd.RunSQL "INSERT INTO Korridor_Daten (Kommentar,PersNr) VALUES('" & Date & ": " & Me.txtComment.Value & "','" & Me.PersNrFeld.Value & "')"
The WHERE Clause is not possible inside an INSERT INTO statement, and your structure for an insert is totally wrong, look above. You cannot simply exchange the two statements they are totally different.
Zitat von @Dr.Cornwallis:
gerade getestet mit dem oberen Code, leider fügt er einfach einen neuen Datensatz in den Table ein, ich möchte aber dass dies im Feld hinzugefügt wird.
??? I don't know what you mean sorry.gerade getestet mit dem oberen Code, leider fügt er einfach einen neuen Datensatz in den Table ein, ich möchte aber dass dies im Feld hinzugefügt wird.
Ist das überhaupt ohne where Klausel überhaupt möglich?
Where Clause is not allowed in an INSERT INTO statement like I said ... this is absolutely wrong thinking!Insert into creates a new record in a table! So "where" does not make any sense because you are not updating a record.
Hallo,
Nur vom einfügen eines Kommentars wird das noch lange kein Hinzufügen eines neuen Datensatzes. Das ist Ändern (Update) ansonsten Insert
Gruß,
Peter
Zitat von @Dr.Cornwallis:
Heute 5.7.2016, ich füge ein Kommentar in den Datensatz ein, es soll aber nur in dem Datensatz mit dem gleichen Datum(aktuelles Datum) in Feld 2 eingefügt werden, die anderen sollen leer bleiben.
Entweder fügst du einen neuen Datensatz (PersNr, Datum, Kommentar) deiner Tabelle hinzu (Insert) oder du änderst einen schon bestehenden Datensatz (Update). Sind denn schon heute Datensätze (leere) mit Datum von Morgen vorhanden?Heute 5.7.2016, ich füge ein Kommentar in den Datensatz ein, es soll aber nur in dem Datensatz mit dem gleichen Datum(aktuelles Datum) in Feld 2 eingefügt werden, die anderen sollen leer bleiben.
6.7.2016, ich füge wieder einen Kommentar auf die gleiche Pers.Nr ein, diesmal soll dieser aber nur in den Datensatz mit 6.7.2016 eingefügt werden.
Entweder einen neuen Datensatz oder du veränderst einen bestehenden Datensatz.Nur vom einfügen eines Kommentars wird das noch lange kein Hinzufügen eines neuen Datensatzes. Das ist Ändern (Update) ansonsten Insert
Gruß,
Peter
So you want an update only with an additional condition?
DoCmd.RunSQL "UPDATE Korridor_Daten SET Kommentar = '" & Date & ": " & Me.txtComment.Value & "' WHERE PersNr=" & Me.PersNrFeld.Value & " AND Datum = #" & Me.FeldDatum.Value & "#"
Moin Dr.Cornwallis,
dazu müssten wir doch den identifizierenden Schlüssel (primary key) deiner Tabelle kennen.
Wenn der PK nicht nur auf "PersNr" liegt, wie alle nach deinen Beispielstatements vermutet haben, sondern auf "PersNr, Datum" oder gar auf einer unsäglichen AutoID, dann geht es.
Dann vergiss alles, was bisher zum Thema "WHERE-Clause weglassen" gesagt wurde und mach ein UPDATE auf den Satz mit PersNr und dem richtigen Datum.
Aber sag doch erstmal, was denn nun der PK der Tabelle ist.
Grüße
Biber
P.S. Obsolet, hat auch highload schon geschrieben.
dazu müssten wir doch den identifizierenden Schlüssel (primary key) deiner Tabelle kennen.
Wenn der PK nicht nur auf "PersNr" liegt, wie alle nach deinen Beispielstatements vermutet haben, sondern auf "PersNr, Datum" oder gar auf einer unsäglichen AutoID, dann geht es.
Dann vergiss alles, was bisher zum Thema "WHERE-Clause weglassen" gesagt wurde und mach ein UPDATE auf den Satz mit PersNr und dem richtigen Datum.
"... WHERE PersNr=" & Me.PersNrFeld.Value & " and Datum= Date()"
Aber sag doch erstmal, was denn nun der PK der Tabelle ist.
Grüße
Biber
P.S. Obsolet, hat auch highload schon geschrieben.
So you need to check if there is already a matching entry in the table and do an update if yes or an insert if no entry exists.
Dim v As Variant, strSQL As String
v = DLookup("ID", "Korridor_Daten", "Periode = Date() AND PersNr = " & Me.PersNrFeld.Value)
If v <> vbNull Then
strSQL = "UPDATE Korridor_Daten SET Kommentar = '" & Me.txtComment.Value & "' WHERE PersNr=" & Me.PersNrFeld.Value & " AND Periode = Date()"
Else
strSQL = "INSERT INTO Korridor_Daten (Periode,PersNr,Kommentar) VALUES(Date()," & Me.PersFeld.Value & ",'" & Me.txtComment.Value & "')"
End If
DoCmd.RunSQL strSQL
Moin highload,
just to complement your solution: guess the TO wants to update not only records describing the current date, but any desired date.
So for example he might wish to update the record PersNr 123456 based on July, 13th or what day ever he had choosen with a comment.
So your first attempt - using
Grüße
Biber
just to complement your solution: guess the TO wants to update not only records describing the current date, but any desired date.
So for example he might wish to update the record PersNr 123456 based on July, 13th or what day ever he had choosen with a comment.
So your first attempt - using
Me.FeldDatum
rather than the current date Date()
- seems to be closer to the solution:.... & " AND Datum = #" & Me.FeldDatum.Value & "#"
Grüße
Biber
Hi @Biber,
i didn't see any input field for a date in his form so i guess his last statement:
But i think he has enough solutions to solve his "problem" now
Regards
i didn't see any input field for a date in his form so i guess his last statement:
if i add the comment at 01.05.2016, it should be added to the record with the same Date in it(01.05.2016).
leads to: "I want to add the comment to the todays date record". Why should someone select a date for his comment he is writing jsut in time .But i think he has enough solutions to solve his "problem" now
Regards