Entwickler-Ecke

Datenbanken - DBTabelle füllen


D. Annies - Sa 09.01.10 18:16
Titel: DBTabelle füllen
Hi, Delpher,

hier kommt mein zweites Problem:
Ich will eine Tabelle mit den Daten einer anderen Tabelle füllen. Geht das auch eleganter als so?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
while not TbSchueler.eof do
      begin
        TbSynctab.append;
          TbSynctab.fieldbyname('IDENT_NR').AsInteger  := TbSchueler.fieldbyname('IDENT_NR').asinteger;
          TbSynctab.fieldbyname('NAME').asstring       := TbSchueler.fieldbyname('NAME').asstring;
          TbSynctab.fieldbyname('VORNAME').asstring    := TbSchueler.fieldbyname('VORNAME').asstring;
          TbSynctab.fieldbyname('KLASSE').asstring     := TbSchueler.fieldbyname('KLASSE').asstring;
          TbSynctab.fieldbyname('FSPRACHE1').asstring  := TbSchueler.fieldbyname('FSPRACHE1').asstring;
          TbSynctab.fieldbyname('FSPRACHE2').asstring  := TbSchueler.fieldbyname('FSprache2').asstring;
          TbSynctab.fieldbyname('WPK1NAME').asstring   := TbSchueler.fieldbyname('WPK1NAME').asstring;
          TbSynctab.fieldbyname('WPK2NAME').asstring   := TbSchueler.fieldbyname('WPK2NAME').asstring;
          TbSynctab.fieldbyname('WPK3NAME').asstring   := TbSchueler.fieldbyname('WPK3NAME').asstring;
          TbSynctab.fieldbyname('WPK4NAME').asstring   := TbSchueler.fieldbyname('WPK4NAME').asstring;
          TbSynctab.fieldbyname('GESCHLECHT').asstring := TbSchueler.fieldbyname('GESCHLECHT').asstring;
          TbSynctab.fieldbyname('GEBDAT').AsString     := DatetoStr(TbSchueler.fieldbyname('GEBDAT').AsDateTime);
          //TbSynctab.fieldbyname('GEBDAT').asdatetime   := TbSchueler.fieldbyname('GEBDAT').asdatetime;
          TbSynctab.fieldbyname('TELEFON').asstring    := TbSchueler.fieldbyname('TELEFON').asstring;
        TbSynctab.post; inc(nk);  TbSchueler.Next;
      end;
      TbSynctab.close;


Danke,
Det


BenBE - Sa 09.01.10 18:39

Jap. TQuery und dann mit einem INSERT-SELECT-Befehl arbeiten:


SQL-Anweisung
1:
2:
3:
4:
INSERT INTO Zieltabelle 
SELECT Spalten, die, zu, uebernehmen, sind 
FROM Quelltabelle 
WHERE Bedingung_fuer_Übernahme


Zu beachten ist, dass die Spalten in der SELECT-Anweisung in der gleichen Reihenfolge wie in der Zieltabelle anzugeben sind.


D. Annies - Sa 09.01.10 18:51

Hi, Benny,

also geht auch ein select * from ...
und: kann die where-Klausel auch fehlen?

Gruß, Detlef


BenBE - Sa 09.01.10 18:54

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
also geht auch ein select * from ...

Ja, solange die gelieferte Struktur kompatibel ist.

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
und: kann die where-Klausel auch fehlen?

Ja. Theoretisch kann da alles stehen, was ein Resultset liefert.


D. Annies - Sa 09.01.10 18:56

aha, denn kann ich ja los-proggen,
melde mich wieder,
Detlef