[Gelöst] Datensatz von Tabelle A in Tabelle B kopieren

Moderator: ModerationP

[Gelöst] Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Tobias.Vetter » 19. Nov 2020, 16:24

Hallo ihr lieben,
zuerst einmal, ja mir ist bewusst, dass Datensätze kopieren nicht gut ist.
Leider ist es in meinem Fall aus diversen Gründen, auf die ich zunächst einmal nicht eingehen will, notwendig.

Ich möchte über einen Button in meinem Formular den angezeigten Datensatz in eine andere Tabelle kopieren.
Der hier im Forum gefundene Code würde primär funktionieren.
Code: Alles auswählen
Private Sub button_copy_Click()
 On Error GoTo err_proc
    Dim strSQL As String, lngID As Long
    DoCmd.RunCommand acCmdSaveRecord
    lngID = Me!part_id
    strSQL = "Insert Into [tbl_Partner_ausgang] Select * From [tbl_Partner] Where part_id=" & lngID
    CurrentDb.Execute strSQL, 128
    MsgBox "Die Daten wurden kopiert!"
end_proc:
    Exit Sub
err_proc:
    MsgBox Err.Description, , Err.Number
    Resume end_proc
End Sub


Nun ist es jedoch so, dass dieser Code auch die ID des Datensatzes der ersten Tabelle mit übernimmt und nicht eine neue ID in der Tabelle 2 erstellt.
Hier könnte jedoch auf dieser ID schon ein Datensatz stehen.
Was muss ich ändern, sodass er alles andere übernimmt außer die ID?

Schon jetzt einmal vielen herzlichen Dank für die Lösungswege.
Zuletzt geändert von Tobias.Vetter am 19. Nov 2020, 17:06, insgesamt 1-mal geändert.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 48
Registriert: 09. Okt 2020, 09:11

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Bitsqueezer » 19. Nov 2020, 16:41

Hallo,

das kommt davon, wenn man die "faule" Schreibweise mit dem * verwendet.

Gib dem INSERT eine Feldliste mit der Felder, die Du wirklich einfügen willst (alle anderen müssen dann einen Default-Wert haben, wenn Du keinen Wert explizit angibst, im Fall der AutoID ist das die nächste ID).

Das gleiche bei SELECT: Passende 1:1 gemappte Feldliste angeben.

Vermeide, wo immer es geht, "SELECT *", das führt aus vielen Gründen zu Problemen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7910
Registriert: 21. Jun 2007, 12:17

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Tobias.Vetter » 19. Nov 2020, 16:45

Danke schon einmal für die Antwort:

Bevor ich nun jedoch lange probiere frage ich gleich nach :D

So?
Code: Alles auswählen
Private Sub button_copy_Click()
 On Error GoTo err_proc
    Dim strSQL As String, lngID As Long
    DoCmd.RunCommand acCmdSaveRecord
    lngID = Me!part_id
    strSQL = "Insert Into [tbl_Partner_ausgang] Select [Feld 1], [Feld 2], ... From [tbl_Partner] Where part_id=" & lngID
    CurrentDb.Execute strSQL, 128
    MsgBox "Die Daten wurden kopiert!"
end_proc:
    Exit Sub
err_proc:
    MsgBox Err.Description, , Err.Number
    Resume end_proc
End Sub
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 48
Registriert: 09. Okt 2020, 09:11

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Beaker s.a. » 19. Nov 2020, 16:50

Hallo Tobias,
Was soll diese Frage? Was passiert wenn du's ausprobierst?
Hinweis: bei einem INSERT brauchst du zwei Feldlisten; - Quelle(n) und
Ziel(e).
gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1056
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Tobias.Vetter » 19. Nov 2020, 16:56

Hallo Ekkehard,
was passiert wenn ich es ausprobiere, es kommt ein Fehler :D

Folgender Code:
Code: Alles auswählen
Private Sub button_copy_Click()
 On Error GoTo err_proc
    Dim strSQL As String, lngID As Long
    DoCmd.RunCommand acCmdSaveRecord
    lngID = Me!part_id
    strSQL = "Insert [part_name], [part_kurzkennung] Into [tbl_Partner_ausgang] Select [part_name], [part_kurzkennung] From [tbl_Partner] Where part_id=" & lngID
    CurrentDb.Execute strSQL, 128
    MsgBox "Die Daten wurden kopiert!"
end_proc:
    Exit Sub
err_proc:
    MsgBox Err.Description, , Err.Number
    Resume end_proc
End Sub


Folgender Fehler:
3134
Syntaxfehler in der INSERT INTO-Answeisung.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 48
Registriert: 09. Okt 2020, 09:11

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Bitsqueezer » 19. Nov 2020, 16:58

Hallo,

einfach mal in die Syntax-Hilfe schauen:

https://docs.microsoft.com/de-de/office ... access-sql

Und leider ist das erste Beispiel dort genauso schräg, nämlich mit SELECT *. Immerhin mit einem Hinweis darüber. Dennoch: Nie machen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7910
Registriert: 21. Jun 2007, 12:17

Re: Datensatz von Tabelle A in Tabelle B kopieren

Beitragvon Tobias.Vetter » 19. Nov 2020, 17:05

Danke Christian, hat funktioniert!
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 48
Registriert: 09. Okt 2020, 09:11


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste