Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ungültiger Spaltenname 'test' (https://www.delphipraxis.net/100642-ungueltiger-spaltenname-test.html)

daniel71 1. Okt 2007 21:31

Datenbank: MSSQL Server • Zugriff über: ADOConnection / ADOQuery

Ungültiger Spaltenname 'test'
 
Hallo

Ich bin da ein bisschen am rumexperimentiern und komme auf keinen grünen zweig.

Diese Abfrage:

Delphi-Quellcode:
y:= 'test';

with ADOQuery1 do Begin
  SQL.Text:= 'SELECT '+
              '* '+
             'FROM '+
              '[GROUP_] '+
             'WHERE '+
              'NAME_ = "'+y+'" ';
  Open;
end; x:= ADOQuery1.RecordCount;
Ergibt mir eine Exeption: Ungültiger Spaltenname 'test'

Die Tabelle "GROUP_" hat die Spalten:
ID
NAME_
TYPE_
GROUPI4_ID
...


Die hersteller der Datenbank haben von Paradox (BDE) auf MSSQL gewechselt :pale: , ich möchte mein tool das logischer weise so nicht mehr funktioniert umschreiben. Leider habe ich noch nicht soviel erfahrung mit ADO.

Gruss Daniel

Dax 1. Okt 2007 21:32

Re: Ungültiger Spaltenname 'test'
 
Die " sind in SQL Spaltenstring-Begrenzer. Versuch es statt dessen mal mit einem ', also '' im String.

daniel71 1. Okt 2007 21:39

Re: Ungültiger Spaltenname 'test'
 
Hallo Dax

Vielen Dank, klapt wunderbar :-D

daniel71 1. Okt 2007 21:55

Re: Ungültiger Spaltenname 'test'
 
Hallo

Habe mich zu früh gefreut...

Es gibt zwar keine exeption mehr, aber ein ergebniss auch nicht :(

"ADOQuery1.RecordCount;" ergibt 0, müste aber 1 ergeben.

Delphi-Quellcode:
'NAME_ = ''+y+'' ';
kann mir jemand diese query richtig aufschreiben?

FBrust 1. Okt 2007 22:01

Re: Ungültiger Spaltenname 'test'
 
Hallo,

versuch mal
Delphi-Quellcode:
'NAME_ = ' + QuotedStr('y');

Das vermindert zumindest den Verhau mit den Anführungszeichen :)


Gruß
Frank

Dax 1. Okt 2007 22:12

Re: Ungültiger Spaltenname 'test'
 
Zitat:

Zitat von daniel71
Delphi-Quellcode:
'NAME_ = ''+y+'' ';

Du meinst sicher
Delphi-Quellcode:
'NAME_ = '''+y+''' ';
Um ein ' in einen String zu bringen, Bedarf es zweier '' im String, wenn das ' dann am Anfang/Ende des Strings sein soll, eben drei ': der Stringbegrenzer und das '' für ein ' im String.

daniel71 1. Okt 2007 23:00

Re: Ungültiger Spaltenname 'test'
 
Hallo

Der fehler muss wohl woanders liegen, aber nur wo?

Mit einer selbst erstellten db kriege ich mit dieser abfrage ein ergebniss:

Delphi-Quellcode:
y:= 'hallo';

with ADOQuery1 do Begin
  SQL.Text:= 'SELECT '+
              '* '+
             'FROM '+
              '[test01] '+
             'WHERE '+
              'd = '+ QuotedStr(y);
  Open;
end;
x:= ADOQuery1.RecordCount;
natürlich auch mit der syntax von Dax, vielen dank für die hinweise


mit der db des herstellers aber nicht...

Die tabelle heisst "GROUP_" mit "GROUP" gäbe es einen fehler, kann ich auch nicht ändern, da es nicht meine db ist.
Die Spalte heisst "NAME_" auch hier dürfte es nicht am spaltennamen liegen.

mit diese abfrage kriege ich ein ergebniss:
Delphi-Quellcode:

with ADOQuery1 do Begin
  SQL.Text:= 'SELECT '+
              '* '+
             'FROM '+
              '[GROUP_] ';
  Open;
end;
x:= ADOQuery1.RecordCount;
der zugriff auf die db scheint zu funktionieren, auch mit dem "mssql server management studio express" sehe ich alle einträge der tabelle.

Die Spalte NAME_ ist nvarchar(50), NULL

hat da noch jemand eine idee?

peschai 2. Okt 2007 05:47

Re: Ungültiger Spaltenname 'test'
 
Hallo
versuch doch mal ohne die eckigen Klammern [].
Da gibt es nämlich Unterschiede von Provider zu Provider (z.b. Access, Oracle, DB2 ...)

marabu 2. Okt 2007 10:41

Re: Ungültiger Spaltenname 'test'
 
Hallo,

MSSQL kommt standardmäßig mit begrenzten Bezeichnern zurecht, aber sie werden hier nicht benötigt. Der reservierte Bezeichner GROUP wurde durch das zulässige Zeichen _ (Underscore) entschärft und auch bei NAME_ scheint es ja ein Underscore zu sein. Wenn nicht, dann müsste man den beim Open zurückgelieferten Feldnamen mal genau inspizieren.

Grüße vom marabu

peschai 2. Okt 2007 10:47

Re: Ungültiger Spaltenname 'test'
 
Hallo

Noch ne idee:
1.) Der richtige User/Schema (Gibt es die tabelle 'GROUP_' eventuell mehrmals in der DB unter verschiedenen User)?
2.) AdoQuery1 vorher nochmal closen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.
Seite 1 von 2  1 2      

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