Obtention d'un ensemble de résultats modifiable
Remonter à Utilisation d'ensembles de données BDE - Index
Remarque : Le moteur de base de données Borland (BDE, Borland Database Engine) a été déprécié. Il ne sera donc pas amélioré. Par exemple, le BDE ne prendra jamais en charge Unicode. Vous ne devriez pas entreprendre de nouveaux développements avec BDE. Prévoyez plutôt de migrer vos applications de bases de données existantes de BDE vers dbExpress.
Pour obtenir un ensemble de résultats que l'utilisateur puisse éditer dans des contrôles orientés données, définissez la propriété RequestLive d'un composant requête à True. Définir RequestLive à True ne garantit pas un ensemble de résultats dynamique, mais le BDE essaie d'honorer la requête chaque fois que possible. Il existe quelques restrictions sur les requêtes d'ensemble de résultats dynamiques, selon que la requête utilise l'analyseur SQL local ou l'analyseur SQL d'un serveur.
- Les requêtes dans lesquelles les noms des tables sont précédés d'un alias de base de données BDE (comme les requêtes hétérogènes) et les requêtes exécutées sur Paradox ou dBASE sont analysées par le BDE en utilisant le SQL local. Quand une requête utilise l'analyseur SQL local, le BDE offre une gestion étendue des ensembles de résultats dynamiques et modifiables, aussi bien dans les requêtes monotables que multitables. Lors de l'utilisation du SQL local, un ensemble de résultats dynamique d'une requête sur une vue ou une table unique est renvoyé si la requête ne contient aucun des éléments suivants :
- DISTINCT dans la clause SELECT
- Jointures (interne, externe ou UNION)
- Fonctions d'agrégat avec ou sans clauses GROUP BY ou HAVING
- Vues ou tables de base qui ne peuvent pas être mises à jour
- Sous-requêtes
- Clauses ORDER BY non basées sur un index
- Les requêtes sur un serveur de base de données distant sont analysées par le serveur. Si la propriété RequestLive a pour valeur True, l'instruction SQL doit rester dans les standards Local SQL et se conformer de plus à toute restriction imposée par le serveur, car le BDE en a besoin pour communiquer les modifications de données à la table. Un ensemble de résultats dynamique d'une requête sur une vue ou une table unique est renvoyé si la requête ne contient aucun des éléments suivants :
- Clause DISTINCT dans l'instruction SELECT
- Fonctions d'agrégat avec ou sans clauses GROUP BY ou HAVING
- Références à plusieurs tables de base ou vues modifiables (jointures)
- Sous-requêtes qui référencent la table dans la clause FROM ou d'autres tables
Si une application demande et reçoit un ensemble de résultats dynamique, la propriété CanModify du composant requête est définie à True. Même si la requête renvoie un ensemble de résultats dynamique, il n'est pas sûr que vous puissiez mettre à jour l'ensemble de résultats directement s'il contient des champs liés ou si vous changez d'index avant de tenter une mise à jour. Si ces conditions se présentent, vous devez considérer l'ensemble de résultats comme étant en lecture seule et le mettre à jour en conséquence.
Si une application demande un ensemble de résultats dynamique, mais que la syntaxe de l'instruction SELECT ne le permette pas, le BDE retourne :
- Soit un ensemble de résultats en lecture seule pour les requêtes effectuées sur Paradox ou dBASE.
- Soit un code d'erreur pour les requêtes SQL effectuées sur un serveur distant.