Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Problem"ungültiger Feldname?!?" (https://www.delphipraxis.net/35742-sql-problem-ungueltiger-feldname.html)

Hansi 11. Dez 2004 11:18


SQL Problem"ungültiger Feldname?!?"
 
Hey

habe euch mal den Code angehängt. Fehlermeldugn kommt immer beim SQL.Open und meint ungültiger Feldname.
Wie Ihr seht berechne ich zwei Datum(s)(e)(?!?) und nach denen soll in der Tabelle gefiltert werden.

Woran liegt's?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Aktienchart :TLineSeries;
AD:TDate;
ADS, EDS:String;
J, M, T:Word;
begin
  EDS := FormatDateTime('dd.mm.yyyy',now);
  with Form1.Query1 Do
    begin
      DecodeDate(now, J,M,T);
      M:=M-1;
      AD:=EncodeDate(J,M,T);
      ADS := FormatDateTime('dd.mm.yyyy',AD);
      Form1.Query1.SQL.Clear;
      Form1.Query1.SQL.Add('SELECT Datum, Close FROM '+Form1.ComboBox1.Text+' WHERE Datum BETWEEN ADS AND EDS');
      Form1.Query1.Open;
    end;
Aktienchart:=TLineSeries.Create(Form1);
with Aktienchart do
  begin
    ParentChart:=Form1.DBChart1;
    DataSource:=Form1.Query1;
    XLabelsSource:='Datum';
    YValues.ValueSource:= 'Close';
    SeriesColor:= clBlue;
    CheckDatasource;
  end;
end;

Albi 11. Dez 2004 11:27

Re: SQL Problem"ungültiger Feldname?!?"
 
Hallo,

versuch mal den Feldnamen Close umzubenennen, da es sich bei Close um ein reserviertes Wort handelt. Man sollte es vermeiden den Feldern solche Namen zu geben.

Hansi 11. Dez 2004 11:30

Re: SQL Problem"ungültiger Feldname?!?"
 
OK! Werde es ändern!

Daran liegt es aber nicht! Warum sagt er mir ungültiger Feldname. Wenn ich den String '10.12.2004' z.B. unter Eigenschaften in TStrings eingebe funktioniert es?!?

Gruber_Hans_12345 11. Dez 2004 11:32

Re: SQL Problem"ungültiger Feldname?!?"
 
Du meinst aber nicht, dass der ADS/EDS Parameter in der SQL SELECT Anweisung der selbe ist wie die ADS/EDS variabel aus Delphi ?

wenn ja, dann mach es so :
Delphi-Quellcode:
      Form1.Query1.SQL.Add('SELECT Datum, Close FROM '+Form1.ComboBox1.Text+' WHERE Datum BETWEEN :ADS AND :EDS');
      Form1.Query1.ParamByName('ADS').AsDateTime := ADS;
      Form1.Query1.ParamByName('EDS').AsDateTime := EDS;
      Form1.Query1.Open;
Ansonsten, die ganz genaue Fehlermeldung !

Hansi 11. Dez 2004 12:01

Re: SQL Problem"ungültiger Feldname?!?"
 
Hallo Gruber Hans,

Funktioniert Dein Code bei Dir? Bei mir nicht! Ist auch klar; Inkompatible Typen TDateTime und String?!?

:wiejetzt:

Ich baruche das Datum als String in der Form 10.12.2004 um in der Tabelle zu filtern. Warum lässt er mich nicht in der SQl Anweisung nach Strings filtern?
:wall:

Albi 11. Dez 2004 12:13

Re: SQL Problem"ungültiger Feldname?!?"
 
Hast Du nicht einfach nur die Hochkommas in deinem Code vergessen. Dann sollte es eigentlich gehen.

Zitat:

Zitat von Hansi
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT Datum, Close FROM '+Form1.ComboBox1.Text+' WHERE Datum BETWEEN ADS AND EDS');
end;[/delphi]

Code:
'SELECT Datum, Close FROM '+Form1.ComboBox1.Text+' WHERE Datum BETWEEN '+ADS+' AND '+EDS+''

Gruber_Hans_12345 11. Dez 2004 12:18

Re: SQL Problem"ungültiger Feldname?!?"
 
hab ich übersehen, aber probier folgendes ....

Zitat:

Zitat von Gruber_Hans_12345
Du meinst aber nicht, dass der ADS/EDS Parameter in der SQL SELECT Anweisung der selbe ist wie die ADS/EDS variabel aus Delphi ?

wenn ja, dann mach es so :
Delphi-Quellcode:
      Form1.Query1.SQL.Add('SELECT Datum, Close FROM '+Form1.ComboBox1.Text+' WHERE Datum BETWEEN :ADS AND :EDS');
      Form1.Query1.ParamByName('ADS').AsDateTime := AD;
      Form1.Query1.ParamByName('EDS').AsDateTime := now;
      Form1.Query1.Open;
Ansonsten, die ganz genaue Fehlermeldung !


Hansi 11. Dez 2004 12:24

Re: SQL Problem"ungültiger Feldname?!?"
 
Danke das war die Lösung!


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