Unidirektionale Ergebnismengen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Abfrage-Datenmengen


Wenn eine Abfrage-Datenmenge eine Ergebnismenge zurückgibt, erhält sie gleichzeitig einen Cursor (Zeiger) auf den ersten Datensatz der Ergebnismenge. Der Datensatz, auf den dieser Cursor zeigt, ist aktuell aktiv. Das heißt, die darin enthaltenen Feldwerte werden in den datensensitiven Komponenten angezeigt, die mit der Datenquelle der Ergebnismenge verknüpft sind. Sofern nicht dbExpress verwendet wird, ist dieser Cursor per Voreinstellung bidirektional. Bidirektionale Cursor ermöglichen sowohl Vorwärts- als auch Rückwärtsbewegungen durch die Datensätze. Die Unterstützung bidirektionaler Cursor erfordert zusätzlichen Verarbeitungsaufwand, der die Ausführung einiger Abfragen verlangsamen kann.

Falls in einer Ergebnismenge keine Rückwärtsbewegungen erforderlich sind, können Sie die Abfrage beschleunigen, indem Sie für TQuery und TIBQuery einen unidirektionalen Cursor anfordern. Hierzu setzen Sie die Eigenschaft UniDirectional auf True.

Es ist sinnvoll, diese Einstellung vor der Vorbereitung und Ausführung einer Abfrage vorzunehmen. Der folgende Quelltext zeigt, wie Sie hierzu vorgehen müssen:



 if not (CustomerQuery.Prepared) then
 begin
   CustomerQuery.UniDirectional := True;
   CustomerQuery.Prepared := True;
 end;
 CustomerQuery.Open;  { Liefert eine Ergebnismenge mit einem unidirektionalen Cursor }



 if (!CustomerQuery->Prepared)
 {
   CustomerQuery->UniDirectional = true;
 CustomerQuery->Prepared = true;
 }
 CustomerQuery->Open(); // Liefert eine Ergebnismenge mit einem unidirektionalen Cursor



Anmerkung:  Verwechseln Sie die Eigenschaft UniDirectional nicht mit einer unidirektionalen Datenmenge. Bei letzteren (TSQLDataSet, TSQLTable, TSQLQuery und TSQLStoredProc) wird dbExpress verwendet, wobei nur unidirektionale Cursor zurückgegeben werden. Unidirektionale Datenmengen verhindern Rückwärtsbewegungen des Cursors und puffern keine Datensätze, sodass bei ihrer Verwendung zusätzliche Einschränkungen bestehen (es können z.B. keine Filter verwendet werden).

Siehe auch