Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5.3 (https://www.delphipraxis.net/65594-delphi-6-probleme-wechsel-von-firebird-1-0x-nach-1-5-3-a.html)

mbulm 18. Mär 2006 14:22

Datenbank: Firebird • Version: 1.5.3 • Zugriff über: IBX-Komponenten von Delphi 6

Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5.3
 
Ich habe eine Anwendung laufen unter Firebird 1.0X mit Zugriff über die IBX-Komponenten von Delphi 6! Habe in den letzten Tagen nun testweise einen neuen Firebird Server 1.5.3 eingerichtet und die Datenbanken entsprechend übernommen. Wenn ich jetzt aus meiner Anwendung auf die neue Datenbank zugreife, erhalte ich immer, wenn im SQL-Befehl "ORDER BY ..." enthalten ist, folgenden Fehler:

Dynamic SQL Error
SQL error code = -104
Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause)

Wer hat eine Idee, woran das liegt und was ich jetzt tun kann? Vom IBExpert aus funktionieren die SQL-Statements auch auf der 1.5.3-Datenbank ohne Probleme!

Vielen Dank für Eure Hilfe!

Gruss mbulm

mkinzler 18. Mär 2006 14:25

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Der Fehler sagt ja aus das du bei einer gruppierten Abfrage ein Feld in der Feldliste abfragst welchse sichweder in der GROUP BY noch der WHERE-Clause befindet. Post e mal die Abfrage/Datenbankbeschr.

mbulm 18. Mär 2006 15:00

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Danke erstmal für die schnelle Reaktion!

Das Ganze passiert bereits bei sehr einfachen SQL-Befehlen:

select * from abs91 order by intnr

ergibt den oben beschriebenen Fehler

select * from abs91

geht ohne Fehler!

Wie gesagt alle SQL-Befehle, die aus meiner Anwendung heraus Fehler verursachen, laufen fehlerfrei im IBExpert! Ich denke, das Ganze hängt an einem Problem zwischen Firebird 1.5.3 und den IBX-Komponenten von Delphi 6, also nicht unbedingt an den SQL-Statements selbst! Eventuell hängt es auch mit der neuen GDS32.DLL zusammen, die mit der neuen Firebird-Datenbank installiert wurde!

gruss mbulm

mkinzler 18. Mär 2006 15:10

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Ich she gerade du hast ja gar kein GROUP BY sondern nur eine Sortierung. Komisch! Post mal die Tabellenbeschreibung.

mbulm 22. Mär 2006 09:59

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Ich muss mich korrigieren!

Das Ganze passiert bei folgendem SQL-Befehl:

select count(*) from abs91 order by intnr
(unter firebird 1.0X gab es hier keine probleme)

ergibt den oben beschriebenen Fehler

select * from abs91 order by intnr

geht ohne Fehler!

gruss mbulm

dfried 22. Mär 2006 10:03

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Zitat:

Zitat von mbulm
Ich muss mich korrigieren!

Das Ganze passiert bei folgendem SQL-Befehl:

select count(*) from abs91 order by intnr
(unter firebird 1.0X gab es hier keine probleme)

Naja, das "Order By" in dem Select macht auch nicht wirklich sinn, da das Ergebnis immer nur eine Zeile ist...

mkinzler 22. Mär 2006 10:18

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Nimm mal das ID Feld in die Count()-Funktion:

SQL-Code:
select count(ID) from abs91;

dfried 22. Mär 2006 10:20

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Zitat:

Zitat von mkinzler
Nimm mal das ID Feld in die Count()-Funktion:

SQL-Code:
select count(ID) from abs91;

Wenn er den "Order by" weglässt (wie in deinem Beispiel), dann funktionierts auch mit dem Count(*)...

daddy 22. Mär 2006 10:37

Re: Delphi 6 - Probleme - Wechsel von Firebird 1.0X nach 1.5
 
Die Abfrage macht eigentlich nur Sinn in einer der beiden Varianten

SQL-Code:
select IntNr, count(*) from abs91 group by IntNr order by IntNr
oder

SQL-Code:
select count(*) from abs91
Im ersten Fall erhält man für jede IntNr die Zahl der zugehörigen Datensätze aufsteigend sortiert nach IntNr. Im zweiten Fall erhält man die (eine!) Zahl der Datensätze in der Tabelle. Dann macht eine Sortierung natürlich keinen Sinn.


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

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