so vielen dank erstmal an alle. wollte jetzt das von deddyh ausprobieren doch spätestens wenn ich das zweite kästchen anclicke bekomme ich die fehlermeldung:
dynamic
sql error code = -104
as approximate floating-point values in
sql dialect1, but as 64-bit.
weiß jemand was das bedeutet?
hab ich das jetzt richtig eingebaut?
Delphi-Quellcode:
[CODE]
procedure anzeigen(n,p,t: boolean; befehl: String);
var
bid2: String;
haswhere: boolean;
const ClauseBegins: array[Boolean] of string = ('WHERE', 'OR');
begin
bid2:= bid;
dm.dsetbilder.Close;
dm.dsetbilder.SelectSQL.Clear;
if befehl = 'alleanzeigen' then
begin
dm.dsetbilder.SelectSQL.Add('select * from bilder b order '+
'by upper(b.name)');
end
else
begin
haswhere:= false;
dm.dsetbilder.SelectSQL.Text:= 'SELECT * FROM Bilder b ';
if n then
begin
dm.dsetbilder.SelectSQL.Add(Format('%s name containing upper(:WERT)',
[ClauseBegins[HasWhere]]));
HasWhere := true;
end;
if p then
dm.dsetbilder.SelectSQL.Add(Format(' %s (select * from bilder c where c.bid in '+
'(select c1.bid from BILDER c1 ' +
'join zwbilderprogramme z on z.bildid = c1.bid join programme t '+
'on t.pid = z.programmid ' +
'where Upper(t.namep) containing UPPER(:WERT)))',
[ClauseBegins[HasWhere]]));
HasWhere := true;
if t then
dm.dsetbilder.SelectSQL.Add(Format(' %s (select * from bilder b where b.bid in '+
'(select b1.bid from BILDER b1 ' +
'join zwbildertags z on z.bildid = b1.bid join tags t on t.tid = z.tagid '+
'where Upper(t.namet) containing UPPER(:WERT)))',
[ClauseBegins[HasWhere]]));
dm.dsetbilder.ParamByName('WERT').AsString := befehl;
end;
dm.dsetbilder.Open;
dm.dsetbilder.Locate('bid',bid2,[]);
showmessage(dm.dsetbilder.SelectSQL.Text);
if dm.dsetbilder.IsEmpty then showmessage('Keine Icons gefunden');
end;