![]() |
Re: Suche über mehrere Tabellen
DANKE :-)
Delphi-Quellcode:
Hoff das is verständlich.....
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; 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 |
Re: Suche über mehrere Tabellen
Dann verwende doch UNION ALL, damit die BDE nicht anfangen muss zu sortieren.
|
Re: Suche über mehrere Tabellen
Zitat:
Oder meinste was anders? Gruss BW |
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.
|
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 07:25 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 by Thomas Breitkreuz