postgreSQL ADO mit Delphi: "In dem Rowset sind keine Spalten definiert."

Hallo allerseits,

ich habe ein Problem in Delphi mit ADO Zugriff auf eine postgreSQL Datenbank.

Bei Verwendung von TADOQuery.ExecSQL wird der Befehl zwar ausgeführt, es erscheint jedoch immer die Fehlermeldung:
“In dem Rowset sind keine Spalten definiert.”

Der SQL Befehl ist ein einfacher UPDATE Befehl, z.B. UPDATE Table1 set a=1

Der ADO Connection String lautet:
PostgreSQL.1;Password=xxxxx;User ID=xxxxx;Data Source=localhost;Location=PHOENIX_POSTGRES;Extended Properties=""

Ich habe folgenden offiziellen Bug gefunden, der allerdings schon über 10 Jahre alt ist.
http://www.postgresql.org/message-id/20050825000205.D9129F0B7B@svr2.postgresql.org

Kennt jemand das Problem und hat eine Lösung gefunden oder hat jemand einen Tipp hierzu?
Vielen Dank.
Reiner

neueste versionen am Start? Erscheint was im Log von PG, und falls ja: was?

DIe DB Version ist 9.5, die letzte Alpha Version

In der Logdatei steht leider nichts, was Aufschluss über die Ursache geben könnte.
Hier der Auszug:

2016-05-23 14:16:41 CEST LOG: Dauer: 0.000 ms Parsen : update PHOENIX_LASTLAYOUTS set PHOENIX_CHANGEID=‘2016052351401893’,LAYOUTORDNO=‘2’ where md=‘Dokumente’ and register=‘Dokumente’ and ma=‘TT’

2016-05-23 14:16:41 CEST LOG: Dauer: 0.000 ms Binden : update PHOENIX_LASTLAYOUTS set PHOENIX_CHANGEID=‘2016052351401893’,LAYOUTORDNO=‘2’ where md=‘Dokumente’ and register=‘Dokumente’ and ma=‘TT’

2016-05-23 14:16:41 CEST LOG: Dauer: 0.000 ms Ausführen : update PHOENIX_LASTLAYOUTS set PHOENIX_CHANGEID=‘2016052351401893’,LAYOUTORDNO=‘2’ where md=‘Dokumente’ and register=‘Dokumente’ and ma=‘TT’

Man kann in Delphi das TADOQuery Objekt auf zwei verschiedene Arten nutzen: Abrufen von Datenmengen, so dass Datenzeilen zurückgegeben werden und Ausführen von SQL Befehlen, ohne dass Daten zurückgeliefert werden (Funktion TADOQuery.ExecSQL). Es ist eigentlich immer so, dass bei ExecSQL keine Spalten definiert sein müssen, bzw. keine Spalten zurückgeliefert werden. Daher wundere ich mich über die Fehlermeldung.

warum nutzt ihr die Alpha von 9.5? Wir haben schon 9.5.3 mittlerweile …

OK habe nochmal genau nachgeschaut, wir haben 9.5.2.

Der Fehler tritt übrigens auch mit TADOCommand Komponenten auf, die generell keine Ergebnismengen liefern, sondern nur SQL Befehle ausführen.

schau mal, ob da irgendwo ein sql-pass-thru - Mode einzustellen geht, damit nicht der Treiber schon im SQL rumgurkt, sondern dieser das schön brav an den PG-Server durchreicht, ohne seinen Senf dazuzugeben.

OK danke schon einmal für die schnellen Antworten.
Das mit dem sql-pass-thru werde ich mir noch anschauen.

Zwischenzeitlich habe ich etwas herausgefunden:

Mit diesem ADO Connection String erscheint der Fehler:
PostgreSQL.1;Password=xxxxx;User ID=xxxxx;Data Source=localhost;Location=PHOENIX_POSTGRES;Extended Properties=""
Das geht über den “PostgreSQL Ole DB Provider”.
Wie gesagt werden Befehle zwar ausgeführt, allerdings wird anschließend die o.g. Exception ausgelöst.
Die Datenbank ist übrigens eine ANSI Datenbank.

Wenn ich über “Microsoft Ole DB Provider for ODBC Drivers” gehe, dann erscheint die Fehlermeldung nicht.
Der ConnectionString lautet dann:
Provider=MSDASQL.1;Password=xxxxx;Persist Security Info=True;User ID=xxxxx;Data Source=PHOENIX_PG_ANSI;Initial Catalog=PHOENIX_POSTGRES
Dieser Provider hat jedoch andere Schwächen, z.B. werden TEXT Spalten gekürzt.