Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Einzelne Daten aus Firebird lesen

  Alt 25. Sep 2007, 15:29
Datenbank: Firebird • Version: 2 • Zugriff über: IBX
Hallo,
wie in diesem Thread beschrieben greife ich über eine
ins Excel importierte DLL auf eine Firebird Datenbank zu. Es funktioniert auch einwandfrei. Ich schreibe eine
Formel in die Excelzelle und die Funktion holt den Wert aus der Datenbank. D.h. aber auch, dass für jede einzelne
Zelle ein Wert aus der Datenbank geholt wird. Dafür wird z.Z. für jeden Wert der Abfrageprozess durchlaufen.
- Transaktion starten
- Abfrageparameter setzen
- Dataset öffnen
- Wert holen
- Dataset schließen
- Transaktion schließen

Delphi-Quellcode:
function TPMValue1(Year, Partner, Entity, Posnr, Bwa : PChar) : Double; stdcall;
begin
  Result:=0;
  With DModule do
    begin
      If Not Transaction.Active then
        Transaction.StartTransaction;
      Dataset.SelectSQL.Text:=sqlTpmValue1;
      Dataset.ParamByName('Jahr').AsString:=String(Year);
      Dataset.ParamByName('Partner').AsString:=String(Partner);
      Dataset.ParamByName('Entity').AsString:=String(Entity);
      Dataset.ParamByName('PosNr').AsString:=String(PosNr);
      Dataset.ParamByName('Bwa').AsString:=String(Bwa);
    Try
      Dataset.Open;
      Result:=Dataset.FieldByName('DEZ').AsFloat;
    Finally
      Dataset.Close;
      Transaction.Commit;
      end;
    end; // With DModule do
end;
Das dauert bei 1000 und mehr Werten ziemlich lange.
Weiss jemand wie ich das Beschleunigen kann.

Hinweis: Alle Werte in eine Abfrage packen und die Excelzellen über ein Routine füllen habe ich schon. Geht ziemlich schnell.
Auch bei über 1000 Werten. Ich möchte aber explizit den Weg über die Excelzellenformel gehen.
I come from outer space to save the human race
  Mit Zitat antworten Zitat