Datensatz aus DBGrid kopieren und in andere Tabelle einfügen
-
Hallo,
ich habe folgendes Problem:
Habe eine DB-Tabelle die ich in einem DBGrid anzeigen und bearbeiten kann.
Jetzt möchte ich den aktuell markierten Datensatz kopieren und in eine andere, schon vorhandene Tabelle einfügen.
SQL sieht folgendermaßen aus:
INSERT INTO "Tabelle_B" SELECT * FROM "Tabelle_A" WHERE 'LaufendeNummer'=String;
String ist in diesen Fall die LaufendeNummer des markierten Datensatzes (aus dem DBGrid ausgelesen und in einen String geschrieben).
Kann man das so machen? Wenn ja wie (Quellcode)?
Oder funktioniert das mit dem Datensatzkopieren anders?
Danke!
-
du kannst auf den aktuellen Datensatz wie folgt zugreifen:
int q = DBGrid1->DataSource->DataSet->FieldByName("LaufendeNummer")->AsInteger;
wobei ich hier davon ausgehe, daß 'LaufendeNummer' ein Interger ist
was das Insert angeht: normalerweise muß man die verwendete Felder angeben, z.B.
INSERT INTO tabelle (feld1,feld2,feld3) SELECT feld1,feld2,feld3 FROM anderetabelle WHERE feld0 = 1
hierbei werden automatische generierte Schlüssel nicht mit in der Feldliste angegeben
-
Hexe schrieb:
Jetzt möchte ich den aktuell markierten Datensatz kopieren und in eine andere, schon vorhandene Tabelle einfügen.
Meinst Du damit die Tabelle in der DB? Willst Du das Grid nur verwenden um den Primärschlüsselwert zu lesen? (Biste also mit der Antwort von Linnea zufrieden?)
Hexe schrieb:
INSERT INTO "Tabelle_B" SELECT * FROM "Tabelle_A" WHERE 'LaufendeNummer'=String;
Sei vorsichtig mit einfachen Quotes. Viele Datenbanksystem interpretieren 'LaufendeNummer' als String, nicht als Bezeichner.
-
Linnea schrieb:
was das Insert angeht: normalerweise muß man die verwendete Felder angeben, z.B.
Muss er nicht. Ist halt ein Glücksspiel, wenn sich die Spalten ändern, Bums!
-
Danke für die Hilfe!
Hat geklappt!