Entwickler-Ecke

Datenbanken - Probleme mit logischer Verknüpfung in Abfrage


Luc1fer - So 23.01.11 12:38

Moderiert von user profile iconNarses: Abgetrennt von [url=http://www.delphi-forum.de/viewtopic.php?t=81448]hier[/url].

Hi

Ich poste mal mein Anliegen mit hierher, da es das gleiche Thema ist.

Ich will eine Tabelle Filtern. Solange ich "or" verwende, funktioniert alles prima, aber sobald ich ein "and" mit hineinbringe, kommt der Fehler: "Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitbereiches...".
Ich hab schon versucht sinnvoll zu klammern, aber nichts funktioniert. Hier der Quelltext:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
DataModule1.TbMusikDB.Filter:='(Genre = '+quotedstr(suchgenre)+
  ') and ((Titel like '+quotedstr(suchwort)+') or (Interpret like '+
   quotedstr(suchwort)+') or (Album like '+quotedstr(suchwort)+'))';
   DataModule1.TbMusikDB.Filtered:=True;
   DataModule1.TbMusikDB.Active:=True;
   end


Fehler in den Variablen mit ungültigen Variablen kann ich zu 97% ausschließen, da es ohne das "And" also mit einem "or" funktioniert. Wenn ich die Klammer nach dem "And" weglasse, dann kommt kein Fehler, jedoch macht er dann diese logische Verknüpfung.


Delphi-Quelltext
1:
2:
((Genre = '+quotedstr(suchgenre)+
  '
and (Titel like '+quotedstr(suchwort)+')) or
<-- Doppelklammer nur in Gedanken gesetzt


Tranx - So 23.01.11 15:38

Versuche es doch mal damit:



Delphi-Quelltext
1:
2:
3:
4:
  DataModule1.TbMusikDB.Filter:='(Genre = '+quotedstr(suchgenre)+') and ((Titel = '+quotedstr(suchwort+'*')+') or (Interpret = '+
   quotedstr(suchwort+'*')+') or (Album = '+quotedstr(suchwort+'*')+'))';
   DataModule1.TbMusikDB.Filtered:=True;
   DataModule1.TbMusikDB.Active:=True;


Was macht das "end" in Zeile 6?


Luc1fer - So 23.01.11 16:12

Es kommt der gleiche Fehler und das gepostete ist nur ein Ausschnitt. Das End könnt ihr also vernachlässigen.