Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ungültiges Schlüsselwort (https://www.delphipraxis.net/23776-ungueltiges-schluesselwort.html)

PES 9. Jun 2004 16:05


Ungültiges Schlüsselwort
 
Hallo habe folgendens code
SQL-Code:
 
  Query2.Close;
  Query2.SQL.Clear;
  Query2.SQL.Add ('SELECT count(*) as anzahl2 from Auftrag where  FormAuftragaendern.DBCheckBoxEingestellt:=checked');
  Query2.Open;
Bekomme immer Die Fehlermeldung:
Ungültiges Schlüsselwort FormAuftragaendern.DBCheckBoxEingestellt


Oder funzt es nicht weil die form ja nicht in der tabelle Auftrag vorhanden ist? Wäre mein Tipp.
Die spalte in der tabelle heißt Statuseingestellt. Und ich möchte diese zählen die den eintrag true haben. Hat jemand ne ahnung??


Danke Pes

CalganX 9. Jun 2004 16:12

Re: Ungültiges Schlüsselwort
 
Hi,
ich denke deine SQL-Abfrage muss so lauten:
SQL-Code:
SELECT count(*) AS anzahl2 FROM Auftrag WHERE FormAuftragaendern.DBCheckBoxEingestellt = 'checked'
Chris

Smokey 9. Jun 2004 16:16

Re: Ungültiges Schlüsselwort
 
wie du schon richtig vermutet hast, kann SQL mit deiner Form nichts anfangen weil es sich nur auf die Datenbank bezieht.
Wenn du Abfragen willst wo True ist dann einfach mit :

SQL-Code:
SELECT
  count(*) AS anzahl2 
FROM
  Auftrag
WHERE
  statuseingestellt = true
wenn "statuseingestellt vom Typ String/Varchar/Text oder wie auch immer ist, muss True in ""

PES 9. Jun 2004 16:17

Re: Ungültiges Schlüsselwort
 
So habe ich folgendes:

Fehlermeldung Bezeichner 'checked' nicht gefunden.

PES 9. Jun 2004 16:21

Re: Ungültiges Schlüsselwort
 
Hallo Smokey, danke deine Lösung läuft :bounce1:

struppelohr 31. Mai 2005 20:26

Re: Ungültiges Schlüsselwort
 
Habe das gleiche Problem, arbeiten mit Delphi 5 und einem MySQL Server sowie der ZeosKomp.

Delphi-Quellcode:
procedure btnclick....

var schaltung : string;

begin
query2.active:=false;
query2.close;

schaltung:= char(39) + combobox1.text + char(39); { hier kann man auch auf itemindex gehn spielt hier keine rolle }

query2.sql.add('select *' + 'from auto' + where Getriebe' + '=' + schaltung);
query2.open;
query2.active:=true;
end;
Bekommen immer das Problem das er meistens das ='Automatik' (hier kann auch ein anderer Wert stehn) als ungültiges Schlüsselwort anzeigt, oder nur das = als ungültiges Schlüsselwort....

haben viel probiert und mussten oben den String schon in viele ' ergänzen damit er die anderen nicht als ungültig anzeigt.

Weiss einer wo der Fehler ist?

[edit=MrSpock]Delphi Codes eingefügt. Mfg, MrSpock[/edit]

GuenterS 31. Mai 2005 20:50

Re: Ungültiges Schlüsselwort
 
Zitat:

Zitat von struppelohr
Habe das gleiche Problem, arbeiten mit Delphi 5 und einem MySQL Server sowie der ZeosKomp.

procedure btnclick....

var schaltung : string;

begin
query2.active:=false;
query2.close;

schaltung:= char(39) + combobox1.text + char(39); { hier kann man auch auf itemindex gehn spielt hier keine rolle }

query2.sql.add('select *' + 'from auto' + where Getriebe' + '=' + schaltung);
query2.open;
query2.active:=true;
end;

Bekommen immer das Problem das er meistens das ='Automatik' (hier kann auch ein anderer Wert stehn) als ungültiges Schlüsselwort anzeigt, oder nur das = als ungültiges Schlüsselwort....

haben viel probiert und mussten oben den String schon in viele ' ergänzen damit er die anderen nicht als ungültig anzeigt.

Weiss einer wo der Fehler ist?

Meist hilf es wenn Du dir den zusammengestoppelten SQL String anschaust. In Deinem SQL Statement fehlen auch ein ', aber ich denk das ist hier beim Posten verlorengegangen.

marabu 31. Mai 2005 22:10

Re: Ungültiges Schlüsselwort
 
Zitat:

Zitat von struppelohr
Habe das gleiche Problem, arbeiten mit Delphi 5 und einem MySQL Server sowie der ZeosKomp.

So könnte es vielleicht gehen:

Delphi-Quellcode:
procedure btnclick
const
  sql = 'select * from auto where getriebe = ''%s''';
begin
  query2.sql.text := Format(sql, [ComboBox1.Text]);
  query2.open;
end;
Grüße vom marabu

Sharky 1. Jun 2005 06:55

Re: Ungültiges Schlüsselwort
 
Hai struppelohr,

ich kann es nur immer wiederholen. Versucht eure SQL-Befehle mit Parametern aufzubauen. Dann habt ihr wesentlich weniger Probleme ;-)

Hier einmal ein Beispiel mit einigen Anmerkungen zu deinem Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  schaltung: string;
begin
  //  query2.active:=false; // Entweder aktive := false ODER .close
  query2.Close;
  schaltung := combobox1.Text; // Durch die Übergabe als Parameter sind die ' überflüssig
  query2.SQL.Clear; // Wenn man mit .Add arbeitet sollte man den SQL.Text vorher löschen
  query2.sql.add('select * from auto where Getriebe = :getriebe');
  query2.ParamCheck := True; // Parameterverarbeitung einschalten
  query2.ParamByName('getriebe').AsString := schaltung; // Parameter mit Wert füllen
  query2.Open;
  //  query2.active:=true; // Siehe oben
end;

struppelohr 1. Jun 2005 08:46

Re: Ungültiges Schlüsselwort
 
DAnke Euch beiden. ( man man der Sharky is n Frühaufsteher ;) )

Nun leuchtet mir vieles ein, jedoch wenn ich dein Bsp nehme Sharky, erhalte ich Fehlermeldung ungültiges Schlüsselwort auto.

Habe aber geschaut die Tabelle heisst auto und ist auch alles richtig per Datasource etc verknüpft, er zeigt mir ja im dbgrid alles an...

wie kann das denn jetzt zusammen hängen?

und nochmals vielen dank

marabu 1. Jun 2005 08:57

Re: Ungültiges Schlüsselwort
 
Wenn sich deine Version von MYSQL an auto stört, dann probiere es mal mit "auto".

marabu

Sharky 1. Jun 2005 09:06

Re: Ungültiges Schlüsselwort
 
Zitat:

Zitat von struppelohr
....erhalte ich Fehlermeldung ungültiges Schlüsselwort auto....

Hmmm.... geht bei mir ohne Probleme.

Aber, so ganz am Rande... ich würde in der Tabelle nicht die Bezeichnung des Getriebes speichern sonder die ID als Forenkey auf eine extra Tabelle für die Getriebearten.


@marabu: "auto" würde eine Exception auslösen. Bei mySQL ist der Syntax : `auto`

shmia 1. Jun 2005 09:34

Re: Ungültiges Schlüsselwort
 
Zitat:

Zitat von marabu
Wenn sich deine Version von MYSQL an auto stört, dann probiere es mal mit "auto".

Hier greift die goldene Regel für alle Datenbankprogrammierer:
"Niemals reservierte Schlüsselwörter benützen, auch wenn es möglich wäre"
Grund:
falls später mal der Bedarf entsteht, mit externen Werkzeugen (z.B. M$ Access oder Data Mining Tools)
auf die Datenbank zuzugreifen, gibt es sicher Probleme.
Also die Tabelle von auto nach Fahrzeuge umbenennen und gut.

barf00s 1. Jun 2005 11:34

Re: Ungültiges Schlüsselwort
 
an das 'true' könntest ja auch über ein "BoolToStr(frmFoos.cbBar.Checked, True)" herannkommen :) dann könnst das so wies is in dein sSql einbaun

