Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
397 Beiträge
Delphi 10.4 Sydney
|
Insert into
1. Mai 2020, 08:08
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBO
Hallo ich habe folgenden Code:
Delphi-Quellcode:
while not (PatblattQry.EoF = True) do
begin
if (PatblattQry.FieldByName('TYP').AsString <> 'Z') then
begin
InsRechnungsPositionenQry.ParamByName('RECHNUNGNR').AsInteger := RechnungNr;
InsRechnungsPositionenQry.ParamByName('PATIENTENNUMMER').AsInteger := PatientQry.FieldByName('PATIENTENNUMMER').AsInteger;
InsRechnungsPositionenQry.ParamByName('BEHANDLUNGSDATUM').AsString := PatblattQry.FieldByName('BEHANDLUNGSDATUM').AsString;
if (MitarbeiterQry.Locate('ANREDE_NAME',PatblattQry.FieldByName('BEHANDLER').AsString,[]) = True) then begin
InsRechnungsPositionenQry.ParamByName('MITARBEITERNUMMER').AsString := MitarbeiterQry.FieldByName('MITARBEITERNUMMER').AsString;
InsRechnungsPositionenQry.ParamByName('BEHANDLER').AsString := MitarbeiterQry.FieldByName('ANREDE_NAME').AsString;
end;
InsRechnungsPositionenQry.ParamByName('GEBUEHNR').Value := PatblattQry.FieldByName('GEBUEHNR').Value;
InsRechnungsPositionenQry.ParamByName('CODENR').Value := PatblattQry.FieldByName('CODENR').Value;
InsRechnungsPositionenQry.ParamByName('SUCHWORT').Value := PatblattQry.FieldByName('SUCHWORT').Value;
InsRechnungsPositionenQry.ParamByName('TEXT').Value := PatblattQry.FieldByName('TEXT').Value;
InsRechnungsPositionenQry.ParamByName('GOAENR').Value := PatblattQry.FieldByName('GOAENR').Value;
InsRechnungsPositionenQry.ParamByName('MENGE').Value := PatblattQry.FieldByName('MENGE').Value;
InsRechnungsPositionenQry.ParamByName('TYP').Value := PatblattQry.FieldByName('TYP').Value;
InsRechnungsPositionenQry.ParamByName('FAKTOR').Value := PatblattQry.FieldByName('FAKTOR').Value;
InsRechnungsPositionenQry.ParamByName('EINZELPREIS').Value := PatblattQry.FieldByName('EINZELPREIS').Value;
if PatblattQry.FieldByName('STEUERCODE').Value = Null then
InsRechnungspositionenQry.ParamByName('STEUERCODE').Value := 0
else
InsRechnungsPositionenQry.ParamByName('STEUERCODE').Value := PatblattQry.FieldByName('STEUERCODE').Value;
InsRechnungsPositionenQry.ParamByName('STEUERBETRAG').Value := PatblattQry.FieldByName('STEUERBETRAG').Value;
InsRechnungsPositionenQry.ParamByName('STEUERSATZ').Value := PatblattQry.FieldByName('STEUERSATZ').Value;
InsRechnungsPositionenQry.ParamByName('GESAMTBETRAG').Value := PatblattQry.FieldByName('GESAMTBETRAG').Value;
InsRechnungsPositionenQry.ParamByName('KATEGORIE').Value := PatblattQry.FieldByName('KATEGORIE').Value;
InsRechnungsPositionenQry.ParamByName('SPLITTING').Value := PatblattQry.FieldByName('SPLITTING').Value;
InsRechnungsPositionenQry.ParamByName('MEDIKAMENT').Value := PatblattQry.FieldByName('MEDIKAMENT').Value;
InsRechnungsPositionenQry.ParamByName('GEBUEHRENNR').Value := PatblattQry.FieldByName('GEBUEHRENNR').Value;
InsRechnungsPositionenQry.ParamByName('TARIF').Value := PatblattQry.FieldByName('TARIF').Value;
if (PatblattQry.FieldByName('TYP').AsString = 'M') then
InsRechnungsPositionenQry.ParamByName('Medikament').AsString := 'J'
else
InsRechnungsPositionenQry.ParamByName('Medikament').AsString := 'N';
InsRechnungsPositionenQry.ParamByName('Anlage').asDatetime := Date;
InsRechnungsPositionenQry.ParamByName('AnlageBenutzer').asString := Constants.User.UserName;
----> dauert 43 Sekunden InsRechnungsPositionenQry.ExecSQL;
end;
PatblattQry.Next;
end;
{$ENDREGION}
Dazu folgende SQL Anweisung
Delphi-Quellcode:
Insert into tbl_Rechnungspositionen(
RECHNUNGNR, PATIENTENNUMMER, BEHANDLUNGSDATUM, MITARBEITERNUMMER, BEHANDLER, GEBUEHNR, CODENR,
SUCHWORT, TEXT, GOAENR, MENGE, FAKTOR, EINZELPREIS, STEUERCODE, STEUERBETRAG, STEUERSATZ, GESAMTBETRAG,
KATEGORIE, SPLITTING, MEDIKAMENT, GEBUEHRENNR, TYP, Anlage, AnlageBenutzer, GEHOERTZU, TARIF)
Values(
:RECHNUNGNR, :PATIENTENNUMMER,:BEHANDLUNGSDATUM, :MITARBEITERNUMMER, :BEHANDLER, :GEBUEHNR, :CODENR,
:SUCHWORT, :TEXT, :GOAENR, :MENGE, :FAKTOR, :EINZELPREIS, :STEUERCODE, :STEUERBETRAG, :STEUERSATZ, :GESAMTBETRAG,
:KATEGORIE, :SPLITTING, :MEDIKAMENT, :GEBUEHRENNR, :TYP, :Anlage, :AnlageBenutzer, :GEHOERTZU, :TARIF)
Die Anweisung InsRechnungsPositionenQry.ExecSQL; dauert 43 Sekunden. Viel zu lange.
In der Tabelle sind etwas über 520000 Datensätze.
Hat jemand eine Idee warum das so lange dauert.
Walter Landwehr Mfg
Walter
|