Hallo,
du erzeugst die
Query ja jedes mal neu auf dem Server.
Probiere doch mal eine prepared
Query aus.
Beim Start ds Programmes machst du dein
Delphi-Quellcode:
dmFCalib.dbquQuery.SQL.Text := 'BEGIN TRAN';
dmFCalib.dbquQuery.SQL.Add('INSERT INTO [Cal_Force] ');
dmFCalib.dbquQuery.SQL.Add('([CalReportID], [FAct], [FTarget], [Art], [Temperatur], [Humidity], [ServOrt], [ErstUserID], [ErstDat])');
dmFCalib.dbquQuery.SQL.Add('VALUES');
dmFCalib.dbquQuery.SQL.Add('(:pCalReportID, :pFAct, :pFTarget, :pArt, :pTemperatur, :pHumidity, :pServOrt, :pErstUserID, GETDATE())');
dmFCalib.dbquQuery.SQL.Add('COMMIT TRAN');
zusätzlich kommt dahinter ein
dmFCalib.dbquQuery.Prepared;
Und beim Schreiben der Daten dann nur noch die Parameter füllen
Delphi-Quellcode:
// set query parameters
dmFCalib.dbquQuery.ParamByName('
pCalReportID').Value := dmFCalib.dbquCalReport.FieldByName('
ID').AsInteger;
dmFCalib.dbquQuery.ParamByName('
pFAct').Value := rForce;
dmFCalib.dbquQuery.ParamByName('
pFTarget').Value := rFtarget;
dmFCalib.dbquQuery.ParamByName('
pArt').Value := cArt;
dmFCalib.dbquQuery.ParamByName('
pTemperatur').Value := uHilfs1.Valreal(edTemperatur.Text);
dmFCalib.dbquQuery.ParamByName('
pHumidity').Value := uHilfs1.ValReal(edHumidity.Text);
dmFCalib.dbquQuery.ParamByName('
pServOrt').Value := cServOrt;
dmFCalib.dbquQuery.ParamByName('
pErstUserID').Value := intUser.User.ID;
dmFCalib.dbquQuery.ExecSQL;
Das reduziert die Netzlast.
Schneller wäre dann noch eine
stored procedure oder
bulk insert.
Die
Query dient damit ausschließlich diesem Insert.
Hast du mehr davon -> mehrere Queries benutzen.
Soweit ich nicht erinnere, cacht der
sql-server aber parametrisierte Queries selbst,
aber einen Versuch ist es Wert.
Heiko