Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Insert Optimierung

  Alt 3. Mär 2012, 15:48
Man kann es kaum glauben, aber Programmieren hat tatsächlich etwas mit Mathematik zu tun.
Und wie schonmal erwähnt, fehlt noch der Rest.

Delphi-Quellcode:
procedure TForm1.InputDataset3Click(Sender: TObject);
const
  Anzahl = 30;
var
  StartZeit, StopZeit: TDateTime;
  i, i2: Integer;
begin
  StartZeit := Now;
  Screen.Cursor := crHourGlass;
  ZConnection.Database := 'c:\msql\firedb.fdb';

  ZQuery1.SQL.Clear;
  for i2 := 0 to Anzahl - 1 do
    ZQuery1.SQL.Add(Format('INSERT INTO dat12006 (Begriff, Frage) VALUES (:v%d, :v%d);', [i2 * 2, i2 * 2 + 1]));

  for i := 0 to SG1.RowCount div Anzahl - 1 do begin
    for i2 := 0 to Anzahl - 1 do begin
      ZQuery1.Params[i2 * 2 + 0].Value := SG1.Cells[0, i * Anzahl + i2];
      ZQuery1.Params[i2 * 2 + 1].Value := SG1.Cells[1, i * Anzahl + i2];
    end;
    ZQuery1.ExecSQL;
  end;

  //ZQuery1.SQL.Text := 'INSERT INTO dat12006 (Begriff, Frage) VALUES (:v0, :v1);';
  //for i := SG1.RowCount div Anzahl * Anzahl to SG1.RowCount - 1 do begin
  // ZQuery1.Params[0].Value := SG1.Cells[0, i];
  // ZQuery1.Params[1].Value := SG1.Cells[1, i];
  // ZQuery1.ExecSQL;
  //end;

  if SG1.RowCount mod Anzahl > 0 then begin
    ZQuery1.SQL.Clear;
    for i2 := 0 to SG1.RowCount mod Anzahl - 1 do
      ZQuery1.SQL.Add(Format('INSERT INTO dat12006 (Begriff, Frage) VALUES (:v%d, :v%d);', [i2 * 2, i2 * 2 + 1]));

    i := SG1.RowCount div Anzahl;
    for i2 := 0 to SG1.RowCount mod Anzahl - 1 do begin
      ZQuery1.Params[i2 * 2 + 0].Value := SG1.Cells[0, i * Anzahl + i2];
      ZQuery1.Params[i2 * 2 + 1].Value := SG1.Cells[1, i * Anzahl + i2];
    end;
    ZQuery1.ExecSQL;
  end;

  Screen.Cursor := crDefault;
  StopZeit := Now;
  Panel1.Caption :='SuchZeit : ' + FormatDateTime('nn:ss:zzz', StopZeit - StartZeit) ;
end;
PS: Mit einer ordentlichen Einrückung braucht man kaum noch kommentare, um die Zusammenhänge zu erkennen. (wie z.B. wozu das END gehört)
$2B or not $2B

Geändert von himitsu ( 3. Mär 2012 um 15:54 Uhr)
  Mit Zitat antworten Zitat