Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Syntax-Fehler in From-Klausel (https://www.delphipraxis.net/158999-syntax-fehler-klausel.html)

daredd 10. Mär 2011 13:53

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

Syntax-Fehler in From-Klausel
 
Hallo, ich bekomme von meinem Compiler eine Fehlermeldung:' Syntax-Fehler in FROM-Klausel'

hier der Code:

Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT K.EK_EUR + K.URA_PREIS AS Price FROM KOMSA As K INNER JOIN Warenbestand AS W On W.external_id = K.KOMSANUMMER SET W.products_price = Price');
ADOQuery1.ExecSQL;
komm einfach nicht drauf, was da flasch ist?

mkinzler 10. Mär 2011 13:55

AW: Syntax-Fehler in From-Klausel
 
Es gibt kein Set bei einem select

ToFaceTeKilla 10. Mär 2011 13:57

AW: Syntax-Fehler in From-Klausel
 
Ja, wenn schon, dann WHERE.

daredd 10. Mär 2011 13:57

AW: Syntax-Fehler in From-Klausel
 
na toll, und wie kriege ich den 'Price' in die w.products_price?

Neutral General 10. Mär 2011 13:58

AW: Syntax-Fehler in From-Klausel
 
:arrow: UPDATE

daredd 10. Mär 2011 14:09

AW: Syntax-Fehler in From-Klausel
 
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT EK_EUR + URA_PREIS AS Price FROM KOMSA');
ADOQuery1.SQL.Add('UPDATE Warenbestand As W INNER JOIN KOMSA As K On W.external_id = K.KOMSANUMMER SET W.products_price = Price');
ADOQuery1.ExecSQL;
Habs jetzt mal so geschrieben, kommt trotzdem der Fehele ' Syntax-Fehler in FROM-Klausel'

daredd 10. Mär 2011 14:11

AW: Syntax-Fehler in From-Klausel
 
Was noch wichtig ist, in einigen Zeilen von URA_PREIS stehen keine werte drin.

Neutral General 10. Mär 2011 14:16

AW: Syntax-Fehler in From-Klausel
 
Hallo,

Du hättest dir mal durchlesen sollen wie die Update-Syntax funktioniert...
Es müsste ungefähr so gehen: (Keine Garantie dass es fehlerfrei ist!)

SQL-Code:
UPDATE
  warenbestand
SET
  products_price =
     (
      SELECT
         EK_EUR + iif(URA_PREIS is NULL,0,URA_PREIS)
      FROM komsa
      WHERE (komsa.komsanummer = warenbestand.external_id)
     )

daredd 10. Mär 2011 14:18

AW: Syntax-Fehler in From-Klausel
 
Hab das jetzt so hier:

Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT K.EK_EUR + K.URA_PREIS AS Price FROM KOMSA As K WHERE K.URA_PREIS IS NOT NULL');
ADOQuery1.SQL.Add('UPDATE Warenbestand As W INNER JOIN KOMSA As K On W.external_id = K.KOMSANUMMER SET W.products_price = Price');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
Und bekomme das hier:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt DatenZugriff.exe ist eine Exception der Klasse EOleException mit der Meldung 'Syntaxfehler (fehlender Operator) in Abfrageausdruck 'K.URA_PREIS IS NOT NULL
UPDATE Warenbestand As W INNER JOIN KOMSA As K On W.external_id = K.KOMSANUMMER SET W.products_price = Price'' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Darf wahrscheinlich muss ich erst eins ausführen und dann das andere, oder?

@Neutral Genral: Ahso, ich muss bei SQL die Sache verschachteln!?

mkinzler 10. Mär 2011 14:21

AW: Syntax-Fehler in From-Klausel
 
Das war ja auch nicht der Vorschlag!

ToFaceTeKilla 10. Mär 2011 14:22

AW: Syntax-Fehler in From-Klausel
 
Zitat:

Zitat von daredd (Beitrag 1087343)
@Neutral Genral: Ahso, ich muss bei SQL die Sache verschachteln!?

Ja, wenn die zwei Statements sich aufeinander beziehen sollen, schon.
Ansonsten kannst du sie auch mit einem 'GO' trennen und separat ausführen lassen, IIRC.

Neutral General 10. Mär 2011 14:22

AW: Syntax-Fehler in From-Klausel
 
Eh.. Du musst halt im Update ein (Sub-)Select machen.

Zitat:

Ansonsten kannst du sie auch mit einem 'GO' trennen und separat ausführen lassen, IIRC.
öh.. Kannte ich jetzt bisher noch nicht, aber das wird ihm auch nichts nutzen. So wird das anschließende Update trotzdem nichts mehr von dem Ergebnis der Selektion wissen.

Musst meinen Code anpassen wenn du die Datensätze wo der ura_preis null wäre nicht updaten willst. Wenn für die Berechnung null = 0 sein soll, d.h. products_price = EK_EUR, dann ist mein Code (vom Prinzip her) richtig.

Hansa 10. Mär 2011 14:26

AW: Syntax-Fehler in From-Klausel
 
In dem select ist das AS zuviel des Guten. "From KOMSA K" wäre richtig.

Neutral General 10. Mär 2011 14:34

AW: Syntax-Fehler in From-Klausel
 
Zitat:

Zitat von Hansa (Beitrag 1087349)
In dem select ist das AS zuviel des Guten. "From KOMSA K" wäre richtig.

Nein, ich benutze auch immer das AS. Das ist die ausführliche Schreibweise, die ich persönlich auch deutlich schöner & übersichtlicher finde.

daredd 10. Mär 2011 14:37

AW: Syntax-Fehler in From-Klausel
 
Also wenn ich das so schreibe:
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Warenbestand SET products_price = (SELECT EK_EUR + iif(URA_PREIS is not NULL, URA_PREIS, 0) FROM Komsa WHERE (komsa.komsanummer = warenbestand.external_id))');
ADOQuery1.ExecSQL;
dann kommt diese Meldung:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt DatenZugriff.exe ist eine Exception der Klasse EOleException mit der Meldung 'Operation muss eine aktualisierbare Abfrage verwenden' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Neutral General 10. Mär 2011 14:55

AW: Syntax-Fehler in From-Klausel
 
Hallo,

Guck mal. Eventuell ist Punkt 2 (unter "Lösungen") deine Lösung:

http://support.microsoft.com/kb/175168/de

Ansonsten kann ich dir leider nicht weiterhelfen. Access ist mir eh etwas suspekt :?

p80286 10. Mär 2011 15:19

AW: Syntax-Fehler in From-Klausel
 
Code:
UPDATE Warenbestand
SET products_price = (SELECT EK_EUR + iif(URA_PREIS is not NULL, URA_PREIS, 0) FROM Komsa WHERE (komsa.komsanummer = warenbestand.external_id))
Hierbei wird in alle Datensätze in "products_price" das ergebnis von (select ek_eur....) eingetragen. Und ich glaube, das ist nicht im Sinne des Erfinders.
Wenn ich mich richtig erinnere muß das Ergebnis dieses selects auch genau ein Datensatz sein, und das ist wohl nicht der Fall.

Zitat:

Zitat von Neutral General (Beitrag 1087361)
Access ist mir eh etwas suspekt :?

Dem ist eigentlich nichts hinzuzufügen.

Gruß
K-H

daredd 10. Mär 2011 15:34

AW: Syntax-Fehler in From-Klausel
 
So hab ich das Problem nun gelöst:
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Warenbestand As W INNER JOIN KOMSA As K On W.external_id = K.KOMSANUMMER SET W.products_price = IIF(K.URA_PREIS is not null, K.URA_PREIS + K.EK_EUR, K.EK_EUR)');
ADOQuery1.ExecSQL;
irgendwie ganz einfach, auf einmal ;)

Sir Rufo 10. Mär 2011 17:03

AW: Syntax-Fehler in From-Klausel
 
Zitat:

Zitat von daredd (Beitrag 1087329)
Hallo, ich bekomme von meinem Compiler eine Fehlermeldung:' Syntax-Fehler in FROM-Klausel'

Um den Klugscheißer mal rauszukramen:

Der Compiler meldet hier keinen Fehler, sondern es wird im laufenden Betrieb eine Exception geworfen!


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