Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL und Bindestrich im Feldnamen (https://www.delphipraxis.net/47834-sql-und-bindestrich-im-feldnamen.html)

Schiller 16. Jun 2005 21:13

Datenbank: Paradox • Zugriff über: BDE

SQL und Bindestrich im Feldnamen
 
Hallo!
ich habe einen Bindestrich im Feldnamen und kann keine Möglichkeit finden, ihn im SQL-Statement zu verwenden:
SELECT * FROM tbl.db WHERE Bt-Id=17
So geht es eben nicht, auch mit ", ', [] usw. habe ich keinen Erfolg.
Weiß jemand einen Weg?

alcaeus 16. Jun 2005 21:14

Re: SQL und Bindestrich im Feldnamen
 
Hallo Schiller,

mich wundert dass du die Tabelle so ueberhaupt erstellen konntest :shock:
AFAIK ist das Minus im Feldnamen eigentlich ungueltig, da es ja ein Rechenoperator ist ;)

Greetz
alcaeus

Schiller 16. Jun 2005 21:18

Re: SQL und Bindestrich im Feldnamen
 
Heißt das, dass es keine Lösung gibt? :(

In Delphi ist diese Benennung gar kein Problem...

derHund 16. Jun 2005 22:41

Re: SQL und Bindestrich im Feldnamen
 
hast du mal backticks probiert?
Code:
`column`

mikhal 17. Jun 2005 05:27

Re: SQL und Bindestrich im Feldnamen
 
Anführungszeichen um den Namen, dann sollte es klappen.

Grüße
Mikhal

Sharky 17. Jun 2005 07:29

Re: SQL und Bindestrich im Feldnamen
 
Hai,

auch wenn es mit Anführungszeichen oder ähnlichem funktionieren sollte würde ich mich doch lieber an die Namensregeln halten.
Dann hast Du einfach weniger Probleme ;-)

Tabellennamen dürfen aus Buchstaben, Ziffern (nicht am Anfang) und der Zeichenmenge = {@, #, _ , $} bestehen.

Schiller 17. Jun 2005 07:35

Re: SQL und Bindestrich im Feldnamen
 
Vielen Dank für die Tipps, :)
aber leider alle (alle Arten von Anführungszeichen, Klammern und Backticks) ohne Erfolg! :cry:

1000 Programme mit dem Feldnamen "BT-ID" sind schon draußen im Feld...
ohne Konvertierung aller Datenbanken geht es wohl nicht!!! :wall:

marabu 17. Jun 2005 07:59

Re: SQL und Bindestrich im Feldnamen
 
Nicht die Hoffnung aufgeben!

SQL-Code:
SELECT * FROM tbl.db magic WHERE magic."Bt-Id" = 17
Grüße vom marabu

Schiller 17. Jun 2005 08:03

Re: SQL und Bindestrich im Feldnamen
 
Danke.
Jetzt ist immerhin die Fehlermeldung aussagekräftig: Feldname ungültig.
(Vorher hat der Interpreter ja immer Bt als eigenes Feld erkannt.)
Ergebnis leider dasselbe.

marabu 17. Jun 2005 08:26

Re: SQL und Bindestrich im Feldnamen
 
Was machst du, um diese Fehlermeldung zu bekommen? Zeig bitte mal das Statement.

marabu

Schiller 17. Jun 2005 08:35

Re: SQL und Bindestrich im Feldnamen
 
Das letzte Statement heißt: SELECT * FROM flaechen.db magic WHERE magic."BT-ID"=17
Antwort: ungültiger Feldname: BT-ID

Andere Statements wie SELECT * FROM flaechen.db WHERE "BT-ID"=17
oder SELECT * FROM flaechen.db WHERE 'BT-ID'=17
oder SELECT * FROM flaechen.db WHERE `BT-ID`=17
bringen Antworten wie
Keine Übereinstimmung der Typen im Ausdruck

marabu 17. Jun 2005 08:44

Re: SQL und Bindestrich im Feldnamen
 
Die Syntax, die ich dir vorgestellt habe, ist korrekt und funktioniert bei mir. Die anderen Schreibweisen können nicht funktionieren. Durch das Minus-Zeichen muss der Bezeichner in Quotes verpackt werden. Werden Quotes verwendet, dann muss ein qualifizierter Name verwendet werden. So sind die Regeln.

Ich habe mit IDAPI32.DLL Version 5.2.0.2 getestet. Was verwendest du?

marabu

Schiller 17. Jun 2005 08:49

Re: SQL und Bindestrich im Feldnamen
 
Ich verwende dieselbe Version.
Was ist ein qualifizierter Name?

marabu 17. Jun 2005 08:52

Re: SQL und Bindestrich im Feldnamen
 
"tableName"."fieldName"

Wenn du nur den Feldnamen in Quotes packst, dann wird dir ein Literal ausgegeben.

marabu

marabu 17. Jun 2005 09:17

Re: SQL und Bindestrich im Feldnamen
 
Zitat:

Das letzte Statement heißt: SELECT * FROM flaechen.db magic WHERE magic."BT-ID"=17
Antwort: ungültiger Feldname: BT-ID
Diese Fehlermeldung kommt übrigens, wenn das Feld mit dem angegeben Namen nicht in der Tabelle vorhanden ist...

marabu

Schiller 17. Jun 2005 09:35

Re: SQL und Bindestrich im Feldnamen
 
Danke. Jetzt hat sich das Problem gelöst :lol:
Der entscheidende Tipp war der qualifizierte Name.
Ich habe nur leider im laufe der Untersuchungen den Feldnamen falsch geschrieben :oops:
sodass ich zunächst eine "falsche" Fehlermeldung bekam.
Danke nochmal :love:


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