Contenu

# Données

L'onglet Données définit les propriétés du formulaire qui se rapportent à la base de données liée au formulaire.

Définit la source de données à laquelle le formulaire est lié ou spécifie si les données peuvent être, ou non, éditées. Outre les fonctions de tri et de filtre, figurent également toutes les propriétés nécessaires à la création d'un sous-formulaire.

Pour accéder à cette commande...

Ouvrez le menu contextuel d'un élément de formulaire sélectionné, choisissez l'onglet Propriétés du formulaire - Données.

Ouvrez la barre d'outils Ébauche de formulaire, cliquez sur l'icône Propriétés du formulaire - onglet Données.

## Analyser l'instruction SQL

Spécifie si l'instruction SQL doit être analysée par LibreOffice. Si elle est définie sur Oui, cliquez sur le bouton... situé à côté de la zone de liste Contenu. La fenêtre qui s'affiche permet de créer graphiquement une requête de base de données. Lorsque vous fermerez cette fenêtre, l'instruction SQL correspondant à la requête créée sera insérée dans la zone de liste Contenu.

## Autoriser les ajouts

Détermine si des données peuvent être ajoutées.

## Autoriser les modifications

Détermine si les données peuvent être modifiées.

## Autoriser les suppressions

Détermine si les données peuvent être supprimées.

## Barre de navigation

Indique si les fonctions de navigation de la barre de formulaire inférieure peuvent être utilisées.

L'option "Formulaire parent" concerne les sous-formulaires. Lorsque vous sélectionnez cette option pour un sous-formulaire, vous pouvez naviguer parmi les enregistrements du formulaire principal à condition que le curseur se trouve dans le sous-formulaire. Étant donné qu'un sous-formulaire est lié au formulaire principal via une relation 1:1, la navigation s'effectue toujours dans le formulaire parent.

## Contenu

Détermine le contenu à utiliser pour le formulaire. Il peut s'agir d'une table existante ou d'une requête (créée auparavant dans la base de données), mais le contenu peut également être défini via une instruction SQL. Avant de saisir un contenu, vous devez en définir le type exact dans Type de contenu.

Si vous avez sélectionné "Table" ou "Requête" dans Type de contenu, la zone répertorie toutes les tables et requêtes paramétrées dans la base de données sélectionnée.

## Cycle

Détermine le comportement de la touche de tabulation pendant la navigation. La touche de tabulation permet de se déplacer vers l'avant dans le formulaire. Si vous appuyez simultanément sur la touche Maj, la navigation suit la direction opposée. Si vous atteignez le dernier (ou le premier) champ et appuyez de nouveau sur la touche de tabulation, différents effets peuvent se produire. Définissez l'effet de la touche à l'aide des options suivantes :

Option | Signification
--- | ---
Par défaut | Ce paramètre permet de définir automatiquement un cycle orienté vers une connexion à une base de données existante. S'il existe dans un formulaire une connexion à une base de données, il est normalement possible de basculer vers l'enregistrement précédent ou suivant au moyen de la touche de tabulation lorsque vous quittez le dernier champ (voir Tous les enregistrements). S'il n'y a pas de connexion à une base de données, le basculement s'effectue vers le précédent formulaire ou le suivant (voir la page actuelle).
Tous les enregistrements | Cette option ne s'applique qu'aux formulaires de base de données et sert à explorer l'ensemble des enregistrements. Si vous utilisez la touche Tabulation pour quitter le dernier champ d'un formulaire, l'enregistrement actif est modifié.
Enregistrement actif | Cette option ne s'applique qu'aux formulaires de base de données et sert à explorer l'enregistrement actif. Si vous utilisez la touche Tabulation pour quitter le dernier champ d'un formulaire, l'enregistrement actif est modifié.
Page active | Si vous quittez un formulaire à partir de son dernier champ, le curseur passe au premier champ du formulaire suivant. Cette option, qui est la norme avec les formulaires HTML, est particulièrement appropriée avec ceux-ci.

## Filtre

