AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi bin am verzweifeln... select abfragen miteinander kombinieren???
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "DeddyH"
Ein Thema von Serienchiller · begonnen am 15. Jun 2011 · letzter Beitrag vom 17. Jun 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 15. Jun 2011, 12:00
Also Du gibst einen Suchbegriff ein und daraufhin soll ggf. in mehreren Feldern gesucht werden? In dem Fall kannst Du das auch so machen wie weiter oben beschrieben, nur dass statt dem AND dann ein OR verwendet werden muss.

[edit] Allerdings muss das ganze dynamische SQL dann in Klammern, da Du sonst immer alle DS gelistet bekommst. [/edit]

[edit2] Kurz nachgedacht (ungetestet, geht ja nur ums Prinzip):
Delphi-Quellcode:
const
  ClauseBegins: array[Boolean] of string = ('WHERE', 'OR');
var
  HasWhere: Boolean;
begin
  HasWhere := false;
  Query.SQL.Text := 'SELECT * FROM Bilder';
  if cbBla.Checked then
    begin
      Query.SQL.Add(Format('%s Dings = :Dings', [ClauseBegins[HasWhere]]));
      Query.ParamByName(':Dings').Value := EditHallo.Text;
      HasWhere := true;
    end;
  if cbBlubb.Checked then
    begin
      Query.SQL.Add(Format('%s Bums = :Bums', [ClauseBegins[HasWhere]]));
      Query.ParamByName(':Bums').Value := EditHallo.Text;
      HasWhere := true;
    end;
[/edit2]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (15. Jun 2011 um 12:16 Uhr)
  Mit Zitat antworten Zitat
Serienchiller

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

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

  Alt 15. Jun 2011, 12:53
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 = 'alleanzeigenthen
  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;

Geändert von Serienchiller (15. Jun 2011 um 13:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 15. Jun 2011, 12:54
Schon beim Anklicken? Zeig doch mal Deinen Code.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 15. Jun 2011, 13:02
Benutz doch bitte die Delphi-Tags. Was mir auffällt: sobald der Subselect ins Spiel kommt, dürfte das ganze Statement nicht mehr stimmen. Lass Dir doch zur Kontrolle einmal den gesamten m.dsetbilder.SelectSQL.Text ausgeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Serienchiller

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

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

  Alt 15. Jun 2011, 13:09
ich krieg ja schon beim 2. diese fehlermeldung. da brauch ich aber die zwischentabellen. ohne die geht es leider nicht, aber irgendwas mache ich da syntaktisch falsch ich weiß bloß nicht was?

ich weiß ich bin ein schwieriger fall aber bin ja noch relativ anfänger...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 15. Jun 2011, 13:17
Der 2. (if p then) ist ja bereits der Subselect, da fehlt doch noch etwas. Wie gesagt, lass Dir das komplette Statement zur Kontrolle ausgeben.
Delphi-Quellcode:
ShowMessage(dm.dsetbilder.SelectSQL.Text); //ggf. erstmal ein exit; hierhin
dm.dsetbilder.Open;
Übrigens gibt es auch Delphi-Tags (die Schaltfläche mit dem Helm), dann sind auch die Hervorhebungen dabei.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

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

  Alt 15. Jun 2011, 13:21
Wie wäre es denn mit einem View?
etwa so:

Code:
select 'Bild',Bild.ID,Bild.Name from Bild
union
select 'Tag',Tag.ID,Tag.Name from Tag
union
select 'Prog',Programme.ID,Programme.Name
so könnte man ein einheitliches Mäntelchen über die unterschiedlichen Tabellen legen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Serienchiller

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

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

  Alt 15. Jun 2011, 13:28
@p80286
ich suche ja nicht in den mastertabellen sondern in den zwischentabellen, deswegen ist das ja so schwierig.

@deddyh
und ich kann mir den befehl gar nicht ausgeben lassen weil er sich schon gar nicht adden lässt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 15. Jun 2011, 13:32
Wie, lässt sich nicht adden? In diesem Moment ist das doch nichts anderes als eine stinknormale Stringliste. Zur Not kannst Du aber auch temporär eine solche erzeugen, das Statement dort zusammenbauen, Dir das Ergebnis ausgeben lassen, bei Gefallen dem SQL der Query zuweisen und diese ausführen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz