Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Fehler bei MSSQL (https://www.delphipraxis.net/39830-sql-fehler-bei-mssql.html)

alcaeus 8. Feb 2005 08:13

Datenbank: MSSQL • Zugriff über: .

SQL-Fehler bei MSSQL
 
Hallo allerseits,

ich bekomme bei folgender Abfrage immer den Fehler "Incorrect Syntax near 'A'", und zwar in Zeile 2, egal ob ich das Statement in meinem Programm oder im DB-Explorer aufrufe.

SQL-Code:
SELECT N.TEXT,A.AUTHORIZEDGROUPS FROM PAYMENTTERMS A,NLSUSER N WHERE A.MANDANTID=0
AND ((A.AUTHORIZEDGROUPS IS NULL) OR (0=0) OR (';0;' IN A.AUTHORIZEDGROUPS))
AND N.LANGUAGEID=0
AND N.TOPICID=18
AND N.FIELDID=A.NLSFIELDID
Fragt nicht, was das 0=0 da soll, das ist einfach nur so weil das Statement halt vom Programm so zusammengestellt wird, manchmal steht da auch 1=0 oder so...

Das Statement funktioniert perfekt auf Oracle, perfekt auf SQLBase, und überhaupt nicht auf MSSQL.
Ich finde da einfach keinen Fehler :roll:

Greetz
alcaeus

Sharky 8. Feb 2005 08:20

Re: SQL-Fehler bei MSSQL
 
Hai alcaeus,

hast Du einmal versucht deine ganzen WHERE-Bedingungen in Klammern zu setzen

SQL-Code:
SELECT N.TEXT,A.AUTHORIZEDGROUPS FROM PAYMENTTERMS A,NLSUSER N
WHERE (A.MANDANTID=0)
AND ((A.AUTHORIZEDGROUPS IS NULL) OR (0=0) OR (';0;' IN A.AUTHORIZEDGROUPS))
AND (N.LANGUAGEID=0)
AND (N.TOPICID=18)
AND (N.FIELDID=A.NLSFIELDID)

alcaeus 8. Feb 2005 08:22

Re: SQL-Fehler bei MSSQL
 
Hallo Sharky,

ja, hab ich schon, leider hat das nichts gebracht. Der Fehler kommt immer noch.

Greetz
alcaeus

Leuselator 8. Feb 2005 08:23

Re: SQL-Fehler bei MSSQL
 
Zeile 2 kannst Du auch weglassen, da der Ausdruck aufgrund von "(0=0) immer True zurückliefert...
Gruß

alcaeus 8. Feb 2005 08:24

Re: SQL-Fehler bei MSSQL
 
Zitat:

Zitat von alcaeus
Fragt nicht, was das 0=0 da soll, das ist einfach nur so weil das Statement halt vom Programm so zusammengestellt wird, manchmal steht da auch 1=0 oder so...

Nein, das ist eine Bedingung die vom Programm aus gefüllt wird.

Greetz
alcaeus

Sharky 8. Feb 2005 08:25

Re: SQL-Fehler bei MSSQL
 
Hmmm.... ausser das Du einem Feld den Namen Text gegeben hast fällt mir so nichts auf :gruebel:
Hast Du mal den SQL-Code zum erzeugen der beiden Tabellen?

Leuselator 8. Feb 2005 08:29

Re: SQL-Fehler bei MSSQL
 
Hatte nicht zu ende gelesen (0=0)
Versuch mal die Feld- und Tabellenbezeichnungen in eckige Klammern zu setzen "[" und "]"

alcaeus 8. Feb 2005 08:38

Re: SQL-Fehler bei MSSQL
 
Hallo allerseits,

ich habe herausgefunden dass dieses Statement den Fehler hervorruft:
SQL-Code:
(';0;' IN A.AUTHORIZEDGROUPS)
Geht das bei MSSQL nicht?

Greetz
alcaeus

Leuselator 8. Feb 2005 08:46

Re: SQL-Fehler bei MSSQL
 
versuchs mal mit:
SQL-Code:
(PATINDEX('%;0;%',A.AUTHORIZEDGROUPS) > 0)

alcaeus 8. Feb 2005 14:14

Re: SQL-Fehler bei MSSQL
 
Hallo allerseits,

sorry fuer die Verspaetung, aber die HDSL-Linie im Betrieb war down :wall:
In gibt es bei MSSQL nicht, man muss den Umweg ueber CharIndex nehmen.
Danke fuer eure Hilfe.

Greetz
alcaeus

Sharky 9. Feb 2005 07:10

Re: SQL-Fehler bei MSSQL
 
Zitat:

Zitat von alcaeus
...In gibt es bei MSSQL nicht,...

Hai alcaeus,

da sagt meine MS-SQL Onlinehilfe aber etwas anderes ;-)

SQL Server Onlinehilfe

test_expression [NOT] IN
(
subquery
| expression [ ,...n ]
-------------------------------------

expression [,...n]

Eine Liste mit Ausdrücken, die auf Übereinstimmungen geprüft werden sollen. Alle Ausdrücke müssen denselben Datentyp besitzen wie test_expression.

SQL-Code:
SELECT au_lname, state
FROM authors
WHERE state IN ('CA', 'IN', 'MD')

alcaeus 9. Feb 2005 07:22

Re: SQL-Fehler bei MSSQL
 
Hallo Sharky,

das ist aber dann genau umgekehrt wie bei Oracle, jedenfalls wenn ich das Statement richtig verstanden habe. Ich will ja prüfen, ob eine Zeichenfolge in der Spalte vorkommt. Mit deinem Statement prüfe ich, ob der Wert in der Spalte einem Element der Liste entspricht. Bei Oracle prüfe ich mit IN, ob der Wert in der Spalte vorkommt. (Jedenfalls glaube ich dass es so ist, ich hab es noch nie selbst verwendet ;))
Mit CHARINDEX funktioniert es aber so wie ich will :)

Greetz
alcaeus

Sharky 9. Feb 2005 07:37

Re: SQL-Fehler bei MSSQL
 
Zitat:

Zitat von alcaeus
... Ich will ja prüfen, ob eine Zeichenfolge in der Spalte vorkommt....

Ach soooooo...... *g*
Warum verwendest Du dann nicht Like?

SQL-Code:
WHERE (A.AUTHORIZEDGROUPS LIKE '%0%')

alcaeus 9. Feb 2005 07:46

Re: SQL-Fehler bei MSSQL
 
Weil ich gestern nicht klar denken konnte, das Statement bereits im Code war (ich habs nicht geschrieben), und ich einfach nur den Fehler auf MSSQL ausbessern musst :wall:
Bei der nächsten Änderung in dem Modul werd ich das mal gleich mitändern, danke :)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 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