GELÖST :Daten von einem DBGRid zum anderen verschieben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Bernie110
Beiträge: 78
Registriert: Mo 10. Feb 2020, 17:43

GELÖST :Daten von einem DBGRid zum anderen verschieben

Beitrag von Bernie110 »

Guten Tag Zusammen,


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

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;
Nun möchte ich jetzt dass alles was ich vom DBGRID2 verschoben habe nicht mehr in DBGRid2 angezeigt wird.
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
Zuletzt geändert von Bernie110 am Di 12. Mai 2020, 13:25, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4137
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Daten von einem DBGRid zum anderen verschieben

Beitrag von af0815 »

Du verschiebst ja nicht. Lt. SQL fügst du einen neuen Datensatz hinzu, löscht ihn aber nicht in der ursprünglichen Tabelle.

Willst du verschieben oder kopieren. Das ist die Frage. Falls du nur kopierst und die kopierten Ausblenden willst, so geht das über einen entsprechenden JOIN.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Bernie110
Beiträge: 78
Registriert: Mo 10. Feb 2020, 17:43

Re: Daten von einem DBGRid zum anderen verschieben

Beitrag von Bernie110 »

af0815 hat geschrieben:
Mo 11. Mai 2020, 14:38
Du verschiebst ja nicht. Lt. SQL fügst du einen neuen Datensatz hinzu, löscht ihn aber nicht in der ursprünglichen Tabelle.

Willst du verschieben oder kopieren. Das ist die Frage. Falls du nur kopierst und die kopierten Ausblenden willst, so geht das über einen entsprechenden JOIN.
Hi af0815m danke für deine Antwort.
Ich möchte die Adress-Kontakt Verknüpfungstabelle mit weiteren Daten befüllen.

Diese Verknüpgunstabelle beinhaltet Adress-ID und USER_ID ( Kontakt_ID)
So kann ein Kontakt theoretisch 1:n Firmen zugeordnet werden.
Macht natürlich keinen Sinn.
Jedoch wenn eine Firma mehrere Niederlassung hat und der User überregional arbeitet, dann hätte ich gerne
seine Kontaktdaten in den Niederlassungen für die er tätig ist.
Alternative wäre.. doppelter Kontakt in der Tabelle Stamm_Adressen_Kontakt.
So macht es halt die Verknüpfungstabelle.

Im rechten Grid werden alle Firmen angezeigt für die Herr Mustermann theoretisch arbeiten kann.
Eben alle Mustermann Firmen :D

Mittels diesem Formular möchte ich nun im rechten Grid die Firmen selektieren die ich via Insert dann in die
Verknüpfungstablle einfüge...
Funktioniert auch.
Nur möchte ich dann, dass die Adressen im rechten Grid verschwinden. Sonst kann ein User mehrmals einen Konakt ein und
der selben Firma zuordnen..

Ich hoffe ich beschreibe es nicht zu komplizert
Lg Bernie

Bernie110
Beiträge: 78
Registriert: Mo 10. Feb 2020, 17:43

Re: Daten von einem DBGRid zum anderen verschieben

Beitrag von Bernie110 »

Ok hat sich erledigt. Habs hinbekommen ;-) Lg Bernie

Antworten