![]() |
Re: Via SQL Access DB Tabelle sortieren
Zitat:
|
Re: Via SQL Access DB Tabelle sortieren
eigentlich über einen sql befehl sortieren, aber wenn es auch anders funktioniert dann ist doch alle ok. und es funktioniert auch anders.
eine frage aber ich jetzt bloß noch wie kann ich in einer Tabelle suchen. ich will den Filter nicht verwenden der soll so langsam sein. zum beispiel in den Feld Name nach "Christian" und dann sollen alle Christian s aufgelistet werden. wie kann ich das machen??? |
Re: Via SQL Access DB Tabelle sortieren und suchen
SQL-Code:
würde dir alle Kunden, die mit Christian anfangen zurückgeben.
SELECT * FROM Kunden WHERE Name like 'Christian%'
|
Re: Via SQL Access DB Tabelle sortieren und suchen
Dann ersetze die Table doch einfach durch eine Query! Also: TADOConnection --> TADOQuery --> TDataSource --> TDBGrid
|
Re: Via SQL Access DB Tabelle sortieren und suchen
moin Christian,
1. neue Frage neuer thread 2. wie wäre es sich mal mit einem tut zu belesen, dir scheint es ja an den Grundlagen zu fehlen raik |
Re: Via SQL Access DB Tabelle sortieren und suchen
Zitat:
Um nur alle Datensätze aufzulisten, deren Feld "Vorname" gleich "Christian" ist, machst Du das hier:
Delphi-Quellcode:
Achtung!
Procedure TForm1.ButtonFilternClick (Sender : TObject);
Begin MyDatamodule.MyADOTable.Filter := 'Vorname="Christian"'; MyDatamodule.MyADOTable.Filtered := True; End; 1.Anführungszeichen beachten. Ob die ' oder " sind, weiss ich nicht. 2.Du musst eventuell der ADOTable irgendwie sagen, das sich der Filter verändert hat. |
Re: Via SQL Access DB Tabelle sortieren und suchen
Man kann alternativ zur ADOTable auch mit dem ADODataSet arbeiten. Jenes unterstützt auch die IndexFieldNames - und damit das Sortieren ohne SQL bemühen zu müssen. Dann kann man auch gezielt die Felder aussuchen, die man abgefragt haben möchte, kann verschiedene Tabellen zu einer "zusammenfassen", etc.
Wenn man den Filter verändert, muss man nichts weiter mitteilen - die Komponenten erkennen (dank setFilter-Methode, von der man nichts mitbekommt) selbst, dass sie neu filtern müssen. Möchte man über SQL filtern, würden sich Parameter anbieten:
SQL-Code:
Anschließend
SELECT * FROM Kunden WHERE Name LIKE :ParamName ORDER BY Name
Delphi-Quellcode:
und es wird neu gefiltert. So muss man sich auch nicht mit Hochkommata, Datumsformaten, etc. herumquälen.
ADODataSet.Parameters.ParamByName('ParamName').Value := 'Christian%';
ADODataSet.Requery; |
Re: Via SQL Access DB Tabelle sortieren und suchen
Zitat:
ist der Filter bei ADO schneller als bei der BDE??? |
Re: Via SQL Access DB Tabelle sortieren und suchen
Zitat:
Delphi-Quellcode:
i.a. viel schneller gehen. Aber eben nicht immer. Wenn Du millionen von Datensätzen im Speicher hättest (o.k. dann würde ich Dich prügeln :mrgreen:) und Du dann einen Filter draufsetzt, dauert das länger, als diese Arbeit einen ordendlichen DB-Server übernehmen zu lassen, speziell, wenn auf dem zu filternden Feld ein Index angelegt ist.
MyTable.Filter = 'Foo = 3';
Der Vorteil beim 'lokalen Filtern' ist natürlich der, das der DB-Server mit diesen 'unwichtigen' Aufgaben nicht belastet wird. Der Nachteil ist der, das die Daten u.U. nicht aktuell sind. Du musst immer abwägen, was Du willst. Normalerweise sollte man sich von einem DB-Server nur genau die Daten holen, die man braucht. Krankes Beispiel: Um alle Daten vom Kunden 'Kassupke' zu holen, kann man natürlich erst alle Kundendatensätze laden und dann mit dem lokalen Filter 'Name="Kassupke"' den einen Datensatz ausfiltern. Aber das ist ja suboptimal, sozusagen. Hier ist es natürlich angebracht, per geeignetem Select 'SELECT * FROM Kunden WHERE Name='Kassupke'' den DB-Server zu schonen. Gegenbeispiel: Um den Anwender durch alle Kunden navigieren und ihn selbst filtern zu lassen, ist es natürlich besser, einmalig alle Kunden zu ziehen (vorausgesetzt, es sind nicht zu viele) und dann über ein nettes Tool zu filtern. Wie gesagt, immer abhängig vom Anwendungsfall. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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