Partager via


Clause COMPUTE de la commande SHAPE

Une clause COMPUTE de forme génère un Recordset parent, dont les colonnes sont constituées d’une référence à l’objet Recordset enfant ; colonnes facultatives dont le contenu est chapitre, nouvelles ou calculées, ou le résultat de l’exécution de fonctions d’agrégation sur le Recordset enfant ou un Recordset précédemment mis en forme ; et toutes les colonnes de l’objet Recordset enfant répertoriés dans la clause BY facultative.

Syntaxe

SHAPE child-command [AS] child-alias  
   COMPUTE child-alias [[AS] name], [appended-column-list]  
   [BY grp-field-list]  

Description

Les parties de cette clause sont les suivantes :

child-command
Le processus se déroule en plusieurs étapes :

  • Commande de requête au sein d’accolades («{} ») qui retourne un objet Recordset enfant. La commande est émise au fournisseur de données sous-jacent, et sa syntaxe dépend des exigences de ce fournisseur. Il s’agit généralement du langage SQL, même si ADO ne nécessite aucun langage de requête particulier.

  • Nom d’un Recordset en forme existante.

  • Autre commande de forme.

  • Mot clé TABLE, suivi du nom d’une table dans le fournisseur de données.

child-alias
Alias utilisé pour faire référence au Recordset retourné par la commande enfant.L’alias enfant est requis dans la liste des colonnes de la clause COMPUTE et définit la relation entre les objets Recordset parent et enfant.

appended-column-list
Liste dans laquelle chaque élément définit une colonne dans le parent généré. Chaque élément contient une colonne de chapitre, une nouvelle colonne, une colonne calculée ou une valeur résultant d’une fonction d’agrégation sur l’objet Recordset enfant.

grp-field-list
Liste de colonnes dans les objets Recordset parent et enfant qui spécifie la façon dont les lignes doivent être regroupées dans l’enfant.

Pour chaque colonne de la grp-field-list, il existe une colonne correspondante dans les objets Recordset enfants et parents. Pour chaque ligne du Recordset parent, les colonnes grp-field-list ont des valeurs uniques et l’objet Recordset enfant référencé par la ligne parente se compose uniquement de lignes enfants dont les colonnes grp-field-list ont les mêmes valeurs que la ligne parente.

Si la clause BY est incluse, les lignes du Recordset enfants sont regroupées en fonction des colonnes de la clause CALCUL. Le Recordset parent contient une ligne pour chaque groupe de lignes dans le Recordset enfant.

Si la clause BY est omise, l’objet Recordset enfant forme un seul groupe et l’objet Recordset parent contient exactement une ligne. Cette ligne fait référence à l’ensemble de l’objet Recordset enfant. L’omission de la clause BY vous permet de calculer des agrégats « total général » sur l’ensemble de l’objet Recordset enfant.

Par exemple :

SHAPE {select * from Orders} AS orders             COMPUTE orders, SUM(orders.OrderAmount) as TotalSales         

Quelle que soit la façon dont le Recordset parent est formé (en utilisant CALCUL ou AJOUTER), il contiendra une colonne de chapitre qui est utilisée pour le relier à un Recordset enfant. Si vous le souhaitez, le Recordset parent peut également contenir des colonnes qui contiennent des agrégats (SUM, MIN, MAX, etc.) sur les lignes enfants. Le Recordset parent et le Recordset enfant peuvent contenir des colonnes qui contiennent une expression sur la ligne dans le Recordset, ainsi que des colonnes qui sont nouvelles et initialement vides.

Opération

La commande enfant est émise au fournisseur, qui retourne un Recordset enfant.

La clause COMPUTE spécifie les colonnes du Recordset parent, qui peuvent être une référence au Recordset enfant, à un ou plusieurs agrégats, à une expression calculée ou à de nouvelles colonnes. S’il existe une clause BY, les colonnes qu’elle définit sont également ajoutées au Recordset parent. La clause BY spécifie comment les lignes du Recordset enfant sont regroupées.

Par exemple, supposons que vous disposez d’une table nommée Données démographiques, qui se compose de champs État, Ville et Population. (Les chiffres de la population dans le tableau ne sont fournis qu’à titre d’exemple).

State City Remplissage
WA Seattle 700 000
OR Medford 200 000
OR Portland 400 000
CA Los Angeles 800 000
CA San Diego 600 000
WA Tacoma 500 000
OR Corvallis 300 000

À présent, émettez cette commande de forme :

rst.Open  "SHAPE {select * from demographics} AS rs "  & _  
          "COMPUTE rs, SUM(rs.population) BY state", _  
           objConnection  

Cette commande ouvre un Recordset mis en forme avec deux niveaux. Le niveau parent est un Recordset généré avec une colonne d’agrégation (SUM(rs.population)), une colonne référençant l’objet Recordset enfant (rs) et une colonne pour regrouper l’objet Recordset enfant (state). Le niveau enfant est l’objet Recordset retourné par la commande de requête (select * from demographics).

Les lignes de détail du Recordset enfant sont regroupées par état, mais dans aucun ordre particulier. Autrement dit, les groupes ne seront pas dans l’ordre alphabétique ou numérique. Si vous souhaitez que le Recordset parent soit trié, vous pouvez utiliser la méthode Trier le Recordset pour classer le Recordset parent.

Vous pouvez maintenant naviguer dans l’objet Recordset parent ouvert et accéder aux objets Recordset de détails enfants. Pour plus d’informations, consultez Accès aux lignes dans un Recordset hiérarchique.

Jeux d’enregistrements de détails parents et enfants résultants

Parent

SOMME (rs. Population) rs State
1 300 000 Référence à enfant1 CA
1 200 000 Référence à enfant2 WA
1 100 000 Référence à enfant3 OR

Enfant 1

State City Remplissage
CA Los Angeles 800 000
CA San Diego 600 000

Enfant 2

State City Remplissage
WA Seattle 700 000
WA Tacoma 500 000

Enfant 3

State City Remplissage
OR Medford 200 000
OR Portland 400 000
OR Corvallis 300 000

Voir aussi

Accès aux lignes dans un recordset hiérarchique
Vue d’ensemble de la mise en forme des données
Field, objet
Grammaire formelle de la commande SHAPE
Recordset, objet (ADO)
Fournisseurs nécessaires pour la mise en forme des données
Clause APPEND de la commande SHAPE
Généralités sur les commandes SHAPE
Value, propriété (ADO)
Fonctions Visual Basic pour Applications