Einzelnen Beitrag anzeigen

alphaville

Registriert seit: 6. Dez 2006
Ort: Wurmlingen
3 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Datensatz von Datenbank zu Datenbank kopieren / updaten

  Alt 1. Jul 2008, 15:29
Hi Stefan,

ich hab das ganze auch schon gebraucht. Setze allerdings MyDac ein...

Delphi-Quellcode:
procedure TfrmBetriebstaettenInstallation.cmdFillClick(Sender: TObject);
var
  I,J,K : Integer;
  arrTab: Array[1..100] of string;

begin
    arrTab[1] := 'sd_abteilung';
    arrTab[2] := 'sd_bild';
    arrTab[3] := 'sd_mitarbeiter';
    arrTab[4] := 'sd_werk';
    arrTab[5] := 'pd_abmahnung';
    arrTab[6] := 'sd_plz';
    arrTab[7] := 'sd_schulabschluss';

    cmdFill.Enabled := False;
    cmdSync.Enabled := False;

    for K := 1 to 7 do begin
      if (K=3) then continue;
      
      ShowSqlString('Übertrage Tabelle '+arrTab[K]+'...'); // Hinweis
      qrwZentrale.SQL.Clear; // SQL-Befehl leeren
      // =====================================================================
      // Werkspezifische Daten
      // =====================================================================
      if (K<6) then begin
        qrwZentrale.SQL.Add('SELECT '+arrTab[K]+'.*');
        qrwZentrale.SQL.Add('FROM `'+arrTab[K]+'`,`cfg_transfer`');
        qrwZentrale.SQL.Add('WHERE LAND_ID='''+tblMySql['LAND_ID']+'''');
        qrwZentrale.SQL.Add(' AND `'+arrTab[K]+'`.WERK_ID=cfg_transfer.WERK_ID');
        qrwZentrale.SQL.Add(' AND cfg_transfer.SERVER_ID='''+tblMySql['SERVER_ID']+''';');
      end else begin
        qrwZentrale.SQL.Add('SELECT * FROM `'+arrTab[K]+'` WHERE LAND_ID='''+tblMySql['LAND_ID']+''';');
      end;
      ShowSql(qrwZentrale.SQL); // SQL-Befehl anzeigen
      qrwZentrale.Open; // SQL-Befehl ausführen

      for I := 0 to qrwZentrale.RecordCount - 1 do begin
        qrwExtern.SQL.Clear; // SQL-Befehl leeren
        qrwExtern.SQL.Add('REPLACE INTO `'+arrTab[K]+'` VALUES (');
        for J := 0 to qrwZentrale.FieldCount - 1 do begin
          if (J <> qrwZentrale.FieldCount - 1) then begin
            if (qrwZentrale.Fields[J].Value=NULL) then begin
              qrwExtern.SQL.Add('NULL,');
            end else begin
              if (qrwZentrale.Fields[J].DataType=ftDate) then begin
                qrwExtern.SQL.Add(''''+Copy(qrwZentrale.Fields[J].Value,7,4)+'-'+Copy(qrwZentrale.Fields[J].Value,4,2)+'-'+Copy(qrwZentrale.Fields[J].Value,1,2) +''',');
              end else begin
                qrwExtern.SQL.Add(''''+qrwZentrale.Fields[J].AsString +''',');
              end;
            end;
          end else begin
            if (qrwZentrale.Fields[J].Value=NULL) then begin
              qrwExtern.SQL.Add('NULL');
            end else begin
              if (qrwZentrale.Fields[J].DataType=ftDate) then begin
                qrwExtern.SQL.Add(''''+Copy(qrwZentrale.Fields[J].Value,7,4)+'-'+Copy(qrwZentrale.Fields[J].Value,4,2)+'-'+Copy(qrwZentrale.Fields[J].Value,1,2) +'''');
              end else begin
                qrwExtern.SQL.Add(''''+qrwZentrale.Fields[J].AsString +'''');
              end;
            end;
          end;
        end;
        qrwExtern.SQL.Add(');');
        ShowSql(qrwExtern.SQL); // SQL-Befehl anzeigen
        qrwExtern.Execute;
        qrwZentrale.Next;
      end;
    end;
    Send_SuchTabellen; // Alle Suchtabellen frisch übertragen
    Send_Stammdaten;
    dbExtern.Disconnect; // Verbindung trennen
    ShowMessage('Ready...');
end;
Vielleicht hilft Dir der Codeausschnitt weiter...

Gruß Uwe
  Mit Zitat antworten Zitat