Einzelnen Beitrag anzeigen

geesmith

Registriert seit: 17. Jan 2003
Ort: Frauenfeld
32 Beiträge
 
Delphi XE5 Architect
 
#6

Re: DB Newbie - Wer weiß Rat.

  Alt 19. Aug 2004, 10:27
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.
  Mit Zitat antworten Zitat