Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetreten (https://www.delphipraxis.net/192974-%5Bfmx-android-unidac%5D-exception-der-klasse-efailover-mit-der-meldung-aufgetreten.html)

Devil1925 7. Jun 2017 13:21

Datenbank: MSSQL • Version: 2012 • Zugriff über: UNIDAC

[FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetreten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, ich erhalte oben genannten Fehler beim Versuch eine Query zu öffnen. Das SQL in der Query sieht folgendermaßen aus:

SQL-Code:
Select Count(*) as Anz from (Select Nr, Kopf_Idx, Pos, Artikel_Nr_Str, Bezeichnung1, Bezeichnung2, Anzahl, Menge, GewPos, VK, GVK, Changed_Last, Creation_Date from
Bele_Sub where (Kopf_IDX in (Select IDX from Beleg where (Typ = 'U' and Datum > DATEADD(month, -6, GETDATE()) and
(Kunden_Nr in (Select Kunden_Nr from Kundenst where 1=1 AND Sortierfeld like :Sortierfeld +'%' AND :Name = :Name AND :PLZVON = :PLZVON AND :PLZBIS = :PLZBIS AND :Ort = :Ort
AND (isnull(inaktiv, 0) = 0) AND (isnull(Sperrkennzeichen,'N') = 'N')) or Kunden_Nr2 in (Select Kunden_Nr from Kundenst where 1=1 AND Sortierfeld like :Sortierfeld +'%' AND :Name = :Name AND :PLZVON = :PLZVON
AND :PLZBIS = :PLZBIS AND :Ort = :Ort AND (isnull(inaktiv, 0) = 0) AND (isnull(Sperrkennzeichen,'N') = 'N'))))) ) or
(Kopf_IDX in (Select IDX from Beleg where (Typ = 'U' and Datum > DATEADD(month, -6, GETDATE()) and (Kunden_Nr in ('') or Kunden_Nr2 in ('')))))) T
die Parameter erstetze ich mit z.B.
Delphi-Quellcode:
  Query.ParamByName('Sortierfeld').AsString := 'Test';
. Wenn ich die Query nun mit Query.Open öffnen will, so erhalte ich beim Debuggen die Meldung
Code:
Es ist eine Exception der Klasse EFailOver mit der Meldung '' aufgetreten.
. Wenn ich nun auf Fortsetzen klicke erscheint diese Meldung erneut. Compiliere ich die App im Release, so wird diese Meldung nicht angezeigt und die App hängt in einer Endlosschleife. (Gerade Testweise mal laufen gelassen, und es geht seit ca 20 minuten so.

Das SQL kommt auch beim SQL Server an. Hier habe ich mal den SQL Server Profiler angeworfen.

http://www.delphipraxis.net/attachme...1&d=1496837847
Weiss hier jemand Rat?

[EDIT]
eine Weitere Erkenntnis ist, dass dieser Fehler nur auf dieser Einen Datenbank auftritt. ich habe das jetzt noch auf einer 2008 MSSQL Datenbank und einer 2014 MSSQL Datenbank ausprobiert. Hier funktioniert alles Super. Auch wird diese Query schon vorher auf der Datenbank mit anderen Parametern und anderem SQL geöffnet und geschlossen.
[/EDIT]

haentschman 7. Jun 2017 14:07

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Hallöle...:P
Kann das sein das das SQL nicht komplett in diesen Beitrag kopiert wurde?

Devil1925 7. Jun 2017 14:24

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Wie kommst du darauf? (ich habe nur vergessen zwei doppelte hochkommas zu entfernen, die habe ich jetzt gerade noch korrigiert) das ist das SQL

haentschman 7. Jun 2017 14:32

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Zitat:

GETDATE()) and (Kunden_Nr in ('') or Kunden_Nr2 in ('')))))) T
T ... und dann was? :)

Devil1925 7. Jun 2017 14:41

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
man braucht bei MSSQL einen Alias für ein Subselect wenn man aus diesem Selektiert.

Nehmen wir mal 2 simple Select-Statements:

SQL-Code:
 Select * from (Select Kunden_Nr, Name from Kundenst)

SQL-Code:
 Select * from (Select Kunden_Nr, Name from Kundenst) T

in diesem Fall wird das erste SQL Statement nicht funktionieren, da hier kein Alias für
SQL-Code:
 (Select Kunden_Nr, Name from Kundenst)
vergeben wurde.
Das zweite SQL hingegen funktioniert mit diesem Alias. Es kann natürlich auch als Alias "A" oder "B" oder auch "Hustensaft" vergeben werden.

haentschman 7. Jun 2017 16:50

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
:P ok.

DeddyH 8. Jun 2017 07:32

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Zitat:

SQL-Code:
AND :Name = :Name AND :PLZVON = :PLZVON ...

Du vergleichst Parameterwert mit Parameterwert?

Devil1925 8. Jun 2017 07:37

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Das kommt daher, dass ich die Parameter alle in dem SQL Brauche wegen der befüllung. und da die manchmal irrelevant sind habe ich die einfach gleich gesetzt. Hierdurch sollte doch eigentlich das gleiche passieren wie " 1=1 " oder?

Ausserdem kann ich mir nicht vorstellen, dass das daran liegt, da ich die Prozedur, in der der Fehler auftritt vorher schon ca 20 mal durchlaufen habe. und das ganze nur bei diesem SQL auftritt. Bei den anderen werden ebenfalls Parameter mit Parametern verglichen.

DeddyH 8. Jun 2017 07:40

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Ich bin mir nicht sicher, ob die DB mit mehreren gleichnamigen Parametern klarkommt. Welchen würdest Du denn z.B. bei ParamByName('Name') erwarten, den ersten oder den zweiten?

Devil1925 8. Jun 2017 07:42

AW: [FMX ANDROID UNIDAC] Exception der Klasse EFailOver mit der Meldung '' aufgetrete
 
Also bei der DB kommt das mit geänderten Parameternamen an (z.B.
SQL-Code:
 and :Name = :Name_1 and :PLZVon = :PLZVon_2
)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.
Seite 1 von 2  1 2      

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