Entwickler-Ecke

Datenbanken - Query-Problem


D. Annies - So 28.06.09 14:52
Titel: Query-Problem
Hi, Delpher,

ich brauche mal Hilfe bei dem folgenden Query-Befehl, er ist noch fehlerhaft:


Delphi-Quelltext
1:
2:
3:
4:
query1.SQL.Text :=
      format('select geschlecht, punkte, klasse, name, vorname from "%s" S '  +
             'where S.klasse like quotedstr(form1.ListBox1.Items[form1.ListBox1.itemindex][1]) ' +
             'order by S.geschlecht, S.punkte, S.klasse, S.name, S.vorname', [Table1.tablename]);


Wie ist es richtig?
Gruß, Detlef


Martok - So 28.06.09 15:01

Willst du jetzt "richtig" oder "funktioniert"?

Ersteres wären Prepared Statements mit Variablen, letzteres wäre das:


Delphi-Quelltext
1:
2:
3:
4:
5:
query1.SQL.Text :=
      format('select geschlecht, punkte, klasse, name, vorname from "%s" S '  +
             'where S.klasse like ''%s'' ' +
             'order by S.geschlecht, S.punkte, S.klasse, S.name, S.vorname',
            [Table1.tablename, quotedstr(form1.ListBox1.Items[form1.ListBox1.itemindex][1])]);


D. Annies - So 28.06.09 15:20

Danke für deine schnelle Antwort, aber leider Fehlermeldung:
Ungültiges Schlüsselwort in Zeile 1 Symbolstring 7''

wenn ich Klasse 7, also 7a bis 7e prüfen will.


mkinzler - So 28.06.09 15:35

Ich würde das per (SQl-)Parameter lösen:

Delphi-Quelltext
1:
2:
3:
4:
5:
query1.SQL.Text :=
      format('select geschlecht, punkte, klasse, name, vorname from %s S '  +
             'where S.klasse like :klasse' +
             'order by S.geschlecht, S.punkte, S.klasse, S.name, S.vorname', [Table1.tablename]);
Query1.ParamByName('klasse').Value := form1.ListBox1.Items[form1.ListBox1.itemindex][1];


D. Annies - So 28.06.09 16:17

Hi, Marcus,

tatsächlich muss oben .. from "%s" S ... stehen -

und jetzt muss ich noch rauskriegen, wieso in der query 0 Datensätze stehen.
Danke erstmal.

Gruß, Detlef


D. Annies - So 28.06.09 16:53

Gelöst:

Hinter dem Parambyname ... muss noch + '%' als Joker stehen, damit alle Parallelklassen bearbeitet werden! JuHu,

Detlef