Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: ADO (MS-SQL) + clUseServer + DBGrid-Anbindung

  Alt 10. Jul 2004, 18:43
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
  Mit Zitat antworten Zitat