Shape COMPUTE, la clause
Une clause SHAPE COMPUTE génère un jeu d’enregistrements parent , dont les colonnes incluent une référence au jeu d’enregistrements enfant , ainsi que des colonnes facultatives dont le contenu peut être des colonnes de chapitre, nouvelles ou calculées. Elle inclut également le résultat de l’exécution de fonctions d’agrégation sur le jeu d’enregistrements enfant ou sur un jeu d’enregistrements déjà structuré . Enfin, toutes les colonnes du jeu d’enregistrements enfant répertoriées dans la clause facultative BY sont également incluses.
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 :
commande enfant
Se compose de l’un des éléments suivants :
Commande de requête dans des 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.
Le nom d'un jeu d'enregistrements existant en forme .
Une autre commande de forme.
Mot clé TABLE, suivi du nom d’une table dans le fournisseur de données.
alias enfant
Alias utilisé pour faire référence au jeu d’enregistrements 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 de jeu d’enregistrements parent et enfant .
liste de colonnes ajoutées
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 le jeu d’enregistrements enfant .
liste-de-champs-groupe
Liste de colonnes dans le jeu d’enregistrements parent et enfant objets qui spécifient la façon dont les lignes doivent être regroupées dans l’enfant.
Pour chaque colonne de la liste de champs grp , il existe une colonne correspondante dans le jeu d’enregistrements enfant et parent objets. Pour chaque ligne du jeu d’enregistrements parent , les colonnes de la liste de champs grp ont des valeurs uniques, et le jeu d’enregistrements enfant , référencé par la ligne parente, se compose uniquement de lignes enfants dont les colonnes de la liste de champs grp ont les mêmes valeurs que celles de la ligne parente.
Si la clause BY est incluse, les lignes de l’ensemble d’enregistrements enfant seront regroupées en fonction des colonnes de la clause COMPUTE. Le jeu d’enregistrements parent contiendra une ligne pour chaque groupe de lignes du jeu d’enregistrements enfant .
Si la clause BY est omise, l’ensemble du Recordset enfant est considéré comme un groupe unique et le Recordset parent contiendra exactement une ligne. Cette ligne fera référence à l'entièreté du jeu d'enregistrements enfant . L’omission de la clause BY vous permet de calculer des agrégats de « total général » sur l’ensemble du Recordset enfant .
Par exemple:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Peu importe la manière dont le jeu d’enregistrements parent est formé (en utilisant COMPUTE ou APPEND), il contiendra une colonne de chapitre utilisée pour le lier à un jeu d’enregistrements enfant . Si vous le souhaitez, le jeu d’enregistrements parent peut également contenir des colonnes qui contiennent des agrégats (SOMME, MIN, MAX, et ainsi de suite) sur les lignes enfants. Le jeu d’enregistrements parent et le jeu d’enregistrements enfant , peuvent contenir des colonnes qui incluent une expression sur la ligne dans le jeu d’enregistrements , ainsi que des colonnes nouvelles et initialement vides.
Opération
La commande enfant est envoyée au fournisseur, qui renvoie un jeu d’enregistrements enfant .
La clause COMPUTE spécifie les colonnes du jeu d’enregistrements parent , qui peuvent être une référence au jeu d’enregistrements enfant , une ou plusieurs agrégations, 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 jeu d’enregistrements parent . La clause BY spécifie comment sont regroupées les lignes du jeu d’enregistrements enfant .
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 population de la table sont fournis uniquement en tant qu’exemple).
État | Ville | Population |
---|---|---|
WA | Seattle | 700,000 |
OU | Medford | 200,000 |
OU | Portland | 400,000 |
CA | Los Angeles | 800,000 |
CA | San Diego | 600,000 |
WA | Tacoma | 500,000 |
OU | 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 jeu d’enregistrements structuré avec deux niveaux. Le niveau parent est un jeu d’enregistrements généré , comprenant une colonne d’agrégation (SUM(rs.population)
), une colonne faisant référence au jeu d’enregistrements enfant (rs
), et une colonne dédiée au regroupement du jeu d’enregistrements enfant (state
). Le niveau inférieur est le jeu d’enregistrements retourné par la commande de requête (select * from demographics
).
Les lignes de détail du jeu d'enregistrements enfant seront regroupées par état, mais sans ordre particulier. Autrement dit, les groupes ne seront pas dans l’ordre alphabétique ou numérique. Si vous souhaitez que le jeu d’enregistrements parent soit trié, vous pouvez utiliser la méthode Recordset Sort pour classer le jeu d’enregistrements parent .
Vous pouvez maintenant naviguer dans le jeu d'enregistrements parent ouvert et accéder aux objets de détails enfant jeu d'enregistrements. Pour plus d’informations, consultez Accès des lignes dans un ensemble d'enregistrements hiérarchiques.
Jeux d’enregistrements résultants parent et enfant
Parent
SOMME (rs.Population) | rs | État |
---|---|---|
1,300,000 | Référence à enfant1 | CA |
1,200,000 | Référence à child2 | WA |
1,100,000 | Référence à enfant3 | OU |
Enfant1
État | Ville | Population |
---|---|---|
CA | Los Angeles | 800,000 |
CA | San Diego | 600,000 |
Enfant2
État | Ville | Population |
---|---|---|
WA | Seattle | 700,000 |
WA | Tacoma | 500,000 |
Enfant3
État | Ville | Population |
---|---|---|
OU | Medford | 200,000 |
OU | Portland | 400,000 |
OU | Corvallis | 300,000 |
Voir aussi
L'accès aux lignes dans un jeu d’enregistrements hiérarchique
Vue d’ensemble de la mise en forme des données
Objet Field
grammaire de forme formelle
objet Recordset (ADO)
fournisseurs requis pour la mise en forme des données
Clause FORME AJOUTER
Commandes de forme en général
Valeur, propriété (ADO)
Fonctions Visual Basic pour applications