Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenübertragung zwischen 2 Tabellen (https://www.delphipraxis.net/27927-datenuebertragung-zwischen-2-tabellen.html)

Piro 17. Aug 2004 15:25


Datenübertragung zwischen 2 Tabellen
 
Moin bin neu auf diesem Gebiet.

Ich habe zwei Tabellen (Statistik.dbf und Spieltage.dbf). Beide Tabellen haben eine fortlaufende ID, die in den Tabellen gleich ist.

Jetzt möchte ich die Daten aus der Spieltage.dbf in die Statistik.dbf übertragen in Abhängigkeit der ID. So das ich nicht die ganze Tabellen durchsuchen muss ob die ID stimmt und dann den Datensatz übertragen kann.

Gibt es irgendeine Möglichkeit dieses Problem zu realisieren. Ihr würdet mir echt helfen.

Danke im voraus.

Sven

[edit=MrSpock]Titel gemäß Wunsch geändert. Mfg, MrSpock[/edit]

nailor 17. Aug 2004 18:37

Re: DB Newbie - Wer weiß Rat.
 
wenn ich dich recht verstanden habe, solte dir ein Tutorial zum Thema "Join"/"Joins" weiterhelfen

Matze 17. Aug 2004 18:54

Re: DB Newbie - Wer weiß Rat.
 
Ändere bitte deinen Titel!
"DB Newbie - Wer weiß Rat." sagt absolut nichts über dein problem aus. Wenn du Hilfe benötigst, wird dir am ehesten geholfen, wenn du einen aussagekräftigen Titel verwendest.

geesmith 17. Aug 2004 20:15

Re: DB Newbie - Wer weiß Rat.
 
Hi daywalker299
Leider ist dein Problem etwas ungenau beschrieben. Entweder du willst ganze Datensätze in die Statistik-Tabelle übertragen oder bestehende Datensätze der Statistik-Tabelle mit bestimmten Datenfelder der Spieltage-Tab ergänzen.

ungefähr ist nur grad ausm Kopf...je nachdem was du willst

Fall 1:
INSERT INTO Statistik(feld1,feld2,feld3...)
SELECT feld1,feld2,feld3 FROM Spieltage
WHERE EXISTS(SELECT 1 FROM Statistik
WHERE Spieltage.ID = Statistik.ID)

Fall 2:
UPDATE Statistik SET Statistik.feld1 = (Select Spieltage.feld1 FROM Spieltage
WHERE Spieltage.ID = Statistik.ID)

Piro 19. Aug 2004 09:00

Datenübertrag zwischen zwei Tabellen
 
@geesmith

Genauso in der Art sollen die Daten übertragen werden. Mir reicht aber das Updaten von ganzen Datensätzen. Das Problem was ich jetzt aber noch habe, ist, dass ich nicht mit SQL arbeite sondern das normal TDataSet benutze.

Wie funktioniert das dann? Wäre auch dankbar für ein Tutorial indem ich mir das Wissen aneignen kann.

Danke

geesmith 19. Aug 2004 10:27

Re: DB Newbie - Wer weiß Rat.
 
Ok, also das ist jetzt einfach so ausm Kopf ...so würd ich das wohl machen... hoffe es funkt auch.

Delphi-Quellcode:
  type TSpieltageRecord = record
    field1:String;
    field2:String;
    ..
    .
  end;
   

  var AExistsIDStatistik:Array of Integer;
      AExistsIDSpieltage:Array of Integer;
      SpieltageRecord:TSpieltageRecord
      Found:Boolean;
      i,i2:Integer;

  i := 0;

  // ID's der Tabelle Statistik auslesen
  Query.SQL.Text := 'SELECT ID FROM Statistik';
  Query.Active := True;
  SetLength(AExistsIDStatistik,Query.RecordCount);
  Query.First;

  While not Query.Eof do
  begin
    AExistsIDStatistik[i] := Query.FieldByName('ID').asInteger;
    Inc(i);
    Query.Next;
  end;

  Query.Active := False;
 
  // ID's der Tabelle Spieltage auslesen
  Query.SQL.Text := 'SELECT ID FROM Spieltage';
  Query.Active := True;
  SetLength(AExistsIDSpieltage,Query.RecordCount);
  Query.First;

  While not Query.Eof do
  begin
    AExistsIDSpieltage[i] := Query.FieldByName('ID').asInteger;
    Inc(i);
    Query.Next;
  end;

  Query.Active := False;

  // Prüfen ob die ID existiert
  For i := 0 to Length(AExistsIDSpieltage)-1 do
  begin
    Found := False;
    For i2 := 0 to Length(AExistsIDStatistik)-1 do
      If AExistsIDSpieltage[i] = AExistsIDStatistik[i2] then
        Found := True;

    If Found then
    begin
      // Aufruf der Daten
      Query.SQL.Text := 'SELECT * FROM Spieltage WHERE ID='+IntToStr(ID);
      Query.Active := True;
      SpieltageRecord.field1 := Query.FieldByName('field1').asString;
      SpieltageRecord.field2 := Query.FieldByName('field2').asString;
      Query.Active := False;

      // Update des Satzes
      Query.SQL.Text := 'UPDATE Statistik SET field1 = '+QuotedStr(SpieltageRecord.field1)+','+
                                              field2 = '+QuotedStr(SpieltageRecord.field2)+
                        ' WHERE ID = '+IntToStr(AExistsIDSpieltage[i]);
      Query.ExecSQL;
    end;
  end;

Wobei das dann schon ein viel gröserer Aufwand ist als einfach das einmalige SQL-Update Statement abzusetzen, zumal deine Absicht ja auch einmalig ist.

Piro 19. Aug 2004 14:18

Re: DB Newbie - Wer weiß Rat.
 
danke für deine Bemühungen. ich werde es gleich mal ausprobieren.

Kann man in der TTable Komponente auch mit SQL Anweisungen arbeiten?

SirThornberry 19. Aug 2004 14:23

Re: DB Newbie - Wer weiß Rat.
 
Also ich wieß nicht wievielen es noch so geht wie mir, aber ich lese deine Frage gar nicht erst durch weil ich anhand des Titels gar nicht weiß worum es geht. Inzwischen wurdest du schon aufgefordert den Titel zu ändern was du nicht gemacht hast, irgendwie widerstrebt es mir da auch jemanden weiterzuhelfen wenn sowas wie titel ändern nicht mal für nötig gehalten wird...

Einfach mal titel ändern und vielleicht hilft dir dann der ein oder andere mehr bei deinem problem.

Piro 19. Aug 2004 14:28

Re: DB Newbie - Wer weiß Rat.
 
Ich kann den Titel nicht mehr ändern sonst hätte ich es doch schon gemacht. Bzw kann mir ja einer sagen wie, denn bei kommt immer nur die Meldung, das es aus zeitlichen Gründen nicht mehr geht.

SirThornberry 19. Aug 2004 14:30

Re: DB Newbie - Wer weiß Rat.
 
Dann sag einfach einem admin bescheid uns teile ihm den neuen gewünschten titel mit


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz