Utilisation d'ensembles de résultats unidirectionnels

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données de type requête


Quand un ensemble de données de type requête renvoie un ensemble de résultats, il reçoit également un curseur, ou pointeur, sur le premier enregistrement de cet ensemble de résultats. L'enregistrement pointé par le curseur est l'enregistrement actif en cours. L'enregistrement en cours est celui dont les valeurs des champs sont affichées dans les composants orientés données associés à la source de données de l'ensemble de résultats. Sauf si vous utilisez dbExpress, ce curseur est par défaut bidirectionnel. Un curseur bidirectionnel peut naviguer dans les enregistrements à la fois en avant et en arrière. Le curseur bidirectionnel requiert une charge de traitement supplémentaire et peut ralentir certaines requêtes.

Si vous n'avez pas besoin de naviguer vers l'arrière dans un ensemble de résultats, TQuery et TIBQuery vous permettent d'améliorer les performances de la requête en demandant à la place un curseur unidirectionnel. Pour demander un curseur unidirectionnel, définissez la propriété UniDirectional par True.

Définissez UniDirectional avant la préparation et l'exécution de la requête. Le code suivant illustre la définition de la propriété UniDirectional avant la préparation et l'exécution d'une requête :

if not (CustomerQuery.Prepared) then

begin
  CustomerQuery.UniDirectional := True;
  CustomerQuery.Prepared := True;
end;
CustomerQuery.Open;  { returns a result set with a one-way cursor }
if (!CustomerQuery->Prepared)
{
  CustomerQuery->UniDirectional = true;
CustomerQuery->Prepared = true;
}
CustomerQuery->Open(); // Returns a result set with a one-way cursor

Remarque :  Ne confondez pas la propriété UniDirectional et un ensemble de données unidirectionnel. Les ensembles de données unidirectionnels (TSQLDataSet, TSQLTable, TSQLQuery et TSQLStoredProc) utilisent dbExpress, qui ne renvoie que des curseurs unidirectionnels. En plus de supprimer la navigation arrière, les ensembles de données unidirectionnels ne mettent pas les enregistrements en tampon, et ont donc d'autres limites (comme l'incapacité à utiliser des filtres).

Voir aussi