Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Exceptionfehlermeldung (https://www.delphipraxis.net/158140-exceptionfehlermeldung.html)

fly_singapore 7. Feb 2011 13:03

Datenbank: ACCESS • Version: 2003 • Zugriff über: ADOConnection

Exceptionfehlermeldung
 
Hallo Allerseits.

Ich habe hier eine Fehlermeldung, die mir der Debugger gab:

Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung


ich habe hier zwei Funktionen geschrieben:

Delphi-Quellcode:
Function calc_AG(AG_Wert : string; cLSZ : String; cRegion : String; oQuery1 : TADOQUERY) : Integer    ;

und

Delphi-Quellcode:
function new_calc(cLSZ: string; cRegion : string; oQuery: TADOQuery) : TRGW    ;


ich habe unter andere ein Object Variable vom Typ TADOQuery mit als Funktionsargument übergeben. Ich vermute (bin bin aber nicht sicher), das dies eine Fehlerquelle sein könnte.. Könnte mir einer von Euch helfen.... Danke schön !!!!!

Peter

shmia 7. Feb 2011 14:23

AW: Exceptionfehlermeldung
 
Mehrfache Recordsets ergeben sich dann, wenn man mehrere SELECT-Anweisungen im Property [TADOQuery].SQL ablegt.
Hier ein Beispiel für problematischen Code:
Delphi-Quellcode:
procedure TForm1.MachWas;
begin
  ...
  AdoQuery1.Close;
  AdoQuery1.SQL.Add('SELECT * FROM Artikel');
  // Problem: wenn diese Procedure mehrfach aufgerufen wird,
  // dann gibt es mehrere SELECT-Anweisungen
  AdoQuery1.Open;
  ...
end;
Der MS SQL Server kann mehrere Recordsets liefern; MS Access kann dies nicht.

fly_singapore 7. Feb 2011 14:45

AW: Exceptionfehlermeldung
 
Erst einmal vielen Dank für den Hinweis. Es scheint also kein eigentliches Problem des Delphi-Codes zu sein, mehr von Access. Ich habe versucht, nach absetzen/umsetzen des ersten SQL-Statements die Query wieder per

Delphi-Quellcode:

oQuery.close;
zu schliessen, das führte allerdings nicht zum Erfolg.

DeddyH 7. Feb 2011 14:49

AW: Exceptionfehlermeldung
 
Es ging doch nicht um das Close.
Delphi-Quellcode:
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(<Befehl>);

//oder alternativ
ADOQuery.SQL.Text := <Befehl>;

fly_singapore 7. Feb 2011 14:59

AW: Exceptionfehlermeldung
 
Nein. ich habe eben das .CLOSE genutzt um sicherzustellen, dass nicht mehrere SELECT-Anweisungen sich im Recordset befinden, so habe ich das zumindest verstanden..

Delphi-Quellcode:
cSQL := 'UPDATE rohdaten SET exception_flag = null WHERE exception_flag = ' + quotedStr('XX') + ' ' ;


  oQuery1.SQL.Clear;
  oQuery1.SQL.text := cSQL ;
  oquery1.Active := true;
Wie oben beschrieben, habe ich es ablaufen lassen, bis der Debugger schrie !!!

DeddyH 7. Feb 2011 15:08

AW: Exceptionfehlermeldung
 
Wieso weist Du das SQL nicht einmalig parametrisiert zu, schließt die Abfrage, setzt den Parameterwert und rufst dann ExecSQL auf?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz