AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Fehler

Ein Thema von Mackhack · begonnen am 18. Mai 2007 · letzter Beitrag vom 19. Mai 2007
Antwort Antwort
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

SQL Fehler

  Alt 18. Mai 2007, 22:19
Datenbank: ADS • Version: 8.1 • Zugriff über: ADS TDataSet
Hallo DPler,

ich habe hier ne kleine Test Procedure:

Delphi-Quellcode:
procedure TfoMain.LvwInfoSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  I: Integer;
  Index: Integer;
begin
  if ( Selected and (LvwInfo.ItemIndex > -1) ) then
  begin
    for I := 0 to LvwInfo.Items.Count do
    begin
      Index := StrToInt(LvwInfo.Items[I].Caption) + 1;
      with AdsQuery1 do
      begin
        Active := False;
        SQL.Text := 'SELECT * FROM Daten WHERE Index=' + IntToStr(Index);
        ShowMessage(SQL.Text);
        Active := True;
        EdtIndex.Text := FieldByName('Index').AsString;
        EdtBezeichnung.Text := FieldByName('Bezeichnung').AsString;
        EdtDatum.Text := FieldByName('Datum').AsString;
        EdtPreis.Text := FieldByName('Preis').AsString;
      end;
    end;
  end;
end;
Ich bekomme in der SQL.Text.. Zeile immer diese Fehlermeldung und kann mir absolut nicht erklaeren warum!

Zitat:
---------------------------
Sqldemo
---------------------------
AdsQuery1: Error 7200: AQE Error: State = 42000; NativeError = 2115; [Extended Systems][Advantage SQL Engine]Expected lexical element not found: identifier or expression -- Location of error in the SQL statement is: 33 There was a problem parsing the WHERE clause in your SELECT statement.
---------------------------
OK
---------------------------
Weis jemand von euch warum?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: SQL Fehler

  Alt 18. Mai 2007, 22:28
Das wird wohl daran liegen, dass "Index" ein reserviertes Wort ist und deshalb ungeeignet als Feldname.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#3

Re: SQL Fehler

  Alt 18. Mai 2007, 23:06
Auch wenn ich Index umbenenne kommt gleicher Fehler!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#4

Re: SQL Fehler

  Alt 19. Mai 2007, 00:01
könnte mehrere gründe haben:

- Index ist ein besonderer name - vielleicht liegt's daran
- die i-schleife läuft zuweit - tritt der fehler erst im letzten durchlauf auf?
- die query wird nicht geschlossen - tritt der fehler im zweiten durchlauf aus?
- ist der query-text überhaupt okay? gib den mal aus. nicht dass die caption vielleicht leer ist (liefert inttostr dann 0 oder ''?)

all sowas. ist aber doch eigentlich leicht selbst rauszufinden. warum werden hier immer so leichte sachen gefragt???
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#5

Re: SQL Fehler

  Alt 19. Mai 2007, 01:29
Wenn ich bereits 4 Leute danach ausserhalb der DP gefragt habe und wir das Problem nicht beseitigen konnten darf ich denk ich hier nachfragen oder? Und ich sagte bereits, Index ist zu Counter und in der Tabelle zu Nr geworden und es tritt immer noch auf. Ausserdem hab ich eine ShowMessage drin die mir den SQL Text anzeigt und der ist Korrekt!

So der Fehler ist weg und das ist meine Loesung:

Delphi-Quellcode:
procedure TfoMain.LvwInfoSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  I: Integer;
begin
  if ( Selected and (LvwInfo.ItemIndex > -1) ) then
  begin
    for I := 0 to LvwInfo.Items.Count - 1 do
    begin
      EdtIndex.Text := LvwInfo.Selected.Caption;
      EdtBezeichnung.Text := LvwInfo.Selected.SubItems[0];
      EdtDatum.Text := LvwInfo.Selected.SubItems[1];
      EdtPreis.Text := LvwInfo.Selected.SubItems[2];
    end;
  end;
end;
Falls es hier noch einen Performancebooster gibt bitte sagen!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: SQL Fehler

  Alt 19. Mai 2007, 08:00
Darf ich fragen, wo die Datenbankabfrage hin verschwunden ist?

Klar, das das so funktioniert. Der Fehler wurde beseitigt, indem die Fehlerquelle entfernt wurde. Das nenn ich mal 'das Übel an der Wurzel packen'.

Du kannst versuchen, das mit einem DBGrid und datensensitiven Eingabecontrols (aka 'TDBEdit') hinzubekommen, dann musst Du nämlich gar keine Zeile Code schreiben: Erstelle eine Query, die alle Daten der Tabelle lädt. Schmeiß ein TDatasource, ein TDBGrid und deine TDBEdit-Teile auf die Form. Datasource mit Query, Grid mit Datasource, alle TDBEdits mit der Datasource und dann den Feldnamen setzen. Fertig.

Zitat von Mackhack:
Wenn ich bereits 4 Leute danach ausserhalb der DP gefragt habe und wir das Problem nicht beseitigen konnten darf ich denk ich hier nachfragen oder? Und ich sagte bereits, Index ist zu Counter und in der Tabelle zu Nr geworden
Welcher Typ ist 'Index/Counter/Nr'? Hast Du versucht, die Query mit Parametern zu erstellen? Dazu setzte Du die Eigenschaft 'SQL' zur Designzeit mit'Select * from Daten where Nr=:Nr' (Wenn dein Index-Feld jetzt 'Nr' heißt).

In der Schleife setzt Du dann nur noch:
Query.Parameters.ParamValues['Nr'] := Counter
So stellst Du sicher, das die Syntax korrekt ist. Selbstgebasteltet SQL-Anweisungen sind nur selten 'besser'.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#7

Re: SQL Fehler

  Alt 19. Mai 2007, 08:04
Delphi-Quellcode:
procedure TfoMain.BtnAllesZeigenClick(Sender: TObject);
var
  Item: TListItem;
begin
  with AdsQuery1 do
  begin
    Active := False;
    SQL.Text := 'SELECT * FROM Daten';
    Active := True;
    First;
    while not Eof do
    begin
      Item := LvwInfo.Items.Add;
      Item.Caption := FieldByName('Nr').AsString;
      Item.SubItems.Add(FieldByName('Bezeichnung').AsString);
      Item.SubItems.Add(FieldByName('Datum').AsString);
      Item.SubItems.Add(FieldByName('Preis').AsString);
      Next;
    end;
  end;
  PnlCounter.Caption := IntToStr(LvwInfo.Items.Count);
end;

procedure TfoMain.LvwInfoSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  I: Integer;
begin
  if ( Selected and (LvwInfo.ItemIndex > -1) ) then
  begin
    for I := 0 to LvwInfo.Items.Count - 1 do
    begin
      EdtIndex.Text := LvwInfo.Selected.Caption;
      EdtBezeichnung.Text := LvwInfo.Selected.SubItems[0];
      EdtDatum.Text := LvwInfo.Selected.SubItems[1];
      EdtPreis.Text := LvwInfo.Selected.SubItems[2];
    end;
  end;
end;
Na ja ich muss dazusagen dass mir das hier besser gefaellt da ich nicht noch eine Datenbankanfrage schicken muss da die Daten ja bereits in der ListView stehen!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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