Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Syntax bzw. Sql Problem (https://www.delphipraxis.net/34079-syntax-bzw-sql-problem.html)

pjuk 17. Nov 2004 07:17


Syntax bzw. Sql Problem
 
Hallo,

habe folgendes Problem und hoffe auf euren Rat :

Ich habe auf meinem Form eine Combobox und eine DBlookuplistbox. In der Combobox will ich eine Abteilung auswählen und dann mir in der Lookuplistbox die zugehörigen Mitarbeiter anzeigen lassen. Hab eine Access Datenbank in der die ganzen Werte drine stehen. Dachte mir aber dass ich am besten die Abteilungen als Items schon fest der Combobox zuweise. Habs mit SQl versucht, kommt aber leider nen Fehler :
'SyntaxFehler ( fehlender Operator) in Abfrageausdruck 'Abteilung = 'MeinWERT' ' - Prozess wurde angehalten.

Hier mein Schnipsel - Code :

Code:
procedure Tnewuser.ComboBox1Change(Sender: TObject);
  var sqlstr: string;
begin
     if Combobox1.Text <> '' then
     begin
        ADODataset1.Active := false;
        ADODataset1.Close;

     sqlstr := 'select User, Vorname, Name '
        + 'from 'Tabelle1 '
        + 'where ';
          sqlstr := sqlstr + 'Abteilung = ' + Combobox1.Text;
     end;
        ADODataset1.CommandText := sqlstr;
        ADODataset1.Open;
        ADODataset1.Active := True;
     end;

Meine Frage ist jetzt, wie kann ich mir dann genau die Werte der ausgewählten Abteilung in dem DBLookuplistbox-Feld anzeigen lassen, also diese heraus Filtern?
bzw.
Was hab ich Sql mäßig falsch gemacht und wie kann ich den Fehler beheben?!

danke.

Sharky 17. Nov 2004 07:27

Re: Syntax bzw. Sql Problem
 
Hai pjuk,

ändere mal diese Zeile:
Delphi-Quellcode:
          sqlstr := sqlstr + 'Abteilung = ' + Combobox1.Text;
in diesen Code:
Delphi-Quellcode:
          sqlstr := sqlstr + 'Abteilung = ' + QuotedStr (Combobox1.Text);

pjuk 23. Nov 2004 07:16

Re: Syntax bzw. Sql Problem
 
Hey Sharky,

dein Lösungsvorschlag scheint zu funktionieren! Nun bekomme ich aber noch eine Fehlermeldung von meinem ADODataset dass die Filder User, Name , Vorname nicht vorhanden seien. Muss ich diese zuerst in der box als datasource hinterlegen?

grüße

MrSpock 23. Nov 2004 07:19

Re: Syntax bzw. Sql Problem
 
Hallo pjuk,

heißt die Tabelle tatsächlich Tabelle1?

pjuk 23. Nov 2004 07:23

Re: Syntax bzw. Sql Problem
 
nein, die hat nen anderen namen Mr. Spock, hab das aber geändert. Darf aus rechtlichen Gründen hier nur keine Daten angeben, deswegen Tabelle1.
Hättest du eine Idee wie ich das machen könnte? also die Mitarbeiter einer Abteilung filtern lassen indem ich in der Combobox eine Abteilung auswähle?

MrSpock 23. Nov 2004 08:13

Re: Syntax bzw. Sql Problem
 
Hallo pjuk,

die beiden Anweisungen:
Delphi-Quellcode:
ADODataset1.Active := false;
        ADODataset1.Close;
machen das gleiche. Eine von beiden kannst du löschen.

USER ist ein Schlüsselwort und sollte nicht als Feldname benutzt werden. Wenn sich das nicht mehr ändern lässt, solltest du USER in doppelte Anführungszeichen setzen.

Außerdem solltest du die Query nicht zweimal öffnen. Dann sollte es mit dem Tip von Sharky funktionieren.

pjuk 26. Nov 2004 10:48

Re: Syntax bzw. Sql Problem
 
Hey!

Hab nun folgendes geändert :

Hab an Stelle von einer Combobox eine Dblookupcombox genommen und ihr als Listsource gleich meine Abteilung zugeordnent.

Nun habe ich jedoch noch folgendes Problem : Ich wähle eine Abtielung aus und mein prog schreibt mir in meine listboxen dann nicht den wert der zugeordnenten Mitarbeiter der abteilung, sondern den String :(

hier mein code :
Code:
procedure Tzuordnen.DBLookupComboBox1Enter(Sender: TObject);

  var sqlstr: string;
  begin
     if DbLookupCombobox1.Text <> '' then
     begin
       //ADODataset1.Active := false;
        //ADODataset1.Close;

  sqlstr := 'select Vorname, Name '
        + 'from landat '
        + 'where ';
        sqlstr := sqlstr + 'Abteilung = '' '+ QuotedStr (DbLookupCombobox1.Text);
       end;
        SrcList.Items.Text := sqlstr;
    end;

Glaub ich hab falsche Eigenschaft genommen, jedoch welche ist die richtige?! Wie bekomme ich meinen Wert dann so gefiltert dass ich damit weiter arbeiten kann?


greetz


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