![]() |
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 |
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? |
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. |
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 |
Re: Filter oder SQL?
Da es sich um DBF handelt, läuft das Ganze eh lokal. Es sollte somit keine Rolle spielen.
Zitat:
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:
dann lieber
select bla from Tabelle where kriterium = 1
SQL-Code:
Letztere Abfrage sollte wesentlich schneller sein als 5 mal hintereinander die erste.
select bla from Tabelle where kriterium in (1,2,3,4,5)
Filtern kannst du dann schön lokal auf die Spalte Kriterium. |
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. |
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! |
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:
Du ersparst dir einen Hauf SetRange
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; 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 |
Re: Filter oder SQL?
Danke hoika,
was bedeutet: Zitat:
oder nicht? konkret:
Delphi-Quellcode:
sieht es so aus. matenz ist ein count aus einem
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; 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 |
Re: Filter oder SQL?
:shock:
Arbeitest du jetzt mit INI Files oder einer Datenbank? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 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