Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche über mehrere Tabellen (https://www.delphipraxis.net/94862-suche-ueber-mehrere-tabellen.html)

BW19 28. Jun 2007 11:58

Re: Suche über mehrere Tabellen
 
DANKE :-)

Delphi-Quellcode:
  with QueryTemp do
  begin
    Active       := False;

     DatabaseName := asDataDir;

     SQL.Clear;

      DecodeDate(DateTimePickerVon.Date, wYearVon, wMonthVon, wDayVon);
      DecodeDate(DateTimePickerBis.Date, wYearBis, wMonthBis, wDayBis);



      if ((wYearBis - wYearVon) >= 0) then
      begin
        for iDateiJahr := wYearBis downto wYearVon do
        begin
          if ((iDateiJahr = wYearBis) and ((wYearBis - wYearVon) > 0)) then
          begin
            wMonthBisBerechnung := wMonthBis;
            wMonthVonBerechnung := 1;
          end
          else if (iDateiJahr = wYearVon) then
          begin
            wMonthBisBerechnung := 12;
            wMonthVonBerechnung := wMonthVon;
          end
          else if ((wYearVon = wYearBis) and ((wYearBis - wYearVon) = 0)) then
          begin
            wMonthBisBerechnung := wMonthBis;
            wMonthVonBerechnung := wMonthVon;
          end
          else
          begin
            wMonthBisBerechnung := 12;
            wMonthVonBerechnung := 1;
          end;

          for iDateiMonat := wMonthBisBerechnung downto wMonthVonBerechnung do
          begin
            sDateiSuchen  := cs_ProtBuch + cs_ProtBuchTrennzeichen + IntToStr(iDateiMonat) + cs_ProtBuchTrennzeichen + IntToStr(iDateiJahr) +'.DB';
            if FileExists(PfadErweiternAllgemein(asDataDir, True) + sDateiSuchen) then
            begin
              if SQL.Count = 0 then
                SQL.Add('SELECT * FROM "' + sDateiSuchen + '"')
              else
              begin
                SQL.Add('UNION');
                SQL.Add('SELECT * FROM "' + sDateiSuchen + '"')
              end;
            end;
          end;
        end;
      end
      else
      begin
        MessageDlg('Ungültige Datumseingabe', mtError, [mbOK], 0);
        TabellenInEineTabelleKopieren := False;
        sTabelle                     := '';
        Exit;
      end;
Hoff das is verständlich.....
Mit dem Algo is alles abgedeckt was ich brauche :-) :dancer:
Das alles passiert in ner Funktion die die verschiedenen Tabellen in eine Temp Tabelle hineinkopiert!

Gruss BW

shmia 28. Jun 2007 12:11

Re: Suche über mehrere Tabellen
 
Dann verwende doch UNION ALL, damit die BDE nicht anfangen muss zu sortieren.

BW19 28. Jun 2007 14:10

Re: Suche über mehrere Tabellen
 
Zitat:

Zitat von shmia
Dann verwende doch UNION ALL, damit die BDE nicht anfangen muss zu sortieren.

Ja aber genau das soll ja nicht so sein das er alle Tabellen anhängt nur die die relevant sind

Oder meinste was anders?

Gruss BW

DeddyH 28. Jun 2007 14:13

Re: Suche über mehrere Tabellen
 
Bitte erst nachlesen, dann meckern ;) UNION filtert Dubletten automatisch heraus (so wie DISTINCT), während UNION ALL dies nicht tut.

BW19 28. Jun 2007 14:32

Re: Suche über mehrere Tabellen
 
O_o

Ich kann und will mich hier nich Battlen mit euch Profis ;)
und meckern tu ich ja nich hat sich ja nur die frage gestellt wieso Union All
weils so wie ichs etz mach funktionierts ja richtig nett :drunken:

Nachtrag:

Heeee Union All is ja richtig geil :D gerade nachgelesen in meinem Schlauenbuch :P

Verwenden Sie das Schlüsselwort UNION, um die Ergebnisse von zwei SELECT-Anweisenungen zu einer Ergebnismenge zu kombinieren. Alle doppelten Zeilen werden aus dem engdgültigen Ergebnis entfernt. Verwenden Sie UNION ALL, um doppelte Zeilen zu bewahren

respekt ^^ erst lesen dann schreiben

Wobei ich dazu sagen muss das es höchstwahrscheinlich keine doppelten geben wird Da in meiner Protokoll-Tabelle 2 Felder sind des eine is ne Einfahrt und das andere ne Ausfahrt beide DateTime :) und dann noch Das Feld Kartendaten Das den Kompletten spuraufbau einer EC-Karte hat.

Aber sicher ist sicher! Hab das Union All eingefügt zu Entlastung der BDE das natürlich logisch klingt wenn mans weis ;) :duck:

Danke ihr seid wiedermal super und ich doof :-)

Aber bin ja lernfähig zumindest hab ihr mich soweit gebracht damit ich nachlese :P

Gruss BW


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.
Seite 2 von 2     12   

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