Utilisation d'ensembles de résultats unidirectionnels
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).