Saisissez les conditions requises pour le filtrage des données dans le formulaire. Les spécifications de filtre suivent les règles SQL sans utiliser la clause WHERE. Par exemple, si vous souhaitez afficher tous les enregistrements comportant le prénom "Michel", tapez dans le champ de données : Prénom = 'Michel'. Vous pouvez également combiner des conditions : Prénom = Michel OR Prénom = Pierre. Tous les enregistrements répondant à ces deux critères s'afficheront.

La fonction de filtrage est disponible en mode utilisateur via les icônes Filtre automatique et Filtre standard dans la barre Navigation du formulaire.

## Lier les champs esclaves

Si vous créez un sous-formulaire, saisissez la variable à un endroit où ses valeurs possibles dans le formulaire parent peuvent être stockées. Si un sous-formulaire est basé sur une requête saisissez la variable que vous avez définie dans la requête. Si vous créez un formulaire à l'aide d'une instruction SQL saisie dans le champ Source de données, saisissez la variable que vous avez utilisée dans l'instruction. Vous pouvez choisir un nom de variable quelconque. Si vous souhaitez saisir plusieurs valeurs, appuyez sur Maj+Entrée.

Si vous avez indiqué par exemple le champ de base de données "Clients_ID" comme champ de base de données supérieur sous Établir un lien depuis, vous déterminez ensuite sous Établir un lien avec le nom de la variable au niveau de laquelle les valeurs du champ de base de données "Clients_ID" doivent être lues. Si vous utilisez maintenant cette variable pour définir une instruction SQL dans le champ Source de données, les valeurs correspondantes sont affichées dans le sous-formulaire.

## Lier les champs maîtres

Si vous créez un sous-formulaire, saisissez le champ de données du formulaire parent responsable de la synchronisation entre le formulaire parent et le sous-formulaire. Pour saisir des valeurs multiples, appuyez sur Maj+Entrée après chaque ligne de saisie.

Le sous-formulaire se base sur une requête SQL, et tout particulièrement sur une requête de paramètre. Lorsque vous entrez un nom de champ dans la zoneÉtablir un lien depuis, les données du champ sont lues à partir du formulaire principal au niveau d'une variable que vous devez spécifier dans la zoneÉtablir un lien avec. Une instruction SQL adéquate permet de comparer cette variable avec les données de la table auxquelles le sous-formulaire se réfère. Vous pouvez également entrer le nom de la colonne dans la zone Établir un lien depuis.

Examinez l'exemple suivant :

La table de base de données sur laquelle s'appuie le formulaire correspond par exemple à une base de données client ("Clients") dans laquelle vous identifiez chaque client par un numéro unique au niveau d'un champ de données intitulé "Clients_ID". Vous gérez les commandes d'un client dans une autre table de base de données. Vous souhaitez maintenant visualiser les commandes de chaque client que vous avez entré dans le formulaire. Pour ce faire, vous devez créer le sous-formulaire et sous Établir un lien depuis entrez le champ de données de la base de données client auquel le client peut être clairement identifié, donc "Clients_ID" (sans guillemets). Sous Établir un lien avec, entrez le nom d'une variable à laquelle les données du champ Clients_ID doivent s'ajouter, par exemple "x".

Le sous-formulaire doit indiquer les données appropriées à partir de la table des commandes ("Commandes") pour chaque ID client (ID_Client -> x). Ce n'est possible que si chaque commande n'est assignée qu'à un seul client dans la table des commandes. Vous pouvez aussi utiliser un autre champ nommé ID_Client. Cependant, pour éviter les confusions entre ce champ et le même champ du formulaire principal, le champ est nommé Numéro_Client.

Comparez maintenant le Numéro_Client de la table "Commandes" à l'ID_Client de la table "Clients". Pour ce faire, vous pouvez par exemple utiliser la variable x avec l'instruction SQL suivante :

SELECT * FROM Commandes WHERE No_Client = : x (si le sous-formulaire doit afficher toutes les données de la table Cde.)

ou :

