Comme pour les formulaires, on peut insérer dans un état un sous état. Les données du sous état seront imprimées en fonction de celles contenues dans l'état. Nous allons imprimer un bon de commande. Le bon de commande va contenir toutes les informations concernant cette commande : les coordonnées du client et le détail de chaque ligne de la commande. Nous allons baser notre état non plus sur une table comme précédemment mais sur une requête. Cette requête va afficher pour un numéro de commande donné, les informations la concernant : Date, réglée, n° vendeur, nom et coordonnées du client.
Une fois la requête créée, on va créer un état en le basant sur cette requête :
Ensuite, on choisit tous les champs de la requête puis on veut que l'état affiche les renseignements par commande. Ensuite, dans l'écran suivant on indique que l'on ne veut pas de niveau de regroupement supplémentaire et on choisit le format d'impression. Choisissez ensuite une décoration et donnez un nom à votre état. Access génére l'état et affiche :
Après avoir saisi le numéro de commande, Access génère un état :
Nous allons, comme avec le sous formulaire, ajouter un sous état à l'état actuel, ce sous état va afficher pour la commande le détail de chaque ligne de la commande. Pour cela, on passe en mode modification de l'état et on insère dans la partie Détail de l'état un contrôle sous état. Access nous demande alors à partir de quoi va être généré notre sous-état. Il va l'être à partir de la table "Produit" et de la table "Ligne Commande".
Access nous demande ensuite quels vont être les champs qui vont être affichés dans le sous état.
Ici, on indique à Access quel est le champ qui va être commun à l'état et au sous-état. La jointure entre ces deux tables va donc se faire sur le numéro de commande. La figure suivante vous montre le bon de commande final :