Laden...

Nicht gleich alles laden

Erstellt von serial vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.068 Views
S
serial Themenstarter:in
902 Beiträge seit 2007
vor 15 Jahren
Nicht gleich alles laden

verwendetes Datenbanksystem: <SqlCE 3.5>

Hallo,

mein Problem:
Ich habe eine (noch) kleine Datenbank, die ich beim Starten des Programmes in einem DatagRidView anzeige!

Noch geht das relativ schnell, allerdings werden die Daten sicherlich bedeutend mehr, ergo wird auch das Laden immer langsamer (da ja immer alles angezeigt wird)

Nun wollte ich von euch wissen, wie ihr soetwas handled?

Wie ladet ihr die daten? (Schrittweise?, Wie am besten puffern?)
Wie lade ich beim scrollen nach?

mfg
serial

1.433 Beiträge seit 2006
vor 15 Jahren

Wie ladet ihr die daten? (Schrittweise?, Wie am besten puffern?)
Wie lade ich beim scrollen nach? Wir benutzen hier Infragistics UltraWegGrid, dass diese Funktionalität schon implementiert hat.

Ansonsten würde ich das ganze limitieren und zuerst eventuell 100 Datensätze laden und bei Bedarf dann die restlichen, aber ich denke ganz so trivial wirds nicht werden.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

3.511 Beiträge seit 2005
vor 15 Jahren

Ich gehe meist wie folgt vor:
Bei großen Datenmengen, z.B. Adressstämme, werden die Daten bereits vorgefiltert angezeigt. Wobei der Benutzer natürlich den Filter auch wieder entfernen kann.
Durch den Filter werden also schonmal ein großteil der Daten weggefiltert. Als nächstes ist ein Paging drin. Es werden also nur immer 100 (oder x beliebig) Datensätze angezeigt und dann ein klassisches "1 2 3 4" usw. angezeigt. Also so wie man es bei Google gewohnt ist.

Das ganze ist mit SQL 2005/08 realisiert. Paging ist ab dem SQL 2005 wesentlich leichter zu implementieren als z.B. noch unter 2000. Ich habe ehrlich gesagt keine Ahnung ob der Ce 3.5 auch diese Features anbietet.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

S
serial Themenstarter:in
902 Beiträge seit 2007
vor 15 Jahren

ok, also anscheinend doch keine ganz einfache sache...dachte schon mir fällt irgendwas ganz leichtes wieder nicht ein!

Na dann werde ich das wohl auch vorfiltern.

Paging beim Compact werd ich mir mal anschauen, oder auf Express2005 umstellen!
(Hoffe das klappt so einfach)

F
10.010 Beiträge seit 2004
vor 15 Jahren

Wenn Du sicher bist, das du neim Compact bleibst, schau dir mal das SqlCeResultSet an.

C
401 Beiträge seit 2007
vor 15 Jahren

Also Paging kann man ja auch ganz einfach selber schreiben, einfach immer in der Abfrage die ersten AgezeigteElemente x SeitenZahl-1 skippen. Um die Anzahl der benötigten Seiten zu erhalten kannst du dir einfach die Anzahl aller Datensätze zurückgeben lassen udn die durch die Anzahl der angezeigten Elemente teilen. Sehe da eigentlich kein Problem.

Skippen geht mit SKIP:

http://msdn.microsoft.com/en-us/library/bb738680.aspx

Hoffe das hilft dir ein bisschen weiter.

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Serial,

ich mache das so : Anwender kann vorselektieren, damit nur wenige Datensätze angezeigt werden. Natürlich kann er auch auf 'Suchen' klicken ohne eine Vorauswahl zu treffen, dann werden alle Datensätze angezeigt.

Anzeigen tu ich mit virtuellem Listview. Nach Ausrechnen der Anzahl der angezeigten Zeilen (Schriftgröße, Fenstergröße) lade ich dann genausoviel wie angezeigt werden und sage dem Anwender dann "Fertig".

Im Hintergrund lade ich dann die zusätzlichen Datensätze heimlich nach, natürlich mit einem DataReader.

Wenn eine Eingabe erfolgt wird das Laden im Hintergrund abgebrochen.

So erfolgt eine Anzeige von mehreren Millionen Datensätzen in 2-3 Sekunden (anscheinend).

Allerdings ist der Programmieraufwand dafür recht hoch, ich würde es nur für Anwendungen machen für die es unbedingt nötig ist und die sehr oft eingesetzt werden.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

F
10.010 Beiträge seit 2004
vor 15 Jahren

@BerndFfm:
Zumal wenn er den Compact benutzt, und dort mit dem ResultSet dieses Schon
erledigt ist.

@Corpsegrinder:
SKIP ist da aber bei vielen Daten und mehreren Benutzern eine ziemlich
resourceverschwendende wahl.
Dann lieber das ab dem 2005 mögliche Pageing benutzen.