SELECT Article FROM Commandes WHERE No_Client = : x (si le sous-formulaire ne doit afficher que les données du champ "Article" de la table Cde.)

Vous pouvez entrer l'instruction SQL soit dans le champ Source de données, ou vous générez une requête de paramètre correspondante que vous utilisez pour créer le sous-formulaire.

## N'ajouter que des données

Permet de déterminer si le formulaire ne doit autoriser que l'ajout de nouvelles données (Oui) ou s'il doit également autoriser d'autres propriétés (Non).

Si N'ajouter que des données est défini sur "Oui", il n'est pas possible de modifier ou de supprimer des données.

## Source de données

Définit la source de données à laquelle le formulaire doit renvoyer. Si vous cliquez sur le bouton ..., la boîte de dialogue Ouvrir s'affiche. Vous pouvez y sélectionner une source de données.

## Trier

Spécifie les conditions de tri des données dans le formulaire. La spécification des conditions de tri suit les règles SQL sans utilisation de la clause ORDER BY. Par exemple, si vous souhaitez trier tous les enregistrements d'une base de données dans l'ordre croissant dans un champ et dans l'ordre décroissant dans un autre champ, saisissez Prénom ASC, Nom DESC (en supposant que Prénom et Nom sont les noms des champs de données).

Vous pouvez utiliser les icônes correspondantes de la barre de formulaire en mode utilisateur pour effectuer les opérations suivantes : Tri croissant, Tri décroissant, Tri.

## Type de contenu

Détermine si la source de données doit être une table ou une requête de base de données existante, ou si le formulaire doit être généré à partir d'une instruction SQL.

Si vous choisissez Table ou Requête, le formulaire fera référence à la table ou à la requête spécifiée sous Contenu. Pour créer une requête ou un sous-formulaire, sélectionnez l'option SQL. Vous pourrez alors saisir l'instruction de la requête SQL ou du sous-formulaire directement dans la zone Contenu de liste dans l'onglet Données sous Propriétés du contrôle.

## Qu'est-ce qu'un sous-formulaire ?

La génération de formulaires s'effectue d'après une table ou une requête de base de données. Ils permettent de présenter les données et peuvent être utilisés pour saisir de nouvelles données ou pour modifier des données.

Pour obtenir un formulaire pouvant faire référence aux données d'une table ou d'une requête et pouvant également afficher des données d'une autre table, vous devez créer un sous-formulaire. Ce sous-formulaire peut être, par exemple, une zone de texte affichant les données d'une autre table de base de données.

Un sous-formulaire est un composant supplémentaire du formulaire principal. Le formulaire principal est également appelé formulaire "parent". Les sous-formulaires sont nécessaires dès lors que vous accédez à plusieurs tables depuis un formulaire. Chaque table supplémentaire requiert son propre sous-formulaire.

Une fois créés, vous pouvez transformer les formulaires en sous-formulaires. Il suffit de passer en mode Ébauche, puis d'ouvrir le navigateur de formulaire. Dans le navigateur de formulaire, faites glisser le formulaire que vous souhaitez transformer en sous-formulaire sur tout autre formulaire. Ce dernier devient le formulaire principal.

L'utilisateur de votre document ne peut pas savoir si un formulaire possède des sous-formulaires. Il ne voit qu'un document dans lequel des données sont entrées ou dans lequel des données figurent déjà.

Dans les champs de données du formulaire principal, renseignez le champ Établir un lien depuis. Dans le sous-formulaire, l'option Établir un lien avec peut être définie comme un champ qui sera mis en correspondance avec le contenu du champ Établir un lien depuis.

Lorsque l'utilisateur parcourt les données, le formulaire affiche toujours l'enregistrement des données actuelles. Si des sous-formulaires ont été définis, leur contenu s'affichera dans un délai très court d'environ 200 ms, durée pendant laquelle vous pouvez rapidement parcourir les enregistrements de données du formulaire principal. Si vous accédez au prochain enregistrement de données principales dans le temps imparti, il sera inutile d'extraire et d'afficher les données du sous-formulaire.