Einzelnen Beitrag anzeigen

Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#53

AW: bin am verzweifeln... select abfragen miteinander kombinieren???

  Alt 16. Jun 2011, 15:10
so es hat endlich funktioniert. hab auch ein bisl dynamik schon reingebaut. dank dir für deine geduld. das mit dem left join das hätte mir gestern mal jemand sagen müssen...

Delphi-Quellcode:
procedure anzeigen(befehl: String);
begin
  dm.dsetbilder.Close;
  dm.dsetbilder.SelectSQL.Clear;
  if befehl = 'alleanzeigenthen
  begin
    dm.dsetbilder.SelectSQL.Add('select * from bilder b order '+
      'by upper(b.name)');
  end
  else
  begin
    dm.dsetbilder.SelectSQL.Clear;
    dm.dsetbilder.SelectSQL.Add('select b.* from bilder b left join '+
        'zwbildertags x on x.bildid=b.bid left join tags t '+
        'on t.tid=x.tagid left join '+
        'zwbilderprogramme z on z.bildid=b.bid left join programme p '+
        'on p.pid=z.programmid ');

// nur bild
    if frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and
      not frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where b.name containing upper(:WERT) ');

// nur programm
    if not frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
      not frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where Upper(p.namep) containing UPPER(:WERT)');

// nur tag
    if not frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and
      frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where Upper(t.namet) containing UPPER(:WERT)');

// bild und programm
    if frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
      not frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where (p.namep containing UPPER(:WERT) '+
        'or b.name containing upper(:WERT)) order by upper(b.name)');

// bild und tag
    if frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and
      frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where (t.namet containing UPPER(:WERT) '+
      'or b.name containing upper(:WERT)) order by upper(b.name)');

// programm und tag
    if not frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
      frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where (t.namet containing UPPER(:WERT) or '+
        'p.namep containing UPPER(:WERT)) order by upper(b.name)');

// alle 3 zusammen
    if frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
      frmhaupt.CheckBox3.Checked then
      dm.dsetbilder.SelectSQL.Add('where (t.namet containing UPPER(:WERT) or '+
        'p.namep containing UPPER(:WERT) or b.name containing upper(:WERT)) '+
        'order by upper(b.name)');

    dm.dsetbilder.ParamByName('WERT').AsString := befehl;
  end;
  dm.dsetbilder.Open;
  if dm.dsetbilder.IsEmpty then showmessage('Keine Icons gefunden');
end;
  Mit Zitat antworten Zitat