AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Via SQL Access DB Tabelle sortieren und suchen
Thema durchsuchen
Ansicht
Themen-Optionen

Via SQL Access DB Tabelle sortieren und suchen

Ein Thema von Christian18 · begonnen am 15. Jan 2006 · letzter Beitrag vom 16. Jan 2006
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#21

Re: Via SQL Access DB Tabelle sortieren

  Alt 15. Jan 2006, 19:51
Zitat von Christian18:
Zitat von alzaimar:
TADOTable hat eine IndexFieldName-Eigenschaft. Wenn du die Daten nur im Grid sortieren willst, dann schreib halt einfach
Delphi-Quellcode:
Procedure TForm1.ButtonSortierenClick (Sender : TObject);
Begin
  MyDataModule.MyADOTable.IndexFieldName := 'Name';
End;
Fertig.
Hey vielen dank jetzt funktioniert es.
Und was wolltest Du jetzt mit der ADOQuery?
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#22

Re: Via SQL Access DB Tabelle sortieren

  Alt 15. Jan 2006, 19:54
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???
  Mit Zitat antworten Zitat
sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 19:57
SELECT * FROM Kunden WHERE Name like 'Christian%' würde dir alle Kunden, die mit Christian anfangen zurückgeben.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#24

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 19:57
Dann ersetze die Table doch einfach durch eine Query! Also: TADOConnection --> TADOQuery --> TDataSource --> TDBGrid
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#25

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 19:58
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
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#26

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 20:02
Zitat von r_kerber:
Dann ersetze die Table doch einfach durch eine Query! Also: TADOConnection --> TADOQuery --> TDataSource --> TDBGrid
Dann klappt das nicht mehr mit dem IndexFieldName.
Um nur alle Datensätze aufzulisten, deren Feld "Vorname" gleich "Christian" ist, machst Du das hier:
Delphi-Quellcode:
Procedure TForm1.ButtonFilternClick (Sender : TObject);
Begin
  MyDatamodule.MyADOTable.Filter := 'Vorname="Christian"';
  MyDatamodule.MyADOTable.Filtered := True;
End;
Achtung!
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#27

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 20:08
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:

SELECT * FROM Kunden WHERE Name LIKE :ParamName ORDER BY Name Anschließend
Delphi-Quellcode:
ADODataSet.Parameters.ParamByName('ParamName').Value := 'Christian%';
ADODataSet.Requery;
und es wird neu gefiltert. So muss man sich auch nicht mit Hochkommata, Datumsformaten, etc. herumquälen.
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#28

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 15. Jan 2006, 20:13
Zitat von alzaimar:
Zitat von r_kerber:
Dann ersetze die Table doch einfach durch eine Query! Also: TADOConnection --> TADOQuery --> TDataSource --> TDBGrid
Dann klappt das nicht mehr mit dem IndexFieldName.
Um nur alle Datensätze aufzulisten, deren Feld "Vorname" gleich "Christian" ist, machst Du das hier:
Delphi-Quellcode:
Procedure TForm1.ButtonFilternClick (Sender : TObject);
Begin
  MyDatamodule.MyADOTable.Filter := 'Vorname="Christian"';
  MyDatamodule.MyADOTable.Filtered := True;
End;
Achtung!
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.
Hallo,

ist der Filter bei ADO schneller als bei der BDE???
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#29

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 16. Jan 2006, 18:12
Zitat von Christian18:
ist der Filter bei ADO schneller als bei der BDE???
Die Frage ist nicht ganz korrekt gestellt, denn die Filter-Eigenschaft ist in TDataset schon angelegt. Im allgemeinen filtert man damit in-memory, also unabhängig von der DB. Deshalb wird das Filtern mit
MyTable.Filter = 'Foo = 3'; 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 ) 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.

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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
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