Ich möchte Daten von einem DBGRid zu einem anderen verschieben.

Links ist das DBGRID2
Rechts ist das DBGrid1
DBGrid2 hat Multiselect.
Bisher habe ich das mit diesem Code und einem SQL Insert gemacht.
Code: Alles auswählen
procedure TFrm_w_STAMM_ADRESSEN_KONTAKT_Zuordnungen.BitBtn2Click(Sender: TObject
);
var
i : integer;
begin
// VON DBGRID 2 nach DBGRID 1 verschieben________________________________________VERSCHIEBEN 2
if DBGrid2.SelectedRows.Count>0 then
begin
for i := 0 to DBGrid2.SelectedRows.Count - 1 do
begin
DBGrid2.DataSource.DataSet.GotoBookmark(Pointer(DBGrid2.SelectedRows.Items[i]));
frm_Hauptmenu.SQLQuery2.close;
frm_Hauptmenu.SQLQuery2.SQL.Clear;
frm_Hauptmenu.SQLQuery2.SQL.Add('INSERT INTO stamm_adressen_kontakt_verkn_tbl (XADRESS_ID, XUSER_ID)');
frm_Hauptmenu.SQLQuery2.SQL.Add(' VALUES (:XADRESS_ID, :XUSER_ID );' );
frm_Hauptmenu.SQLQuery2.ParamByName('XUSER_ID').AsInteger := StrToInt(KONTAKT_ID.text);
frm_Hauptmenu.SQLQuery2.ParamByName('XADRESS_ID').AsInteger := DBGrid2.DataSource.DataSet.FieldbyName('ID').asInteger;
Frm_Hauptmenu.SQLQuery2.ExecSQL;
frm_Hauptmenu.SQLTransaction2.Commit;
end;
end;
DBGrid2.SelectedRows.Clear;
// DBGRID 1 ...............................
SQLQuery1.close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('select * from v_STAMM_ADRESSEN_KONTAKT where Kontakt_ID = '''+Kontakt_ID.Text+''' and XADRESS_ID <> '''+ADRESS_ID.text+''' and Aktiv = 1;');
SQLQuery1.open;
DBGrid1.refresh;
// DBGRID 2 ...............................Where Firmen_HG_ID = 1 and k.XUSER_ID is Null or k.XUSER_ID=1
SQLQuery2.close;
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add('select * from v_STAMM_ADRESSEN_HAUPTGRUPPE where Firmen_HG_ID = '''+Firmen_HG_ID.text+''' and ID <> '''+Adress_ID.text+''' order by FirmenName1 ;');
SQLQuery2.open;
DBGrid2.refresh;
Habe schon versucht es über SQL-Views darzustellen. Gelingt mir aber irgend wie nicht.
Im o.g. Bild die Adresse mit der ID 74
Wie würdet ihr so etwas machen ? Via SQL oder gibts da noch eine andere Möglichkeit ?
Vorab herzlichen Dank für eure Hilfe.
Lg Bernie