Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Filter oder SQL? (https://www.delphipraxis.net/103687-filter-oder-sql.html)

Privateer3000 20. Nov 2007 08:05

Datenbank: dbf • Zugriff über: bde

Filter oder SQL?
 
Hi folks,

ich möchte mit Hilfe von Daten aus einer Tabelle
mehrere Panels mit Buttons kreiern.
Nun müssten die Daten aber vorher gefiltert werden.
D.h. aus der Spalte "Gruppe" werden die Panels bestückt.
Was ist nun effizienter, vorher jeweils einen Filter auf die
Tabelle setzen und dann für die entprechende Gruppe Buttons
erstellen, dann die nächste Gruppe usw?
Oder per SQL das ganze aus einem query?

Grüße

angos 20. Nov 2007 08:32

Re: Filter oder SQL?
 
so ganz verstehe ich die frage nicht,

sollen jeweils alle "Gruppen" (btw genauer erläutern ;) ) nacheinander erstellt werden, oder eine Gruppe bei Bedarf?

QuickAndDirty 20. Nov 2007 08:51

Re: Filter oder SQL?
 
Wenn du einen Index darauf hast und es sich nicht um einen SQL Server handelt wo deinen Daten herkommen ist das Beste ein Range zu setzen. Wenn kein Index Drauf ist must du filtern.
Wenn es sich dabei um eine SQL Datenbank handelt solltest du immer über SQLs Filtern evtl. mit Parmeter-SQLs um es zu beschleunigen.

Privateer3000 20. Nov 2007 09:26

Re: Filter oder SQL?
 
Danke Leute,

zur Erläuterung: In der dbf-tabelle stehen
mehrere einträge die zu bestimmten Gruppen
gehören. zB Gruppe1=12 Datensätze usw.
Nun sind 5 Panels mit Buttons zu besetzen.
Panel1 mit Buttons die in Spalte "Gruppe" Panel1
zu stehen haben. usw

Jelly 20. Nov 2007 09:33

Re: Filter oder SQL?
 
Da es sich um DBF handelt, läuft das Ganze eh lokal. Es sollte somit keine Rolle spielen.
Zitat:

Zitat von QuickAndDirty
Wenn es sich dabei um eine SQL Datenbank handelt solltest du immer über SQLs Filtern evtl. mit Parmeter-SQLs um es zu beschleunigen.

Das kann man so pauschal auch nicht sagen...
Wenn du 100 mal filtern willst, jagdst du 100 mal eine Anfrage zum DB Server. Je nach Abfrage, kann das unter Umständen einiges an Zeit nehmen. Es kann sich anbieten, alle 100 Abfragen in einer zu vereinen, also anstatt
SQL-Code:
select bla from Tabelle where kriterium = 1
dann lieber
SQL-Code:
select bla from Tabelle where kriterium in (1,2,3,4,5)
Letztere Abfrage sollte wesentlich schneller sein als 5 mal hintereinander die erste.

Filtern kannst du dann schön lokal auf die Spalte Kriterium.

Privateer3000 20. Nov 2007 09:51

Re: Filter oder SQL?
 
Danke Jelly,
dann müsste das so aussehen,dass ich
so vorgehen muss:
filter setzen, schleife für buttons,filter deaktivieren
usw.

Privateer3000 20. Nov 2007 14:36

Re: Filter oder SQL?
 
Liebe Gemeinde,
wie funktioniert das mit dem Filter?
Wird der Filter nun auf Spaltennamen gesetzt
oder auf Begriffe die in der Tabelle stehen?

Wenn sql, dann wird wie vorgegangen?
Werden die Ergebnisse erst in query
(Stringlist) gepackt?

Bitte helft mir mal dabei!

hoika 20. Nov 2007 14:45

Re: Filter oder SQL?
 
Hallo,

Filter wird auf Eintrag gesetzt,
es war hier gerade nen TThread dazu, Bsp.

Filter:= 'name=''Test'''

Zu SQL.
Ich würde unter dbf nicht sql nehmen,
es wird intern immer in umgebaut in TTable-Befehle.

Von Pdx weiss ich (bei grossen Datenmengen)
TTable schnell
TQuery langsam

Wenn du nur kleine Datenmengen hast,
könntest du sogar alle Daten "laden"

Delphi-Quellcode:
Table.First;
while not Table.EOF do
begin
 // hier Gruppe auslesen
 // prüfen ob schon da und wenn nicht in ein TStringList
  Table.Text;
end;
Du ersparst dir einen Hauf SetRange


Im Zweifelsfall mit ne grosse DB nehmen und
ausprobieren.

Solltest du vorhaben, dass ganze mal auf nen richtigen SQL-Server zu packen,
dann heisst es nat.
- zuerst sql probieren (group b<)
- wenn zu langsam -> TTable


Heiko

Privateer3000 20. Nov 2007 15:23

Re: Filter oder SQL?
 
Danke hoika,

was bedeutet:
Zitat:

// prüfen ob schon da und wenn nicht in ein TStringList
ich meine das dies doch sowieso in eine Stringlist muss
oder nicht?
konkret:
Delphi-Quellcode:
for i := 0 to matenz -1  do
begin
labeltag:=t1.Fields[2].Value;
  Spalte := i mod 6;
  Zeile := i div 6;
  aLabel:=TXiButton.Create(Self);
  aLabel.Parent:=hot;
  aLabel.Visible:=True;
  aLabel.Left:=Spalte*82;
  aLabel.Top:=Zeile*35;
  alabel.Width:=80;
  alabel.Height:=33;
  aLabel.ColorScheme:=csSky;
  aLabel.Caption:=labeltag;
  aLabel.Tag:=t1.fields[0].value;
  aLabel.OnClick:=p1_1Click;
  t1.Next;
end;
sieht es so aus. matenz ist ein count aus einem
inifile. So läuft es bis jetzt.
t1.fields sind daten aus der gleichen Tabelle wo
auch die gruppen. field[0] steht ein Integer,
field[2] ein string für den Buttoncaption.
Soviel zur Erklärung für obigen quellt.
Es werden also alle in dem inifile stehenden ausgelesen
und Button erstellt. Jetzt soll das umgebaut werden
auf mehrere Buttonfelder(Panels) und entsprechend
zugeordnet werden.

Grüße

Jelly 20. Nov 2007 15:37

Re: Filter oder SQL?
 
:shock:
Arbeitest du jetzt mit INI Files oder einer Datenbank?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

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