Entwickler-Ecke

Datenbanken - Problem mit 'Like'-Abfrage


Svenkan - Fr 23.05.08 12:40
Titel: Problem mit 'Like'-Abfrage
Hallo Leute!
Folgendes Problem: Ich möchte, dass in meinen Plänen Einträge ausgeblendet werden, die in der Schülerbemerkung den Eintrag 'fällt aus' beinhalten. Nun ist es so, dass dies nicht immer so eingetragen wird in der Form (z.B. 'Diese Stunde (xxxx) fällt aus' etc.).


Delphi-Quelltext
1:
2:
3:
4:
 if ausfallstunden_weg then
  ausfall_sql:='AND NOT BEMER_SCH Like ''%ällt aus%'' AND S >="'+IntToStr(ausfallstunden_weg_wann)+'"'
 else
  ausfall_sql:='';


Problem 1: Es werden alle Einträge ausgeblendet, die diesen String beinhalten oder gar keine Bemerkung.
Problem 2: Wie verknüpfe ich die Bedingungen nun so miteinander, dass sich die AND-Bedingung mit den betroffenen Ausfallstunden NUR auf die hier dargestellte Zeile bezieht und nicht auf die restlichen Abfragen?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM "VT'+sj+'"';
  Query1.SQL.Add('WHERE S NOT IN ("M","E","H") '+abteilung+' AND DATUM=:today');
  if ausfallstunden_weg then Query1.SQL.Add(ausfall_sql);
  Query1.SQL.Add('ORDER BY '+order1);
  Query1.ParamByName('today').Value := today;
  Query1.Open;


Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken..


mikhal - Mo 26.05.08 15:35

Vergesst es, war ein Denkfehler...

Ich habe lange nicht mehr mit BDE gearbeitet, aber so ähnlich sollte es gehen:


Delphi-Quelltext
1:
2:
3:
4:
if ausfallstunden_weg then 
  ausfall_sql:='AND NOT UPPER(BEMER_SCH) Like ''%FÄLLT AUS%'' AND BEMER_SCH IS NOT NULL AND S >="'+IntToStr(ausfallstunden_weg_wann)+'"' 
 else 
  ausfall_sql:='';


Grüße
Mikhal


mkinzler - Mo 26.05.08 16:35

Ich würde aber trotzdem mit (SQL-)Parametern arbeiten