Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Konfuse Anweisungen (https://www.delphipraxis.net/114324-konfuse-anweisungen.html)

Svenkan 23. Mai 2008 12:13

Datenbank: dBase • Zugriff über: TQuery

Konfuse Anweisungen
 
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-Quellcode:
 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-Quellcode:
  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..

Olli73 23. Mai 2008 13:13

Re: Konfuse Anweisungen
 
Ich weiß nicht, ob ich dich richtig verstanden habe, aber ich denke du suchst so was wie
SQL-Code:
... WHERE ... AND
(
(BEMER_SCH Like '%ällt aus%' AND S < '5') OR
(BEMER_SCH NOT Like '%ällt aus%') OR
(BEMER_SCH is NULL)
)
Trotzdem solltest mal dein Datenbankmodell überdenken.

Namenloser 23. Mai 2008 13:35

Re: Konfuse Anweisungen
 
Du könntest es auch mit Regex probieren:
SQL-Code:
WHERE NOT BEMER_SCH REGEXP '/fällt aus/i';
Ohne Gewähr, weil ich schon länger nicht mehr mit SQL geschweige denn Regex gearbeitet habe. Kann sein, dass da irgendwo ein Syntaxfehler ist.

mkinzler 23. Mai 2008 13:39

Re: Konfuse Anweisungen
 
Ich glaube nicht das LocalSQL (BDE) reguläre Ausdrücke versteht.

Namenloser 23. Mai 2008 13:44

Re: Konfuse Anweisungen
 
Das weiß ich leider auch nicht, weil ich bis jetzt zugegebenermaßen nur mit MySQL gearbeitet habe.


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