AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ClientDataSet - wie kann man Indizes verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

ClientDataSet - wie kann man Indizes verwenden?

Ein Thema von globetrotter77 · begonnen am 29. Jan 2009 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 1 von 10  1 23     Letzte »    
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#1

ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 07:59
Datenbank: Firebird • Version: 2.1 • Zugriff über: SQLConnection
Hallo!

Bin ich zu doof dafür, oder gibt es wirklich gar keine Möglichkeit, mit TClientDataSet auf die in der DB definierten Indizes zurückzugreifen?

Zitat aus der Hilfe:
Es gibt drei Möglichkeiten, einer Client-Datenmenge einen neuen Index hinzuzufügen:
1) Die Eigenschaft TCustomClientDataSet.IndexFieldNames verwenden
... Diese Indizes bleiben nicht erhalten, wenn Sie die Datenmenge schließen ...
2) TCustomClientDataSet.AddIndex aufrufen
... Mit AddIndex erstellte Indizes werden beim Schließen der Client-Datenmenge nicht beibehalten ...
3) Die Eigenschaft TCustomClientDataSet.IndexDefs verwenden
... Als dritte Möglichkeit können Sie einen Index zu dem Zeitpunkt erstellen, zu dem die Client-Datenmenge erzeugt wird ...
... Auf diese Weise erzeugte Indizes sind persistent und werden gespeichert, ...

Sieht so aus, als käme nur Variante 3 in Frage. Aber merkwürdigerweise werden diejenigen Indizes, die bereits in der DB vorhanden sind, überhaupt nicht berücksichtigt. Heißt das nun, dass ich alle DB-Definitionen nicht mehr mit einem DB-Tool durchführen kann, sondern mit Delphi selber stricken muss?

Das widerspricht ja schon ein bisschen dem Prinzip der Trennung von Daten und Programm, oder?

Was käme denn statt ClientDataSet noch in Frage?

Danke im Voraus

Harald


PS: ich verwende Turbo Delphi Explorer
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 18:43
ich heb das noch mal nach oben ...

wie ist die Formulierung aus der Hilfe unter Punkt 3) nun wirklich zu verstehen?
Delphi-Quellcode:
3) Die Eigenschaft TCustomClientDataSet.IndexDefs verwenden
... Als dritte Möglichkeit können Sie einen Index zu dem Zeitpunkt erstellen, zu dem die Client-Datenmenge erzeugt wird ...
... Auf diese Weise erzeugte Indizes sind persistent und werden gespeichert, ...

Ich hätte gedacht, dass "IndexDefs verwenden" heißt, man kann über die IndexDefs den passenden Index auswählen. So wie sonst eben auch. Geht aber nicht.
Bedeutet im Klartext vermutlich auch, dass eine der wichtigsten Eigenschaften einer DB nicht genutzt werden kann.
Oder habe ich nur etwas übersehen???
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:09
Nicht auswählen sondern erzeugen
Markus Kinzler
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:16
wann erzeugen???

ich habe ne Datenbank, die im aktuellen Fall ca. 100000 Datensätze enthält, über die ich mehrere Indizes legen will (eben, weil es so viele sind).

Das will ich genau einmal machen, aber wie?
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:19
sorry, soll natürlich heißen:
nicht die Datenbank, sondern eine Tabelle aus der Datenbank enthält ca. 100000 Sätze.
In anderen Fällen können es auch mal 500000 sein.
Da will man die Indizes natürlich auf Dauer erhalten wissen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:20
<ds>.IndexDef.Add()
Markus Kinzler
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:27
IndexDefs.Add kenne ich schon, aber was ist denn der Unterschied zwischen einem selbst (also vom eigenen Programm) generierten und einem fremdgenerierten Index. Die Indizes sind ja schon da, aber warum sehe ich sie nicht??
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#8

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:40
Ich hab mal ne Datenbank mit Clientdataset erstellt, und man konnte die Spalten
sortieren , indem man oben auf den Spaltennamen geklickt hat.

Das war dieser Code

Delphi-Quellcode:
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
begin
  try
   ClientDataset2.IndexFieldNames := Column.FieldName;
  except
    ShowMessage('Das Feld kann nicht sortiert werden' + Column.FieldName);
end;
end;
Gruß

Thomas
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 19:52
@Thomas:

richtig! das geht auch wunderbar, aber ab einer bestimmten Größe dauert es einfach zu lange, weil der Index nach jedem Programmstart wieder neu aufgebaut werden muss.
Dauert bei 100000 Sätzen zwar immer noch "nur" ca. 5 Sekunden, aber das gilt für jeden Index.
Hat man also mehrere Indizes zu verwalten und evtl. noch mehr Datensätze, dann wird es irgendwann einmal unzumutbar für den Benutzer.
Deshalb gibt es ja auch normalerweise bei einer DB die Möglichkeit, einen Index nachträglich hinzuzufügen, um so Performance-Gewinne herauszuholen.
Der beste Performance-Gewinn hilft aber nicht weiter, wenn man das immer wieder neu machen muss.


Harald
  Mit Zitat antworten Zitat
Thomas F

Registriert seit: 3. Sep 2008
Ort: Nürnberg
281 Beiträge
 
Delphi 2005 Architect
 
#10

Re: ClientDataSet - wie kann man Indizes verwenden?

  Alt 29. Jan 2009, 20:14
Da kenn ich mich leider nicht aus.

Vielleicht ne andere Datenbank nehmen, die für große Datenmengen besser geeignet ist.
Gruß

Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 10  1 23     Letzte »    


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 02:43 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