AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TClientDataSet: zu langsam! Alternative?
Thema durchsuchen
Ansicht
Themen-Optionen

TClientDataSet: zu langsam! Alternative?

Ein Thema von Reinhold_P · begonnen am 1. Mär 2007 · letzter Beitrag vom 7. Mär 2007
Antwort Antwort
Reinhold_P

Registriert seit: 23. Dez 2005
11 Beiträge
 
Delphi 7 Architect
 
#1

TClientDataSet: zu langsam! Alternative?

  Alt 1. Mär 2007, 08:20
Datenbank: Oracle • Version: 10g • Zugriff über: SQLDirect
Hallo,

ich verwende ein TClientDataSet um im Arbeitspeicher die Datensätze einer Tabelle zu cachen (readonly).

Das Einfügen der Datensätze in das TClientDataSet dauert zu lange.
Fügen über TQuery > TDataSetProvider > TClientDataSet ein. (SQLDirect statt BDE)

Hat jemand eine bessere Komponente? Oder muss ich ein Array programmieren?

Danke.
Reinhold P.
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TClientDataSet: zu langsam! Alternative?

  Alt 1. Mär 2007, 10:23
Was genau dauert denn zu lange? Das Speichern im ClientDataSet oder das anschließende Übertragen an die Datenbank? Ich arbeite selber mit ClientDataSets (allerdings verbunden mit einem Firebird-Server) und stelle da keine Probleme fest.
  Mit Zitat antworten Zitat
Reinhold_P

Registriert seit: 23. Dez 2005
11 Beiträge
 
Delphi 7 Architect
 
#3

Re: TClientDataSet: zu langsam! Alternative?

  Alt 1. Mär 2007, 10:32
- Die Daten werden von der Datenbank einmal in das TClientDataSet eingefügt.
- Der Zugriff erfolgt auf die Daten erfolgt dann mehrmals auf das TClientDataSet.
- Die Daten werden nicht verändert und auch nicht an die Datenbank zurückgeschrieben.

Das Einfügen der Datensätze in das ClientDataset (abhängig von Filterparameter bis zu 1000 Datensätze) dauert lange. Die Datenbankabfrage ist sehr schnell.

Ich hoffe, die Beschreibung erklärt den Ablauf.

Danke für die Hilfe.

Reinhold P.
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TClientDataSet: zu langsam! Alternative?

  Alt 1. Mär 2007, 10:45
Also wenn ich es richtig verstanden habe, dauert das Laden der ca. 1.000 Datensätze zu lange. Hierzu folgende Anregungen bzw. Anmerkungen:

1. Was heißt denn eigentlich lange?
2. Wie viele Datensätze enthält die Ursprungstabelle?
3. Du schreibst, Du arbeitest mit Filtern. Ich nehme an, es handelt sich um Filter im ClientDataSet. Meines Erachtens ist das Filtern im zugrundeliegenden Query effektiver. Also lieber im ursprünglichen Select eine entsprechende Where-Klausel deklarieren und die Client-Menge nicht weiter filtern. Oder gäbe es hierbei Probleme im Kontext Deines Programms?
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TClientDataSet: zu langsam! Alternative?

  Alt 1. Mär 2007, 11:00
welche art von daten hast du da? wie groß sind die tabellen usw...? ein paar mehr infos wären schon nicht schlecht. im bezug auf die filter kann ich mich nur meinem vorredner anschließen, die sql abfrage einzuschränken, also in der db zu filtern ist um welten schneller als es im tclientdataset zu machen.
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
599 Beiträge
 
Delphi XE6 Enterprise
 
#6

Re: TClientDataSet: zu langsam! Alternative?

  Alt 6. Mär 2007, 18:33
Zitat von Reinhold_P:
- Die Daten werden von der Datenbank einmal in das TClientDataSet eingefügt.
- Der Zugriff erfolgt auf die Daten erfolgt dann mehrmals auf das TClientDataSet.
- Die Daten werden nicht verändert und auch nicht an die Datenbank zurückgeschrieben.
Wenn Du die Daten nicht zurückschreiben musst, würde ich empfehlen, bei dem ClientDateSet die Property "LogChanges" auf FALSE zu setzen (bevor Du Daten einfügst). Geht dann viel schneller.



Der Frickler
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#7

Re: TClientDataSet: zu langsam! Alternative?

  Alt 7. Mär 2007, 09:28
Wenn es dir nur um das Cachen zur Laufzeit geht, ohne die erweiterten Möglichkeiten des TClientDataSet zur 'Rücksynchronisation', dann würde ich mir auch mal reine MemDataSets wie zB TkbmMemTable (Freeware, SourceForge) oder TdxMemData (DeveloperExpress) ansehen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:48 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