Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi in sql-statement wird <<???>> eingefügt - warum/Ursache? (https://www.delphipraxis.net/74393-sql-statement-wird-eingefuegt-warum-ursache.html)

Susanne 2. Aug 2006 14:43

Datenbank: Navision / Access • Zugriff über: ADO

in sql-statement wird <<???>> eingefügt - warum/
 
Hi,

beim Kunden gibt es eine Navision-DB auf die ich mit meinem Programm zugreifen will. Gut, zum Testen der ganzen sql-statements habe ich auf meinem Rechner Access benutzt.

Wir haben dann einen ConnectionString zusammengebastelt für Navision und mit dem AdoQuery-Tool kann man ja auch testen, ob mit diesem String erfolgreich auf die DB zugegriffen werden kann. Dieser Test sagt erfolgreich.

Nun soll er ein SQL-statement absetzen. Das ganze sieht bei mir dann so aus:

Delphi-Quellcode:

Form2.AdoQuery1.Active:= false;
Form2.AdoQuery1.SQL.Clear;
//Suchbegriff enthält Leerzeichen deshalb in Klammern
sql1:='Select * from '+AdoTab1+' where ['+Suchbegriff1+'] ='''+FieldValue+'''';
Form2.AdoQuery1.SQL.Add(sql1);
try
  Form2.AdoQuery1.Active:= true;
except
  on E:Exception do
     Showmessage(e.message);

end;
Wenn ich dies nun mit meinem Access durchlaufen lasse, benutzt er das SQL-statment korrekt, "SELECT * FROM 25 WHERE [Barcode Value] = '123'", lassen wir dies aber mit der Navision-DB laufen macht er aus dem korrekten Statement das: "SELECT * FROM 25 <<???>> WHERE [Barcode Value] = '123'". Gut, damit wüsste ich als DB vielleicht auch nichts mit anzufangen.

Die Frage nun, warum fügt er das ein -> <<???>> ein? Irgendjemand eine Idee, wo ich noch suchen könnte? Für jeden Tip dankbar.

Ich hab dann auch nur mal ein AdoConnection eingefügt und getestet ob open klappt, das macht er einwandfrei, also kann er auf die DB wohl zugreifen und sich mit ihr verbinden.

KrasserChecker 2. Aug 2006 15:01

Re: in sql-statement wird <<???>> eingefügt - wa
 
Sieht aus, als würde die Datenbank dir so mitteilen wollen, was genau ihr am dem Statement nicht passt.
Die Zeichen <<???>> könnten zum Beispiel bedeuten, das die Tabelle 25 nicht existiert, Du nicht darauf zugreifen kannst, Tabellennamen bei Navision anders angegeben werden müssen, etc...

Susanne 2. Aug 2006 15:12

Re: in sql-statement wird <<???>> eingefügt - wa
 
Das habe ich mir auch gedacht und den Name für die Tabelle mal genommen, wobei mir vorher gesagt wurde, dass ich die Tabellen über die Nummern ansprechen müsste, die Fehlermeldung hat sich auch ein klein wenig verändert:

"SELECT * FROM <<???>> [Vendor Tabelle] WHERE [Barcode Value] = '123'"

Aber wirklich geholfen hat mir das nun auch nicht, <<???>> ist jetzt eins weiter vorne.

KrasserChecker 2. Aug 2006 15:18

Re: in sql-statement wird <<???>> eingefügt - wa
 
Gibt es Tabellen, die nur ein Wort als Namen haben (z.B. "Vendor")? Probier doch mal aus, ob das Select auf solchen Tabellen geht. Meine mich erinnern zu können, dass es da Probleme mit Tabellennamen, die aus mehreren Wörter bestehen, gibt...

Susanne 2. Aug 2006 15:59

Re: in sql-statement wird <<???>> eingefügt - wa
 
stimmt, wenn der TabellenName nur aus einem Wort besteht, hat er ein Problem.

Aber wie bring ich ihm nun bei, dass er auch diesen NAmen aktzeptiert, mit eckigen Klammern schon mal nicht, das hatte ich ja schon, in Hochkommata auch nicht.

marabu 2. Aug 2006 17:23

Re: in sql-statement wird <<???>> eingefügt - wa
 
Hallo Susanne,

Zitat:

Zitat von Susanne
Wenn ich dies nun mit meinem Access durchlaufen lasse, ... , lassen wir dies aber mit der Navision-DB laufen macht er aus dem korrekten Statement

das lässt sich so verstehen, dass du mal Access als client verwendest und mal einen Navision client. Für Access und andere MS SQL clients sind die eckigen Klammern dokumentiert. Navision wurde zwar von MS übernommen, aber schlauer bist du nach einem Blick in den Navision SQL Statement Reference Guide. Dein Kunde sollte dir das auf Zuruf sagen können.

Falls bei einem simplen Tabellennamen die eckigen Klammern akzeptiert werden, dann kann es sein, dass du den exotischen Namen nur qualifizieren musst: [dbo].[Vendor Tabelle]

Der Name ist aber auch in jeder Hinsicht exotisch - das enthaltene Blank und nicht zuletzt der Denglisch-Mix ...

Grüße vom marabu

PS: Ist Navision beim Kunden auf MSSQL Server aufgesetzt?

Susanne 3. Aug 2006 09:35

Re: in sql-statement wird <<???>> eingefügt - wa
 
blöde Frage, aber wofür steht das dbo?

marabu 3. Aug 2006 09:37

Re: in sql-statement wird <<???>> eingefügt - wa
 
dbo = database owner - ein terminus technicus bei MSSQL. Über den Aufbau von qualifizierten Namen findest du was in der Dokumentation zum MSSQL Server.

marabu


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