Dans 4D, vous pouvez créer un état soit à l’aide d’un formulaire, soit à l’aide de l’éditeur d’Etats rapides.
La création d’un état à l’aide d’un formulaire apporte plusieurs avantages par rapport à l’utilisation de l’éditeur d’états rapides : vous pouvez incorporer des éléments graphiques, contrôler précisément l’emplacement de chaque partie de l’état, utiliser des méthodes objet pour effectuer des calculs, ou encore utiliser des en-têtes pour identifier chaque sous-section d’un état avec ruptures. Les états par formulaires peuvent également être personnalisés par chaque utilisateur à l’aide de l’éditeur de Formulaires utilisateurs.
Vous pouvez utiliser un formulaire pour créer des états lorsque ceux-ci :
ne peuvent être construits avec l’éditeur d’états rapides,
affichent des sous-formulaires,
contiennent des images importées,
emploient des éléments graphiques particuliers, tels que des filets très fins.
Les états imprimés, à la différence des formulaire liste écran, peuvent utiliser la zone de rupture située à la fin de l’état. Pour les éléments qui doivent apparaître à la fin de chaque page, les états imprimés utilisent la zone de pied de page.
Les listes qui affichent des colonnes d’informations sont courantes dans des états imprimés. Par exemple, il est fréquent de produire des listes de numéros de téléphone, de prix, de résultats, de spécifications ou de composants. Lorsque vous créez un état en colonne à l’aide de l’assistant de création de formulaires, sélectionnez le type Formulaire impression liste.
Comme les listes que vous concevez pour afficher des enregistrements à l’écran, une liste imprimée présente des colonnes d’information, peut comporter des intitulés de colonne en haut de chaque colonne et peut utiliser des éléments graphiques pour améliorer ou clarifier l’état. La zone de rupture, qui est imprimée une seule fois à la fin de l’état, peut être utilisée pour calculer des totaux.
Pour plus d’informations sur l’utilisation de méthodes pour le calcul de totaux, reportez-vous ci-dessous au paragraphe “Exemple d’état”.
Vous pouvez avoir besoin d’imprimer un enregistrement par page. Par exemple, vous pouvez souhaiter utiliser une base de facturation afin d’imprimer une copie de chaque facture pour vos archives. Vous pouvez également imprimer un mailing dont seules certains champs sont modifiés par page (cf. section Créer un mailing).
Lorsque vous avez besoin de créer un tel état, choisissez Formulaire impression détaillé dans la liste déroulante Type de formulaire, dans l’assistant de création de formulaires.
Placez le taquet de contrôle de la zone d’en-tête (E) tout en haut de la page et organisez les champs et les autres éléments de l’état en-dessous.
Si votre formulaire affiche des enregistrements dans un sous-formulaire, vérifiez que le sous-formulaire est paramétré de manière à être imprimé avec un cadre de taille fixe afin que son impression ne s’étende pas sur plusieurs pages. Pour plus d’informations sur ce point, reportez-vous au paragraphe Imprimer des zones de taille variable.
Faites glisser les taquets de contrôle de la zone de corps (C), de la zone de rupture (R0) et de la zone de pied de page (P) tout en bas de la page afin d’être sûr qu’un seul enregistrement sera imprimé par page.
Vous êtes probablement habitué à voir des factures. Généralement, une facture contient un nom et une adresse de facturation, une adresse de livraison, une série d’articles ou de services achetés et un total.
Une base de facturation comporte un formulaire de sortie pour imprimer des factures en pleine page. Par exemple, une facture peut tirer ses informations de deux tables différentes : une table [Commandes] qui fournit les informations client (les adresses de facturation et de livraison) ainsi qu’une table [Lignes d’articles] qui fournit les informations sur les articles. Le total de la commande est calculé et sauvegardé dans la table [Commandes].
Le formulaire de cette facture est créé dans la table [Commandes] et utilise une zone de sous-formulaire incluse pour les lignes des articles. La zone du sous-formulaire peut être étendue lors de l’impression afin d’imprimer la totalité de la liste des articles commandés, même si l’impression de plusieurs pages est nécessaire. Pour plus d’informations sur ce point, reportez-vous au paragraphe Imprimer des zones de taille variable.
La zone Corps occupe la majeure partie de la page. Une seule facture est imprimée pour chaque commande, mais la zone Ligne d’articles contient autant de lignes que nécessaire.
Dans de nombreuses bases de données 4D, les utilisateurs peuvent saisir des notes ou des descriptions dans un champ de type Texte. Ce champ de texte peut être imprimé comme une zone de taille variable dans la zone Corps de l’état. Les champs texte peuvent être étendus pendant l’impression pour permettre l’impression de la totalité de leur contenu. Pour plus d’informations sur l’impression des champs de texte, reportez-vous au paragraphe Imprimer des zones de taille variable.
Si vous souhaitez créer des étiquettes personnalisées pour des mailings, intégrant par exemple le logo de votre société ou une adresse de retour, vous pouvez concevoir un formulaire sortie qui remplira ce rôle. Ce formulaire peut utiliser des éléments graphiques, toute police de caractères et des variables.
Note : Il est parfois plus rapide et plus facile de créer des étiquettes à l’aide de l’Editeur d'étiquettes intégré.
4D peut imprimer des états qui utilisent des Ruptures (simples) et des Ruptures d’en-têtes. Une rupture est créée lorsque vous triez les enregistrements.
Imaginons que vous souhaitiez imprimer un état de votre collection de disques, classé par artistes. Vous disposez probablement de plusieurs disques du même artiste. Lorsque vous triez les enregistrements par artistes, vous obtenez alors des groupes d’enregistrements distincts. La “rupture” se produit après l’impression du dernier enregistrement de chaque groupe. Voici le type d’état que vous pouvez obtenir :
4D dispose de différentes fonctions vous permettant de présenter les informations de la manière que vous voulez. Voici le formulaire utilisé pour réaliser cet état :
Note : Pour générer un état qui utilise des niveaux de rupture et des en-têtes, vous devez tout d’abord initialiser le traitement des ruptures. Pour plus d’informations sur les méthodes qui vous permettent d’initialiser le traitement des ruptures, reportez-vous au paragraphe “Initialiser le traitement des ruptures” ci-dessous.
Une rupture d’en-tête est imprimée une fois avant le groupe d’enregistrements auquel elle se réfère, et une rupture est imprimée une fois après le groupe d’enregistrements. Dans l’exemple précédent, la rupture est appelée une “Rupture d’en-tête de niveau 1” car la rupture intervient comme résultat du premier champ trié.
Vous pouvez utiliser jusqu’à 9 niveaux de ruptures. Si vous utilisez la routine Sous total pour initialiser le traitement des ruptures, vous devez effectuer un tri sur un champ de plus que le nombre de ruptures que vous utilisez. Par exemple dans ce cas, si vous utilisez un niveau de rupture, vous devez effectuer un tri sur deux champs. Si vous utilisez trois niveaux de ruptures, vous devez effectuer un tri sur quatre champs.
Dans le formulaire d'état, les niveaux de rupture et les ruptures d’en-têtes supplémentaires doivent correspondre à des zones supplémentaires. Vous créez ces zones en ajoutant des taquets. Pour savoir comment ajouter des taquets, reportez-vous au paragraphe "Créer des taquets supplémentaires" dans la section Utiliser les taquets de contrôle.
Cette section explique comment créer des états qui comportent des ruptures. Un exemple complet est fourni dans la section Exemple d’état imprimé.
Pour permettre à 4D d’imprimer les zones d’en-têtes des ruptures, de calculer des sous-totaux, etc., vous devez tout d’abord initialiser le traitement des ruptures dans le formulaire de l’état. Vous initialisez le traitement des ruptures en :
plaçant la fonction Sous total dans une méthode objet associée à un objet du formulaire ou dans la méthode du formulaire,
Si vous utilisez la fonction Sous total, vous devez aussi trier les enregistrements sur un champ de plus que le nombre de niveaux de ruptures que vous utilisez. Par exemple, si vous utilisez deux niveaux de ruptures dans votre état, le tri doit être effectué sur trois champs.
Ce paragraphe détaille la manière dont l’ordre des tris influe sur les états et explique comment utiliser des zones de rupture supplémentaires pour afficher des sous-totaux.
4D peut automatiquement calculer et imprimer des totaux et des sous-totaux. L’exemple ci-dessous montre un état qui calcule un sous-total pour chaque client et un total général final.
Les enregistrements ont été triés par clients et par produits. Après que les enregistrements de chaque client ont été imprimés, un sous-total est calculé et imprimé pour chaque client. Le total général est calculé et imprimé une fois que tous les enregistrements ont été imprimés. Comme vous pouvez le constater dans l’exemple ci-dessus, les sous-totaux sont calculés et imprimés après les enregistrements de chaque client.
4D sait quand effectuer le calcul et imprimer le sous-total car il a reçu l’instruction de le faire à chaque changement de la valeur du premier champ trié (à chaque fois qu’il y a “rupture”). Le sous-total des clients est calculé dans ce qui est appelé la rupture de niveau 1 car il est basé sur le premier champ trié (dans ce cas, le champ Clients). Le total général est calculé dans la rupture de niveau 0. La rupture de niveau 0 inclut tous les enregistrements et est générée à la fin de l’état.
L’illustration suivante présente un autre exemple de calcul dans un niveau de rupture avec les mêmes enregistrements, mais dans un ordre de tri différent afin de créer des ruptures différentes. Cette fois-ci, les enregistrements ont été triés par produits et par clients. Les sous-totaux sont calculés lorsque la valeur du champ Produits change. C’est toujours une rupture de niveau 1, mais la rupture est sur un autre champ.
Vous pouvez réaliser des calculs supplémentaires en ajoutant un autre niveau de tri et un autre niveau de rupture. Dans l’exemple suivant, les enregistrements des ventes sont triés par clients, produits et vendeurs. Les calculs récapitulatifs font apparaître deux ensembles de sous-totaux : un sous-total par client et, pour chaque client, un sous-total par produit. Enfin, cet état calcule un total pour l’entreprise. Ce sont des exemples de calculs effectués sur des ruptures de niveau 2, de niveau 1 et de niveau 0.
Les calculs des sous-totaux ne sont réalisés que pour le groupe d’enregistrements qui précède la rupture. Par exemple, un sous-total est calculé pour chaque type de produit vendu à un client. Le sous-total pour chaque client est calculé sur la base de tous les produits qui lui ont été vendus.
Note : Pour plus d'informations sur l'ajout de niveaux de rupture, reportez-vous au paragraphe "Créer des taquets supplémentaires" dans la section Utiliser les taquets de contrôle.
Vous pouvez créer un état qui n’imprime que des données récapitulatives. Un tel état affiche seulement les sous-totaux et les totaux avec leurs légendes. L’exemple suivant est un état résumé :
Dans cet état, les enregistrements sont triés par client, produit et date et les calculs sont effectués dans les ruptures créées par les tris. Les zones Corps des enregistrements ne sont pas imprimées ; les enregistrements ne sont utilisés que pour fournir les valeurs avec lesquelles les calculs sont établis. Notez que 4D va du premier au dernier enregistrement pendant l’impression de l’état, de manière à pouvoir effectuer les calculs. Vous créez ce type d’état en juxtaposant le taquet de la zone Corps avec celui de la zone d’En-tête, ce qui permet de ne rien imprimer dans le corps.
Vous pouvez demander à 4D d’effectuer plusieurs calculs supplémentaires sur une liste incluant des sous-totaux, des moyennes, des valeurs minimales et maximales, des totaux par page imprimée et des moyennes pondérées. Ces calculs, ainsi que d’autres, utilisent les Fonctions statistiques de 4D.
PROPRIÉTÉS
Produit : 4D
Thème : Formulaires de sortie et états
Nom intl. : Forms for printed reports