Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
Delphi 12 Athens
|
AW: INSERT INTO SELECT ohne Spaltenliste
21. Okt 2011, 09:49
Und wie sieht es mit sowas aus?
Delphi-Quellcode:
Source.SQL.Text := 'SELECT * FROM ' + TableName;
Source.ExecSQL;
InsertStr := '';
ValueStr := '';
for i := 0 to Source.ParamCount - 1 do begin
InsertStr := InsertStr + IfThen(InsertStr <> '', ', ', '') + Source.Fields[i].FieldName;
ValueStr := ValueStr + IfThen(ValueStr <> '', ', :', ':') + Source.Fields[i].FieldName;
end;
Dest.SQL.Text := Format('INSERT INTO %s (%s) VALUES(%s)', [TableName, InsertStr, ValueStr]);
while not Source.Eof do begin
Dest.Insert;
for i := 0 to Source.ParamCount - 1 do
Dest.Params.ParamByName(Source.Fields[i].FieldName).Value
:= Source.Fields.FieldByName(Source.Fields[i].FieldName).Value;
Dest.Post;
end;
Und ich glub das Quoten der Values wurden oftmals vergessen.
(entfällt bei dem Preparedzeugs aber)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (21. Okt 2011 um 11:23 Uhr)
Grund: In Source die Params gegen Fields getauscht
|