Autor Beitrag
peppi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65


delphi 7
BeitragVerfasst: Mo 31.03.03 13:13 
Hallo,

hab ein Problem mit meiner RadioGroup. Ich möchte bei klicken der einzelnen Auswahlfelder meiner Query verschiedenen SQL-Text zuweisen.

Hab das folgendermaßen geschrieben:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
   with Query1 do begin
    close;
     with SQL do begin
      clear;
     ADD('select * from tabelle');
     ADD('where NUMMER LIKE ' + QuotedStr(Edit1.Text + '%'));
     ADD('and NUMMER2 = ' + QuotedStr(Edit2.Text+ ''));
  case RadioGroup1.ItemIndex of
   1:  ADD('and NUMMER not in ( select NUMMER from tabelle where
                DATUM IS NOT NULL)'); 
       ADD('and NAME = ' + QuotedStr(Edit2.Text+ ''));
       end;
 Add ('order by DATUM, NUMMER, NAME');
end;
Query1.Open;
end;
...


Beim ausführen bekomme ich immer die Fehlermeldung:

"Konstantenausdruck erwartet". Kann man mit der Case-Anweisung nicht mehrere Zeilen zuordnen? Sollte ich hier lieber die if Anweisung nehmen?
Wollte lieber bei Case bleiben aus Gründen der Übersichtlichkeit.

LG Jana!!
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 31.03.03 13:24 
ausblenden Quelltext
1:
2:
1:  ADD('and NUMMER not in ( select NUMMER from tabelle where DATUM IS NOT NULL)'); 
       ADD('and NAME = ' + QuotedStr(Edit2.Text+ ''));


In diesen Zeilen steckt der Fehler. Bei case 1 führt er die Add-Anweisung aus, dann muss danach aber ein anderer Fall kommen, also 2: und die dazugehörige Anweisung. Die ganze case-Anweisung muss dann mit end; abgeschlossen werden.

Willst Du mehrere Anweisung bei case 1 ausführen, musst Du diese in begin ... end; einbauen, also etwa so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
1:  begin
       ADD('and NUMMER not in ( select NUMMER from tabelle where 
                DATUM IS NOT NULL)'); 
       ADD('and NAME = ' + QuotedStr(Edit2.Text+ '')); 
     end;
2: {eine andere Anweisung oder Anweisungsblock}
end;


Dann müsste es funktionieren


Zuletzt bearbeitet von UGrohne am Mo 31.03.03 13:25, insgesamt 1-mal bearbeitet
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 31.03.03 13:24 
klar, geht alles ;)

und zwar nach folgendem Prinzip:


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
case RadioGroup.ItemIndex of
0: begin
    [...]
    end;
1: begin
    [...]
    end;
end;

fertich!

fragen? fragen!

mfg


//EDIT
WAAAHH.... zu langsam.... heul... :(

Moderiert von user profile iconUGrohne: Code-Tags verbessert (hehe, war schneller!)
peppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65


delphi 7
BeitragVerfasst: Mo 31.03.03 13:30 
Ahhh... Super !!!

Danke euch BEIDEN für die Hilfe :D

LG Jana!!!