Récupération des données

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des composants dbExpress - Index


Lorsque vous avez spécifié la source des données, vous devez récupérer les données avant que votre application ne puisse y accéder. Lorsque l'ensemble de données a récupéré les données, les contrôles orientés données, liés à l'ensemble de données au moyen d'une source de données, affichent automatiquement les valeurs des données, tandis que les ensembles de données client liés à l'ensemble de données au moyen d'un fournisseur peuvent être remplis par les enregistrements.

Comme pour n'importe quel ensemble de données, il y a deux façons de récupérer les données pour un ensemble de données dbExpress :

La première façon consiste à définir la propriété Active sur True, soit dans l'inspecteur d'objets lors de la conception, soit dans le code lors de l'exécution :

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

L'autre façon consiste à appeler la méthode Open lors de l'exécution,

CustQuery.Open;
CustQuery->Open();

Vous pouvez utiliser la propriété Active ou la méthode Open avec n'importe quel ensemble de données unidirectionnel obtenant ses enregistrements du serveur. Que ces enregistrements proviennent d'une requête SELECT (y compris d'une requête générée automatiquement lorsque CommandType vaut ctTable) ou d'une procédure stockée n'a pas d'importance.

Préparation de l'ensemble de données

Avant qu'une requête ou une procédure stockée ne s'exécute sur le serveur, elle doit d'abord être "préparée". Préparer l'ensemble de données signifie que dbExpress et le serveur allouent des ressources à l'instruction et à ses paramètres. Si CommandType vaut ctTable, cela se passe au moment où l'ensemble de données génère sa requête SELECT. Tous les paramètres qui ne sont pas liés par le serveur sont incorporés dans une requête à ce moment-là.

Les ensembles de données unidirectionnels sont automatiquement préparés lorsque vous définissez Active par True ou appelez la méthode Open. Lorsque vous fermez l'ensemble de données, les ressources allouées à l'exécution de l'instruction sont libérées. Si vous prévoyez d'exécuter plusieurs fois la requête ou la procédure stockée, vous pouvez améliorer les performances en préparant l'ensemble de données de manière explicite avant de l'ouvrir pour la première fois. Pour préparer un ensemble de données de manière explicite, définissez sa propriété Prepared sur True.

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

Lorsque vous préparez l'ensemble de données de manière explicite, les ressources allouées à l'exécution de l'instruction ne sont pas libérées tant que vous ne définissiez pas Prepared par False.

Définissez la propriété Prepared par False si vous voulez que l'ensemble de données soit re-préparé avant son exécution (par exemple, si vous modifiez la valeur d'un paramètre ou la propriété SortFieldNames).

Récupération de plusieurs ensembles de données

Certaines procédures stockées renvoient plusieurs ensembles d'enregistrements. Lorsque vous l'ouvrez, l'ensemble de données ne récupère que le premier ensemble d'enregistrements. Pour accéder aux autres ensembles d'enregistrements, appelez la méthode NextRecordSet :

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


Voir aussi