Daten abrufen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verwenden von dbExpress-Komponenten - Index


Nachdem Sie die Quelle der Daten angegeben haben, müssen Sie die Daten abrufen, damit Ihre Anwendung darauf zugreifen kann. Nachdem die Datenmenge die Daten abgerufen hat, zeigen die daten-sensitiven Steuerelemente, die über eine Datenquelle mit der Datenmenge verbunden sind, die Datenwerte automatisch an, und die Client-Datenmengen, die über einen Provider mit der Datenmenge verbunden sind, können mit Datensätzen gefüllt werden.

Wie für alle Datenmengen gibt es auch für eine dbExpress-Datenmengen zwei Möglichkeiten, die Daten abzurufen:

Sie setzen die Eigenschaft Active auf True, entweder zur Entwurfszeit im Objektinspektor oder zur Laufzeit im Quelltext:

 CustQuery.Active := True;
 CustQuery->Active = true;

Sie rufen zur Laufzeit die Methode Open auf:

 CustQuery.Open;
 CustQuery->Open();

Verwenden Sie die Eigenschaft Active oder die Methode Open für alle unidirektionalen Datenmengen, die Datensätze vom Server erhalten. Dabei spielt es keine Rolle, ob die Datensätze aus einer SELECT-Abfrage (das gilt auch für die automatisch erzeugten Abfragen, wenn CommandType gleich ctTable ist) oder aus einer Stored Procedure stammen.

Die Datenmenge vorbereiten

Damit eine Abfrage oder eine gespeicherte Prozedur auf dem Server ausgeführt wer­den können, müssen sie "vorbereitet" werden. Bei der Vorbereitung einer Datenmenge reservieren dbExpress und der Server Ressourcen für die Anweisung und ihre Parameter. Ist CommandType gleich ctTable, erzeugt die Datenmenge zu diesem Zeitpunkt ihre SELECT-Abfrage. Parameter, die nicht durch den Server gebunden sind, werden an dieser Stelle in einer Abfrage untergebracht.

Unidirektionale Datenmengen werden automatisch vorbereitet, wenn Sie Active auf True setzen oder die Methode Open aufrufen. Wenn Sie die Datenmenge schließen, werden die für die Ausführung der Anweisung reservierten Ressourcen freigegeben. Falls Sie vorhaben, eine Abfrage oder eine Stored Procedure mehrmals auszuführen, verbessern Sie die Leistung, indem Sie die Datenmenge explizit vorbereiten, bevor Sie sie zum ersten Mal öffnen. Um eine Datenmenge explizit vorzubereiten, setzen Sie ihre Eigenschaft Prepared auf True.

 CustQuery.Prepared := True;
 CustQuery->Prepared = true;

Beim expliziten Vorbereiten einer Datenmenge werden die für die Ausführung der Anweisung reservierten Ressourcen erst dann freigegeben, wenn Sie Prepared auf False setzen.

Setzen Sie die Eigenschaft Prepared auf False, um sicherzustellen, dass die Datenmenge (beispielsweise nach dem Ändern eines Parameterwertes oder der Eigenschaft SortFieldNames) erneut vorbereitet wird, bevor die Abfrage ausgeführt wird.

Mehrere Datenmengen abrufen

Einige Stored Procedures geben mehrere Datensatzgruppen zurück. Die Datenmenge ruft beim Öffnen nur die erste Gruppe ab. Um auf die anderen Datensatzgruppen zuzugreifen, rufen Sie die Methode NextRecordSet auf:

 var
   DataSet2: TCustomSQLDataSet;
   nRows: Integer;
 begin
   DataSet2 := SQLStoredProc1.NextRecordSet;
   ...
 TCustomSQLDataSet *DataSet2 = SQLStoredProc1->NextRecordSet();

NextRecordSet gibt eine neu angelegte TCustomSQLDataSet-Komponente zurück, die Zugriff auf die nächste Datensatzgruppe bietet. Wenn Sie also die Methode NextRecordSet zum ersten Mal aufrufen, gibt sie eine Datenmenge für die zweite Datensatzgruppe zurück. Der nächste Aufruf von NextRecordSet gibt eine dritte Datenmenge zurück usw. Dieser Vorgang wird so lange wiederholt, bis keine Datensatzgruppen mehr vorhanden sind. Stehen keine weiteren Datenmengen zur Verfügung, gibt NextRecordSet nil zurück.

Siehe auch