Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Befehl kennt das Feld nicht (https://www.delphipraxis.net/92101-sql-befehl-kennt-das-feld-nicht.html)

nachtstreuner60 14. Mai 2007 15:26

Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos 6.5

SQL Befehl kennt das Feld nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Delphianer,

habe mal wieder ein SQL-Abfrageproblem.

Folgender SQL Befehl liefert eine Fehlermeldung, ich denke mal, das der Feldname schuld dran ist
vielleicht ein reserviertes Wort:

Delphi-Quellcode:
 dSQL := 'SELECT * from IDOC_REAL where AKTION = '+
        QuotedStr('ABHOL')+' and SCanCODE like '+
        Quotedstr(edGANG.TEXT);

with dModulREAL do begin
     zQUeryReal.SQL.Clear;
     reditSQL.Clear;
     zQueryReal.SQL.TEXT := dSQL;
     zQueryReal.open;
     rEditSQL.Lines.Add(zQueryReal.SQL.Text);
end;
Fehlermeldung:

[edit=MrSpock]Schließendes Code Tag eingefügt. Mfg, MrSpock[/edit]

mkinzler 14. Mai 2007 15:33

Re: SQL Befehl kennt das Feld nicht
 
Wie heißt den das Feld SCANCODE oder SCanCODE?

marabu 14. Mai 2007 16:26

Re: SQL Befehl kennt das Feld nicht
 
Hallo Markus,

der Feldname ScanCODE wird gemäß den Regeln der SQL Spezifikation in Großbuchstaben umgewandelt und erst dann in den Systemkatalog aufgenommen. Die Schreibweise der Feldnamen ist egal. Die Fehlermeldung behauptet, dass SCANCODE kein Feld der Tabelle IDOC_REAL ist - und ich glaube die SQL-Engine hat Recht.

Freundliche Grüße

mkinzler 14. Mai 2007 16:49

Re: SQL Befehl kennt das Feld nicht
 
Es kommt darauf an. FireBird unterstützt nämlich casesensitive Tabellen/Feldnamen. wenn dies aktiviert ist, muß man diese Quoten.

marabu 14. Mai 2007 17:26

Re: SQL Befehl kennt das Feld nicht
 
Hallo Markus,

ich dachte immer, FireBird strebe nach SQL-Konformität. Im SQL-Standard steht es genau umgekehrt, wenn ich mich nicht irre: Wird ein Identifier in Quotes (delimited identifier) angegeben, dann ist dessen Schreibweise zu beachten. Ist das bei FB wirklich anders herum?

Freundliche Grüße

mkinzler 14. Mai 2007 18:26

Re: SQL Befehl kennt das Feld nicht
 
Hallo Achim,
Vielleicht mißverstehen wir uns. wenn man nicht quoted wird in Großbuchstaben umgewandelt. Es könnte ja aber möglich sein, das das Feld mit Quotes angelegt wurde.
Ich würde aber auf das Feature verzichten.
Markus.

nachtstreuner60 15. Mai 2007 06:36

Re: SQL Befehl kennt das Feld nicht
 
Hallo marabu & mKinzler

vielen Dank für eure Antworten. Was könnte ich nun ausprobieren ?

Habe es auch schon mit vorangestelltem Tabellennamen ausprobiert, funktioniert auch nicht

z.B. Idoc_Real.ScanCode , das ist übrigens auch die schreibweise wie es in der Tabelle angelegt ist.

{ScanCode}

was bedeutet Quoten bei Feldnamen,in Hochkomma stellen ?

etwa so ''ScanCode'' ?

Vielen Dank schonmal im voraus.

mkinzler 15. Mai 2007 06:46

Re: SQL Befehl kennt das Feld nicht
 
Zitat:

was bedeutet Quoten bei Feldnamen,in Hochkomma stellen ?

etwa so ''ScanCode'' ?
Nein "ScanCode"

uwewo 15. Mai 2007 06:48

Re: SQL Befehl kennt das Feld nicht
 
Funktioniert denn

SQL-Code:
 dSQL := 'SELECT SCanCODE from IDOC_REAL';

mkinzler 15. Mai 2007 06:49

Re: SQL Befehl kennt das Feld nicht
 
Zitat:

Zitat von uwewo
Funktioniert denn

SQL-Code:
 dSQL := 'SELECT SCanCODE from IDOC_REAL';

Würde dann als
SQL-Code:
SELECT SCANCODE from IDOC_REAL;
interpretiert. Deshalb ja meine Frage, wie das Feld in der Dtenbank heißt.

nachtstreuner60 15. Mai 2007 06:56

Re: SQL Befehl kennt das Feld nicht
 
Hallo nochmal,

nein auch der Befehl
Delphi-Quellcode:
dSQL := 'SELECT SCanCODE from IDOC_REAL';
funktioniert nicht. Hier mal die Fehlermeldung im SQL-Manager

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
SCANCODE.
At line 1, column 17.

in der Tabelle steht der Feldname so drin:

ScanCode VarChar(10) Zeichensatz Win 1251

nachtstreuner60 15. Mai 2007 07:00

Re: SQL Befehl kennt das Feld nicht
 
Hallo mKinzler und alle an diesem Thread beteiligten,

ich habe noch folgendes ausprobiert :

Delphi-Quellcode:
   dSQL := 'SELECT * from IDOC_REAL where AKTION = '+
        QuotedStr('ABHOL')+' and ''ScanCode'' = '+
        Quotedstr(edGANG.TEXT);
Jetzt erhalte ich keine Fehlermeldung mehr, aber auch keine Datensätze, obwohl es über 100 Sätze gibt, die dem Suchkriterium entsprechen müssten

:wall: ratlos

mkinzler 15. Mai 2007 07:00

Re: SQL Befehl kennt das Feld nicht
 
Wie gesagt, musst du den Feldnamen quoten, wenn due Groß-/Kleinschreibung verwendest:
Delphi-Quellcode:
dSQL := 'SELECT "SCanCODE" from IDOC_REAL';

nachtstreuner60 15. Mai 2007 07:07

Re: SQL Befehl kennt das Feld nicht
 
Hallo mKinzler

Du hast recht. Es funktioniert jetzt.

Ich habe Quoten falsch gemacht, statt dem " habe ich zweimal '' gesetzt.

Vielen Dank für diesen Tip. Auch den anderen nochmals herzlichsten Dank.

Wollte mich schon fast damit abfinden, den Feldnamen abzuändern, da wären aber

zigTausende Progzeilen und Tabellen betroffen gewesen.

:) Auf Euch und euer Fachwissen ist wie immer Verlass.

nachtstreuner60 15. Mai 2007 07:11

Re: SQL Befehl kennt das Feld nicht
 
Hier nochmal für alle die richtige Schreibweise, dann funktionierts auch:

SQL-Code:
SELECT * from IDOC_REAL where AKTION = 'ABHOL' and "ScanCode" = 'G0700'
Nochmals Danke ! Einen schönen Tag noch, und für alle Väter in zwei Tagen ein schönes Festchen..


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