struppelohr 2. Jun 2005 11:18

Re: Ungültiges Schlüsselwort
 
so sqlstring läuft, im editor zeigt er mir genau an was sache ist, auch dank der namens änderung der tabelle :)

Nur nun refresht er mir nicht mehr den dbgrid, hab es eigentlich über navigatorbtn click auf refresh doch nun stürzt das prog nicht ab, aber es passiert auch nichts

Das grid sollte ja eigentlich nach der sql abfrage nur noch die zeilen zeigen mit getriebe = automatik oder was auch immer tut er nicht, nur im editor :(

gibts da n trick?!

und schon mal mega viel danke :)

dbnavigator2.btnclick(nbrefresh);
dbgrid3.DataSource:=Datasource2;

muss ich da noch was open closen?

barf00s 2. Jun 2005 11:27

Re: Ungültiges Schlüsselwort
 
"muss ich da noch was open/closen"

naja, anstatt zu fragen, kann mans doch auch einfach mal probieren :P </senf>

struppelohr 2. Jun 2005 13:19

Re: Ungültiges Schlüsselwort
 
ja lol aber was denn?

wenn ich etwas in einer anderen tabelle einfüge geht das mittels

dbnavigator1.btnclick(nbpost);
dbnavigator1.btnclick(nbrefresh);

jedoch geht das ja nich bei der suche :(

gibts nich n kleinen tip?! :) *büdde*

Sharky 2. Jun 2005 13:22

Re: Ungültiges Schlüsselwort
 
An irgendeiner Stelle wirst Du doch die Parameter für deine SQL-Abfrage setzen?
Danach einfach ein .Open und gut ist.

struppelohr 2. Jun 2005 13:27

Re: Ungültiges Schlüsselwort
 
Sharky du bist mein Big Fish im TEich :)

Funktioniert aber leider nicht...

uach nicht so :/

procedure TForm1.BitBtn3Click(Sender: TObject);
var
schaltung: string;
begin
if ComboBox1.text='Handschaltung' then schaltung:=' Gang'
else schaltung:=ComboBox1.Text;
Query2.sql.clear;
Query2.SQL.add('Select * from fahrzeug where Getriebe like '+chr(39)+schaltung+chr(39));
Query2.Open;
end;

dein quellcode geht ja aber macht auch da stop :(

problem ist ja das grid müsste ja automatisch refreshen aber das tut es nicht :/


vermute es leigt an der db, denn alle andern tabellen funzen ja :/
werde es nue machen und dann posten ob es geht:)

struppelohr 7. Jun 2005 10:18

Re: Ungültiges Schlüsselwort
 
Liste der Anhänge anzeigen (Anzahl: 2)
ALso finde den fehler nicht, es muss ein Programmier-Fehler sein und bestimmt ein ganz dummer :/
Habe alles neu gemacht und DB neu doch es ist immer das gleiche :(

Ein Kunde kann ohne Probleme eingefügt werden, und wird sofort im DBgrid angezeigt, bei den Autos ist das nicht der fall :/ Und eine Selectirung funzt auch nicht, man drückt auf den Button, doch nichts passiert ;/

hier mal der gesamte code

PS: weiss ist sehr mikrig der coder aber mittel zum Zweck :&


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