Zitat von
trifid:
beim clientseitigen Cursur wird alles auf einen Schlag im Arbeitsspeicher geladen
OK, das ist eine lange Wartezeit
Aber selbst wenn du nur 50000 Datensätze hast und 20Stück angezeigt werden sind das immer noch 2500x nachladen
Dieses nachladen dauert länger insgesamt (auf die 2500x gesehen) länger wie auf einmal
Das wäre für diesen Dialog/Teildialog egal. Es ist halt schlecht wenn erst mal 10-20 sec gar nichts passiert.
Zitat von
trifid:
Sicherlich mit einen Cursor mit dem man nur vorwärtsblättern kann geht alles schneller,
aber macht das auch der Anwender?, meistens will er wieder zurück scrollen um sich einfach zu
vergewissern
Dazu habe ich mir schon überlegt einen Forward-Curser zu verwenden, die Daten in einem eigene Speicherobjekt zu kopieren und mit einem Grid im Virtual-Modus anzuzeigen. Je nachdem wieweit der User gescrollt hat, wurde auch der Forward-Curser gescrollt. Zurück geht auch, da ja alles in einem eigenen Speicherobjekt gecached ist.
Zitat von
trifid:
Meistens und leider sieht das der Anwender etwas anders
Da hast Du vollkommen recht. Als Entwickler hat man immer andere Ansichten als der User
Zitat von
trifid:
a) habe noch nicht ausprobiert und somit keine Erfahrung
b) in einer StoredProc "DECLARE cursor_name CURSOR GLOBAL" ... wichtig GLOBAL oder Doku mal anschauen DECLARE CURSOR
mit Hilfe einer zweiten StoredProc die Daten fetchten,
aber dann brauchst wahrscheinlich ein eigens dafür programmiertes Grid, welches das alles verwaltet
bin mir aber nicht sicher ob das wirklich funktioniert
Eine spezialprogrammierung Grid +
ADO ist nicht möglich, da ich auch nocht
MySQL und Oracle unterstützen muß. Und da gehen wir native drauf (mysqllib.dll bzw. .NET8-Client)
Zitat von
trifid:
Nochmals zu den SELECT * FROM Mat
Dieses Beispiel ist eine Vereinfachung. Der User kann bestimmen welche Spalten er sehen will (und die
Query wird entsprechend optimiert
Zitat von
trifid:
schon mal mit dem TBetterADODataSet
Wird vermutlich nichts bringen, da es ja auch auf
ADO aufsetzt und das Problem nicht ADOExpress/dbGo ist sondern
ADO in seiner eigentlichen Form.
Ich werde noch 2 Möglichkeiten Ausprobieren:
a, Verwendung von Forward-Curser + Eigenes-Caching und nicht
DB-Gebundenes Grid
b, Verwendung von Select TOP xyz .... order by "Primärschlüsselfelder" um definitiv nur maximal xyz-Datensätze anzuzeigen und für weitere Datensätze wird eine neue
Query abgesendet, welche die Datensätze nach den schon vorhandenen liefert (ähnlich wie es ja auch im Internet bei Suchmachinen üblich ist
Danke für alle Tips/Hinweise