Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Welchen Fehler hab ich im SQL Statement?? (https://www.delphipraxis.net/67291-welchen-fehler-hab-ich-im-sql-statement.html)

winx 12. Apr 2006 14:01

Datenbank: Access • Version: 2000 • Zugriff über: ADO

Welchen Fehler hab ich im SQL Statement??
 
Hallo,

wenn ich folgende Abfrage an meine Access DB richte bekomme ich immer eine Exception:

Delphi-Quellcode:
    sqlStatement := 'SELECT EAN-ABAS FROM Typenschilder WHERE Typenschilder.MaskeT = "NT"';
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Text := sqlStatement;
    Logger.Debug('SQL QUERY: '+sqlStatement);
    ADOQuery.Open;  
    Repeat
      Logger.Debug(ADOQuery.FieldByName('EAN-ABAS').AsString); //FEHLER
      ADOQuery.Next;
    until ADOQuery.EOF;
Wenn ich jedoch eine Spalte ohne "-" abfrage kommt was zurück

Delphi-Quellcode:
    sqlStatement := 'SELECT Typennummer FROM Typenschilder WHERE Typenschilder.MaskeT = "NT"';
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Text := sqlStatement;
    Logger.Debug('SQL QUERY: '+sqlStatement);
    ADOQuery.Open;
    Repeat
      Logger.Debug(ADOQuery.FieldByName('Typennummer').AsString);
      ADOQuery.Next;
    until ADOQuery.EOF;
Wie muß ich die Anfrage stellen damit es läuft???

Gibt es irgendwo n Beispiel???

Danke,
winx

Loki77 12. Apr 2006 14:03

Re: Welchen Fehler hab ich im SQL Statement??
 
- wird hier halt als operator genommen, kann die gerade aber auch nicht sagen wie man das löst...
Hab in dem Fall immer Felder mit _ geschrieben...
Hatte mal das problem mit Feldname "PLZ/Ort", "PLZ_Ort" klappt dann.

joachimd 12. Apr 2006 14:06

Re: Welchen Fehler hab ich im SQL Statement??
 
Zitat:

Zitat von winx
'SELECT EAN-ABAS FROM Typenschilder WHERE Typenschilder.MaskeT = "NT"'

Du gibst im SQL vor, dass eine Differenz der beiden Felder EAN und ABAS gewünscht ist. Wenn Sonderzeichen im Bezeichnernamen vorkommen, musst Du den Bezeichner quoten. SQL Standard ist [komischer Name], µ$ SQL und manche andere verstehen auch "komischer Name".

Schrammel 12. Apr 2006 14:09

Re: Welchen Fehler hab ich im SQL Statement??
 
Ich glaube, es muss heißen:

Delphi-Quellcode:
sqlStatement := 'SELECT EAN-ABAS FROM Typenschilder WHERE Typenschilder.MaskeT = "NT"';
Probiers mal damit!

Gruss

Stefan

Schrammel 12. Apr 2006 14:12

Re: Welchen Fehler hab ich im SQL Statement??
 
Das war jetzt ganz schlau von mir, ich habe vergessen, das Statement zu korrigieren. Also nochmal:

Ich glaube, es muss heißen:

Delphi-Quellcode:
sqlStatement := 'SELECT [EAN-ABAS] FROM Typenschilder WHERE Typenschilder.MaskeT = "NT"';
Probiers mal damit!

Gruß

Stefan

shmia 12. Apr 2006 14:16

Re: Welchen Fehler hab ich im SQL Statement??
 
Wer einen Feld- oder Tabellennamen mit einem Minuszeichen wählt,
dem sollte man gleich einen Dübel bohren. :twisted:
Du würdest ja auch nie auf die Idee kommen, Variablen dieser Art in Pascal zu deklarieren:
Delphi-Quellcode:
var
   EAN-Nummer : integer;
   2fach : boolean;

Loki77 12. Apr 2006 14:18

Re: Welchen Fehler hab ich im SQL Statement??
 
Zitat:

Wer einen Feld- oder Tabellennamen mit einem Minuszeichen wählt,
dem sollte man gleich einen Dübel bohren.
Einmal den Fehler gemacht, immer dran gedacht!
(sch...limmer Spruch)

winx 13. Apr 2006 09:02

Re: Welchen Fehler hab ich im SQL Statement??
 
Das mit [] funktioniert :-)

Leider hab ich nich die DB erstellt, sondern darf sie nur verwenden :wall:

Schrammel 13. Apr 2006 09:27

Re: Welchen Fehler hab ich im SQL Statement??
 
Da sieht man mal wieder, dass Tips der Kategorie "Aus der Praxis für die Praxis" auch noch ihre Daseinsberechtigung haben neben konzeptionellen Wolkenschieberein der Kategorie "... sowas darf man doch nicht machen, das geht an allen Standards vorbei...".

Lasst uns lernen, mit den Fehlern unserer Vorgänger zu leben und das Beste daraus zu machen!

MfG

Stefan

shmia 13. Apr 2006 10:51

Re: Welchen Fehler hab ich im SQL Statement??
 
Zitat:

Zitat von Schrammel
Da sieht man mal wieder, dass Tips der Kategorie "Aus der Praxis für die Praxis" auch noch ihre Daseinsberechtigung haben neben konzeptionellen Wolkenschieberein der Kategorie "... sowas darf man doch nicht machen, das geht an allen Standards vorbei...".
Lasst uns lernen, mit den Fehlern unserer Vorgänger zu leben und das Beste daraus zu machen!

Drei Jahre später...
Die Datenbank und die Anwendung erfreuen sich beim Endkunden grosser Beliebtheit.
Nun ist allerdings die Access-Datenbank nicht mehr ausreichend, es wird auf Oracle umgestiegen.
Schade, nun läuft aber diese eine Abfrage mit den eckigen Klammer nicht mehr, da bei Oracle hier Anführungszeichen verwendet werden müssten.
Leider hat der ursprüngliche Programmierer die Firma verlassen.
Der Kunde ist sauer und verlangt sofortige Behebung des Fehler.
Ein einziges Minuszeichen führt also zu bösen Briefen an die Geschäftsleitung, sowie Aufwand ohne Bezahlung.
:warn: Man kann also nur davor warnen, Feld- oder Tabellennamen falsch zu wählen; es sind tickende Zeitbomben


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Seite 1 von 2  1 2      

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