PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit ADO, ORACLE, clUseServer und Grids


Knut Lambert
06.10.1999, 16:08
(Delphi 5, Oracle 7 und 8)

Ich habe eine AdoQuery über ein DataSource mit eine DBGrid verbunden. Das SQL Statement lautet: SELECT * FROM TEST1. Tabelle TEST1 enthält 3 Felder und ca. 20 Sätze, keine Index, keinen Constraint.

Setze ich die Eigenschaft CursorLocation auf clUseClient ist alles Ok. Die Query kann geöffnet werden. Ändere ich auf clUseServer (was bei großen Datenmengen nötig ist! Zitat: Borland) dann erhalte ich die Fehlermeldung:

Die Datenmenge unterstützt keine Positionsmarken, die von Multi-Datensatz-Elementen benötigt werden!

Genau !!!! ????????????

Hänge ich das Grid vom DataSource ab, kann das Query aktiviert werden!

Weiß damit jemand etwas anzufangen?

Mit besten Grüßen

Knut Lambert
(lambert@consilium.de)

Andreas Kosch
07.10.1999, 05:05
Hallo Knut,

die Fehlermeldung <i>Die Datenmenge unterstützt keine Positionsmarken, die von Multi-Datensatz-Elementen benötigt werden! </i> hat die Ursache darin, das bei einem Cursor auf der Server-Seite (clUseServer) keine <b>Bookmarks</b> zur Verfügung stehen.

Die Implementierung von <b>TADODataSet</b> benötigt nur dann Bookmarks, wenn mehrere Datensätze angezeigt werden müssen und der Anwender zudem in diesem Bestand "browsen" kann. Wird ein <b>TDBGrid</b> verwendet, ist jedoch immer ein Datensatzpuffer für mehrere Datensätze im Spiel, so daß die VCL auf Bookmarks zurrückgreift, um die bei Bedarf nachzuladenden Datensätze zu bestimmen. Und wenn der Treiber bzw. die Datenbank keine Bookmarks auf der Server-Seite unterstützt, erscheint diese Fehlermeldung.

Ein Cursor auf der Client-Seite (clUseClient) unterstützt in jedem Fall Bookmarks. Es bleibt also nichts weiteres übrig, als das eigene Anwendungs-Design zu überarbeiten. Konkret bedeutet dies, die Datenmenge der SQL-Abfrage über eine geeignete WHERE-Klausel einzuschränkgen und bei einem DBGrid auf clUseClient zu welchseln. In diesem Fall (kleine Ergebnismenge der Abfrage) sind die "Nebenwirkungen" von clUseClient vertretbar.

P.S: ADO wurde zuerst von Microsoft für den Einsatz in Internet-Anwendungen (<b>ASP</b>) konzipiert - und dort war eine interaktive Benutzerschnittstelle (d.h. das Vor- und Zurückblättern in der Datenmenge) nicht vorgesehen ;-)

Knut Lambert
07.10.1999, 14:46
Hallo Andreas,

danke für die Info. Die Erklärung ist nachvollziehbar. Danke Dir dafür. Habe an den entsprechenden Stellen Änderungen vorgenommen