# Manuel d'utilisation de Glom v0.2

pour Glom v1.6
2004
Murray Cumming
2008
Bruno Brouard (annoa.b@gmail.com)
2008
Claude Paroz (claude@2xlibre.net)
Équipe de développement de Glom

Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de cette licence en suivant ce lien ou dans le fichier COPYING-DOCS fourni avec le présent manuel.

Ce manuel fait partie de la collection de manuels GNOME distribués selon les termes de la licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la collection, vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de celle-ci.

La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers, soit leur première lettre est en majuscule.

LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS SELON LES TERMES DE LA LICENCE DE DOCUMENTATION LIBRE GNU SACHANT QUE :

1. LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE MARCHANDABILITÉ, D'ADÉQUATION À UN OBJECTIF PARTICULIER OU DE NON INFRACTION DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME TOUT RISQUE RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À JOUR. SI LE DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR INITIAL, L'AUTEUR, NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU CORRECTION NÉCESSAIRE. CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE. AUCUNE UTILISATION DE CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD, EXCEPTÉ SOUS CETTE DÉNÉGATION DE RESPONSABILITÉ ;

2. EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE D'UN DÉLIT CIVIL (Y COMPRIS LA NÉGLIGENCE), CONTRACTUEL OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT OU TOUT DISTRIBUTEUR DE CE DOCUMENT OU DE SA VERSION MODIFIÉE, OU TOUT FOURNISSEUR DE L'UNE DE CES PARTIES NE POURRA ÊTRE TENU RESPONSABLE À L'ÉGARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER, OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, À UN ARRÊT DE TRAVAIL, À UNE DÉFAILLANCE OU UN MAUVAIS FONCTIONNEMENT INFORMATIQUE, OU À TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU DOCUMENT ET DE SES VERSIONS MODIFIÉES, MÊME SI LADITE PARTIE A ÉTÉ INFORMÉE DE L'ÉVENTUALITÉ DE TELS DOMMAGES.

Murray
Cumming
Équipe de développement de Glom

     murrayc@murrayc.com

Glom 1.6
20 juin 2004

Murray Cumming

Murray Cumming

Ce manuel documente la version 1.6 de Glom

## Votre avis

Pour signaler une anomalie ou émettre une suggestion concernant Glom ou ce manuel, faites une soumission d'anomalie à GNOME Bugzilla pour le produit Glom. Merci de faire une recherche sur bugzilla avant de soumettre votre anomalie pour s'assurer qu'elle n'a pas été déjà signalée.

Manuel d'utilisation de Glom.

## Introduction

Glom vous permet de concevoir et d'utiliser des systèmes de bases de données.

## Premiers pas

### Lancement de Glom

Vous pouvez démarrer Glom comme ceci :

Menu Applications

  Choisissez Bureautique Glom.

### Démarrage de Glom

Au démarrage de Glom, la fenêtre suivante apparaît.

#### Fenêtre de démarrage de Glom

Affichage de la fenêtre principale de Glom.

## Utilisation de Glom en tant qu'opérateur

Pour ouvrir un document Glom existant, ouvrez-le à partir du gestionnaire de fichiers ou choisissez Glom à partir du menu Applications, puis sélectionnez le document lorsqu'on vous le demande. Glom demande un nom d'utilisateur et un mot de passe pour accéder à la base de données. Votre administrateur vous fournira votre nom d'utilisateur et votre mot de passe.

Quand vous ouvrez un document existant, Glom se place à un `niveau` `opérateur`. Ce niveau d'utilisateur permet de chercher et de modifier des enregistrements, mais pas de modifier la structure fondamentale de la base de données.

### Navigation

Chaque base de données possède plusieurs tables. Pour examiner une autre table, choisissez `Tables` dans le menu `Navigation`. Puis cliquez deux fois sur la table ou sélectionnez-la et cliquez sur le bouton `Ouvrir`.

#### Navigation vers une table

Navigation vers une table.

### Affichage et saisie de données

Lorsque vous êtes en `mode données`, vous pouvez afficher ou saisir des informations soit dans la vue `Liste` ou dans la vue `Détails`.

#### La vue Liste

La vue liste affiche plusieurs enregistrement à la fois et habituellement n'affiche que les champs les plus importants.

Quand vous saisissez des données dans un champ, celles-ci sont enregistrées immédiatement dans la base de données dès que vous avez fini de le saisir. S'il s'agit d'un champ date ou heure, le format des données est automatiquement contrôlé.

Pour créer un nouvel enregistrement, il suffit de cliquer sur le bouton `Ajouter` ou de commencer à taper dans un champ de la dernière ligne vide. Un nouvel enregistrement est alors créé avec des champs vides prêts à être remplis.

##### La vue Liste

La vue Liste.

Pour trier les enregistrements, il suffit de cliquer sur l'en-tête d'une colonne. Par exemple, pour afficher des factures dans l'ordre chronologique vous pouvez cliquer sur la colonne « date », puis cliquer à nouveau pour les afficher dans l'ordre inverse.

#### La vue Détails

La vue Détails n'affiche qu'un seul enregistrement et affiche en général tous les champs dans un ordre approprié.

Quand vous saisissez des données dans un champ, celles-ci sont enregistrées immédiatement dans la base de données dès que vous avez fini de le saisir. S'il s'agit d'un champ date ou heure, le format des données est automatiquement contrôlé.

Pour créer un nouvel enregistrement, il suffit de cliquer sur le bouton `Ajouter`. Un nouvel enregistrement est alors créé avec des champs vides prêts à être remplis.

##### La vue Détails

La vue Détails.

### Recherche de données

Sélectionnez le `mode Rechercher` dans le menu Mode. Les champs dans les vues liste et détails sont maintenant vides et un bouton « Rechercher » apparaît en bas de la fenêtre.

Saisissez une information ou une partie d'information dans un champ pour trouver les enregistrements qui contiennent cette information. Par exemple, saisissez Jim dans le champ nom pour trouver les enregistrements qui contiennent « Jim » ou « Jimmy » dans leur nom.

Quand vous appuyez sur le bouton `Rechercher`, Glom recherche les enregistrements puis les affiche. Si un seul enregistrement est trouvé, celui-ci est alors affiché dans la vue détails. Si plusieurs enregistrements sont trouvés, ils sont affichés dans la vue liste.

### Impression de rapports

Si le développeur de la base de données a défini des rapports pour une table, ils apparaissent dans le menu `Rapports`. Il suffit de choisir le rapport dans le menu pour générer le rapport. Si vous avez effectué une recherche précédemment, le rapport ne contient que les données actuellement trouvées, sinon toutes les données sont présentes. Souvenez-vous que chaque table possède son propre rapport, il peut donc être nécessaire de basculer vers la bonne table pour obtenir un rapport particulier.

#### Un rapport

Un rapport.

## Utilisation de Glom en tant que développeur

Quand vous créez un nouveau document, Glom se place à un `niveau` `développeur`. Vous pouvez également basculer vers le niveau développeur après avoir ouvert un document existant, grâce au menu `Niveau utilisateur`. Glom ne le permet que si l'administrateur de la base de données l'autorise.

### Ajout de tables

Vous pouvez voir la liste des tables existantes en choisissant `Tables` dans le menu `Navigation`. Cette fenêtre apparaît également après une connexion à un serveur de base de données et après avoir créé un nouveau document. Pour créer une nouvelle table, cliquez sur le bouton `Ajouter` et saisissez le nom de la nouvelle table. Glom suggère un titre convivial pour cette table. Les `opérateurs` voient ce titre plutôt que le nom réel de la table. Vous pouvez également marquer une table comme `masquée` pour les opérateurs. Par exemple, les opérateurs peuvent voir les « lignes de facture » comme des enregistrements reliés à la table « factures » mais ils ne doivent jamais être capables d'aller directement vers la table « lignes de facture ».

Vous pouvez également spécifier une table comme `table par défaut`. Cette table sera affichée à chaque fois qu'un opérateur ouvre un document existant, sans lui demander de sélectionner une table dans la liste.

Vous pouvez également utiliser cette fenêtre pour renommer une table existante.

Cliquez sur le bouton `Ouvrir` pour afficher la table sélectionnée.

### Modification des champs

Choisissez `Champs` dans le menu `Développeur`. Cela permet d'afficher la liste des champs de la table. Les nouvelles tables possèdent automatiquement un champ clé primaire mais vous pouvez modifier ce champ si nécessaire.

Cliquez sur le bouton `Ajouter` pour ajouter un nouveau champ, puis saisissez le nom du nouveau champ. Glom propose un titre approprié et convivial pour ce champ, mais vous pouvez le modifier. Les `opérateurs` voient ce titre plutôt que le nom réel du champ.

Pour fournir plus de détails sur un champ, sélectionnez-le et cliquez sur le bouton `Détails`.

#### Modification des champs

Modification des champs d'une table.

#### Clés primaires

Chaque table doit posséder une et une seule `clé primaire`. La valeur de ce champ est unique ce qui signifie que chaque valeur dans ce champ n'apparaît que dans un seul enregistrement de la table. Par exemple, chaque enregistrement dans une table « clients » possède un « numéro de client ». Cette valeur est utilisée pour faire référence à ce client dans les autres tables telles que les enregistrements « Projets » et « Factures ». Voir la section Création de relations pour apprendre comment relier des tables entre elles.

#### Types de champs

Glom propose quelques types de champs simples :

1. Nombre

2. Texte

3. Date

4. Heure

5. Booléen - vrai ou faux

6. Image

#### Champs calculés

Les valeurs de champs peuvent être calculées en fonction d'autres champs en utilisant le langage de programmation Python. Ce calcul doit être une implémentation d'une fonction Python qui doit renvoyer une valeur. La valeur renvoyée est utilisée comme valeur de champ. Cette valeur est recalculée à chaque fois qu'une des sources de champ change. À FAIRE : cela ne fonctionne pour l'instant que pour les valeurs par défaut et vous ne pouvez pas encore utiliser des valeurs de champ dans le calcul.

Vous pouvez également utiliser des calculs pour spécifier une valeur par défaut pour les champs en sélectionnant l'onglet `Valeur par défaut` dans la fenêtre `Détails des champs`, en cliquant sur la case à cocher `Valeur calculée` puis en saisissant une formule Python. Vous pouvez tester ce calcul dans la fenêtre `Édition`.

### Arrangement de dispositions

Chaque table possède sa vue `Liste` et `Détails` et, par défaut, tous les champs de la table sont affichés par ordre de création. Vous pouvez modifier la disposition en choisissant `Disposition` dans le menu `Développeur`.

#### Mise en page de la vue liste

Dans la vue `Liste`, vous pouvez définir l'ordre des colonnes de champs et le masquage éventuel de certains champs.

##### Modification de l'agencement d'une liste

Modification de l'agencement d'une liste.

#### Mise en page de la vue détails

Dans la vue `détails`, il est possible de créer des groupes de champs et de leur donner des titres. Vous pouvez alors mettre des champs dans ces groupes et définir l'ordre d'apparition des champs dans ces groupes. Vous pouvez également définir l'ordre des groupes. Par exemple, dans la table « Contacts », vous pouvez créer un groupe « Nom » et mettre les champs « titre », « prénom » et « nom » dans ce groupe. Vous pouvez avoir d'autres groupes pour les champs « Adresse ».

##### Modification de l'agencement des détails

Modification de l'agencement des détails.

### Création de relations

Les tables dans les bases de données sont souvent reliées entre elles. Par exemple, une table « Factures » peut avoir un champ « Numéro de client ». Une valeur dans ce champ se réfère à un enregistrement de la table « Clients » avec la même valeur. Glom peut afficher des informations supplémentaires telles que le nom du client à partir de cet enregistrement relié. Il peut également afficher une liste de plusieurs enregistrement liés. Par exemple, plusieurs « Lignes de factures » reliées à un enregistrement dans « Facture ».

Pour créer des relations, choisissez `Relations` dans le menu `Développeur`. La liste des relations existantes s'affiche. Cliquez sur le bouton `Ajouter` pour créer une nouvelle relation et saisissez un nom pour celle-ci. Choisissez ensuite un champ dans la table actuelle et un champ d'une autre table auquel il sera relié. Cette relation effectue la recherche de tous les enregistrements de l'autre table pour lesquels les valeurs des deux champs sont égales.

Vous pouvez utiliser une relation dans les situations suivantes.

1. Pour afficher un champ lié dans les vues Liste ou Détails.

2. Pour afficher une liste des enregistrements liés dans la vue Détails.

3. Pour afficher la valeur d'un champ dans un enregistrement lié (par exemple, pour copier le prix actuel d'un « produit » dans le champ « prix » d'un enregistrement « ligne de facture »).

4. Pour calculer une valeur de champ.

### Gestion des utilisateurs

Pour définir les `opérateurs` qui peuvent utiliser votre base de données et pour indiquer leurs droits d'accès aux différentes tables, choisissez `Utilisateurs` dans le menu `Développeur`.

### Traductions

L'interface utilisateur Glom (et ce document) est traduit dans plusieurs langues comme vous avez dû le voir si vous utilisez un ordinateur avec une interface utilisateur non anglaise. De plus, Glom affiche et comprend automatiquement les nombres et les dates en fonction des conventions actuelles de l'utilisateur local. Par exemple, un utilisateur aux U.S.A. peut saisir un prix comme 1.99 et une date comme 1/13/2008, mais un utilisateur allemand de la même base de données les verra comme 1,99 et 13.1.2008.

Cependant, le système Glom que vous avez créé contient aussi du texte qui doit être traduit s'il est utilisé par des personnes qui parlent une autre langue. Par exemple, vous devez fournir des traductions pour les titres de vos tables, champs et rapports. Tous ces éléments textuels peuvent être listés si vous choisissez `Traductions` dans le menu `Développeur`. Dans cette fenêtre, vous pouvez indiquer la langue utilisée pour le texte original et saisir des traductions pour chaque élément de texte pour des langues supplémentaires. Quand le système Glom est ouvert par un utilisateur de cette langue, les éléments de texte sont affichés dans l'interface utilisateur.

#### Traductions

Traductions.

Les traducteurs expérimentés sont probablement plus habitués au format de fichier .po, ou vous souhaitez peut-être utiliser les nombreux outils qui s'appliquent au format de fichier .po. En utilisant le bouton `Exporter`, vous pouvez créer un fichier .po pour l'exploiter dans un outil séparé ou pour l'expédier à un traducteur. Vous pouvez ensuite importer la traduction effectuée en utilisant le bouton `Importer`.

### Définition de rapports

#### Ajout et édition de rapports

Glom peut produire des rapports pour afficher des champs spécifiques d'un ensemble d'enregistrements, triés et regroupés. Par exemple, un magasin peut avoir besoin d'un rapport listant tous les produits vendus en un mois, groupés par type de produits et triés par prix dans chaque groupe. Chaque table possède ses propres rapports accessibles par l'opérateur dans le menu `Rapports`.

Pour définir un rapport ou modifier la définition d'un rapport existant, choisissez `Rapports` dans le menu `Développeur`.

##### Création et édition de rapports

Création et édition de rapports.

Notez que chaque rapport possède un numéro d'identification (ID) ainsi qu'un nom convivial. Ceci permet à votre rapport d'avoir un titre traduit s'il est utilisé sur un ordinateur configuré dans une autre langue.

#### Édition d'un rapport

Un rapport Glom possède trois zones :

1. l'en-tête, qui apparaît au début du rapport ;

2. la zone principale, dans laquelle les lignes enregistrements et résumé sont affichées avec les données actuelles de la base de données ;

3. le pied de page, qui apparaît à la fin du rapport.

À l'intérieur d'une zone, telle que la partie principale, vous pouvez ajouter des `Éléments` de rapport tels que des champs, textes ou images. Ceux-ci apparaissent habituellement par ligne à l'impression du rapport avec une ligne pour chaque enregistrement. Dans le cas le plus simple, cela ressemble beaucoup à la vue liste de Glom. Vous pouvez ajouter des éléments à votre rapport en les sélectionnant dans la liste `Éléments disponibles` puis en cliquant sur le bouton `Ajouter`. L'élément est alors ajouté à la liste `Éléments` dans la zone sélectionnée.

Pour fournir des détails aux éléments, tels que le texte ou l'image à afficher ou pour choisir le champ à afficher, sélectionnez l'élément dans la liste `Éléments` puis cliquez sur le bouton `Modifier`. Vous pouvez également indiquer le format du champ en cliquant sur le bouton `Format`, tout comme vous le faites pour définir l'apparence dans la vue détails ou liste.

##### Édition d'un rapport

Rédaction d'un rapport.

Certains éléments peuvent contenir d'autres éléments et posséder des propriétés supplémentaires pour contrôler la manière dont leurs sous-éléments sont présentés. Par exemple, l'élément `Groupé par` regroupe les enregistrements selon un champ. Par exemple, un rapport sur des produits peut regrouper la liste des produits par type de produit. Vous pouvez même ajouter un second sous-groupe à l'intérieur de l'élément principal `Groupé par` en sélectionnant votre élément `Groupé par` de premier niveau dans la liste `Éléments` pendant que vous ajoutez un nouvel élément `Groupé par` de la liste `Éléments disponibles`. Par exemple, vous pouvez regrouper vos produits par fabriquant à l'intérieur de chaque groupe de type de produit.

Pour définir le champ par lequel les enregistrements doivent être regroupés, sélectionnez votre élément `Groupé par` dans la liste `Éléments` puis cliquez sur le bouton `Modifier`. Vous pouvez alors choisir le champ par lequel les enregistrements doivent être regroupés et sélectionner les champs par lesquels ces enregistrements doivent être triés dans le groupe. Vous pouvez également indiquer des champs supplémentaires à afficher sur la ligne de titre du groupe. Par exemple, vous pouvez regrouper les produits par numéro de fabricant mais également afficher le nom du fabricant.

##### Modification d'un élément Groupé par

Rédaction d'un rapport.

L'élément `Groupe vertical` peut contenir d'autres choses. Par exemple, il vous permet d'arranger les champs les uns en dessous des autres au lieu de l'un après les autres sur une même ligne. Ceci est utile pour regrouper des champs reliés tels que des lignes d'adresses ou juste pour condenser plus d'informations dans les lignes d'enregistrements sur le rapport.

##### Un rapport avec des Groupes verticaux

Un rapport avec des Groupes verticaux.

Quand vous avez terminé, cliquez sur le bouton `Fermer` pour enregistrer la définition du rapport. Votre rapport peut maintenant être choisi dans le menu `Rapports`. Voir la section Impression de rapports pour plus de détails.

## Boîtes de dialogue

### Boîte de dialogue : boîte de dialogue initiale

Cette boîte de dialogue permet à l'utilisateur de choisir un document existant ou de créer un nouveau document. Les documents existants peuvent être choisis dans la liste de documents récemment ouverts ou dans la boîte de dialogue de sélection de fichier. Les documents peuvent également être ouverts à travers le réseau si d'autres utilisateurs exécutent Glom sur le réseau local. Enfin un nouveau document peut être créé soit en ouvrant un fichier modèle qui contient déjà quelques tables initiales et des enregistrements ou en générant un document vide.

### Boîte de dialogue : nouvelle base de données

### Boîte de dialogue : création de base de données

### Boîte de dialogue : connexion

Cette boîte de dialogue requiert un nom d'utilisateur et un mot de passe pour la connexion au serveur de base de données. Il ne s'agit normalement pas du même nom d'utilisateur et mot de passe avec lequel vous vous connectez à votre système. Tous les systèmes Glom nécessitent un serveur de base de données sur lequel les données réelles sont enregistrées. Si le serveur de base de données ne tourne pas sur l'ordinateur local (« localhost ») alors vous devez fournir un nom d'hôte réseau du type « glomserver.openismus.com » (votre nom d'hôte sera certainement différent).

C'est l'administrateur système qui fournit les détails de la connexion à la base de données.

Si vous êtes l'administrateur système, consultez la page Web Configuration Postgres [en anglais] de Glom pour obtenir de l'aide sur l'installation et la configuration d'un serveur de base de données.

### Boîte de dialogue : erreur de connexion

Cette boîte de dialogue est affichée si Glom n'a pas pu se connecter au serveur de base de données spécifié. Soit le serveur de base de données ne tourne pas sur l'hôte spécifié soit le nom d'utilisateur et le mot de passe n'ont pas été acceptés par le serveur de base de données. Voir la section Boîte de dialogue de connexion pour plus de détails.

### Boîte de dialogue : préférences de base de données

### Boîte de dialogue : changement de langue

### Fenêtre : objet texte

### Fenêtre : objet image

### Boîte de dialogue : pagination

### Boîte de dialogue : format de données non valide

### Boîte de dialogue : aperçu des relations

### Fenêtre : groupes

### Boîte de dialogue : grouper par champs triés

### Boîte de dialogue : grouper par champs secondaires

### Fenêtre : script de bouton

### Fenêtre : calcul de champ

### Boîte de dialogue : nouveau groupe

### Boîte de dialogue : choix d'un utilisateur

### Boîte de dialogue : utilisateur

### Boîte de dialogue : identification de l'original de traduction

### Boîte de dialogue : copie de traduction

### Boîte de dialogue : choix d'une date

### Boîte de dialogue : importation dans une table

Cette boîte de dialogue permet à l'utilisateur d'importer un fichier CSV (valeurs séparées par des virgules) dans la table de base de données actuelle. Elle montre les premières lignes du fichier à importer et permet à l'utilisateur de sélectionner le champ de base de données correspondant à chaque colonne du fichier CSV. Pour les clés primaires incrémentées automatiquement, le champ clé primaire ne peut pas être utilisé comme champ de destination, mais dans les autres cas, un champ clé primaire doit absolument correspondre à une colonne du fichier.

## À propos de Glom

Glom est maintenu par des volontaires de la communauté Glom et GNOME. Pour obtenir plus d'informations à propos de Glom, visitez le site Web de Glom.

Pour signaler une anomalie ou émettre une suggestion concernant cette application ou ce manuel, vous pouvez les soumettre en utilisant bugzilla.

Une autre excellente source d'informations est la liste de diffusion de Glom.

Ce programme est distribué selon les termes de la Licence Publique Générale GNU, tels que publiés par la Free Software Foundation ; soit la version 2 de cette licence ou (à votre choix) toute version ultérieure. Vous trouverez une copie de cette licence en suivant ce lien ou dans le fichier COPYING fourni avec la source du code de ce programme.

## Concepts

Glom est simple d'utilisation mais vous devez comprendre les concepts de base suivants.

1. `Base de données` : chaque document Glom permet l'accès à une base de données.

2. `Table` : chaque base de données contient plusieurs tables, telles que des tables « Clients » et « Factures ».

3. `Champ` : chaque table possède plusieurs champs, tels que des champs « numéro de clients », « nom » et « date de naissance ». Dans d'autres documents et applications, les champs sont quelquefois appelés « colonnes ».

4. `Enregistrements` : chaque table contient plusieurs enregistrements, chacun d'eux possèdent des valeurs pour chacun des champs. Par exemple, la table « clients » possède un enregistrement pour chaque client. Dans d'autres documents et applications, les enregistrements sont quelquefois appelés `Lignes`.

5. `Relations` : chaque table peut être reliée à d'autres tables à travers des champs dans les deux tables. Par exemple, une table de « Clients » peut avoir un lien avec la table « Factures » afin de pouvoir afficher toutes les factures de ce client. Seuls les développeurs ont besoin de comprendre ce concept. Dans d'autres documents et applications, les relations sont quelquefois appelées « jointures ».

## Champs calculés et scripts de boutons

Les champs calculés et les scripts de boutons utilisent le langage de programmation Python. Le calcul ou le script est la réalisation d'une fonction dont la signature vous est fournie.

### Édition de la définition d'un champ calculé

Édition de la définition d'un champ calculé.

### Valeurs de champ

Par exemple,

    record["prenom"]

est la valeur du champ prenom de l'enregistrement actuel.

### Enregistrements reliés

Par exemple,

    record.related["location"]

fournit les enregistrements reliés à l'enregistrement actuel.

#### Enregistrements reliés unique

Pour les relations qui spécifient un enregistrement unique, vous pouvez récupérer la valeur de ce champ dans cet enregistrement. Par exemple,

    record.related["location"]["nom"]

est la valeur du champ nom dans la table indiquée par la relation location (souvent appelée location::name).

#### Enregistrements reliés multiples

Pour les relations qui spécifient des enregistrements multiples, vous pouvez utiliser les fonctions d'agrégation (sum, count, average) pour récupérer des valeurs globales. Par exemple :

    record.related["facture"].sum("prix_total")

### Test de valeurs vides

La manière de tester les valeurs vides dépend du type de champ :

#### Champs non-texte

Les champs non-texte peuvent être vides, signifiant que l'utilisateur n'a saisi aucune valeur dans le champ. Par exemple, Glom ne suppose pas qu'une valeur vide dans un champ numérique signifie 0.

Vous pouvez tester si un champ est vide en utilisant le « None » de Python. Par exemple :

      if(record["numero_identification"] == None):
        return "Aucun contact"
      else:
        return record.related["contacts"]["nom_complet"]

Vous pourriez également tester s'il existe des enregistrements reliés. Par exemple :

      if(record.related["contacts"] == None):
        return "Aucun Contact"
      else:
        return record.related["contacts"]["nom_complet"]

#### Champs texte

Pour les champs texte, vous devez vérifier que les chaînes ne sont pas vides. Il n'est pas possible dans Glom de faire la distinction entre des chaînes vides et l'absence d'une chaîne parce que ce n'est pas avantageux de le faire. Par exemple :

      if(record["nom_complet"] == ""):
        return "Aucun nom"
      else:
        return record["nom_complet"]

### Utilisation de l'API pygda complète

Le module pygda est une API Python de l'API libgda. L'attribut `connection` d'un enregistrement fournit une gda.connection qui peut être utilisée pour accéder à la base de données actuelle de manière directe. Ceci vous permet d'exécuter n'importe quelle requête SQL, par exemple lire des données de la base de données avec SELECT ou modifier des valeurs dans la base de données avec un UPDATE. Notez que la connexion est déjà ouverte ce qui vous évite le travail difficile de spécification des détails de connexion.

L'attribut `table_name` de l'enregistrement fournit également le nom de la table actuelle.

Cet exemple permet de lire toutes les données de la table actuelle et d'afficher les valeurs sur le terminal :

    # Use the current database's connection
    # to get all the data for the current table.
    #
    # record.connection is an already-open gda.connection object,
    # saving us the bother of opening the connection,
    # or even knowing the name of the database.

    query = "SELECT * FROM %s" % record.table_name
    data_model = gda.gda_execute_select_command(record.connection, query)

    rows = data_model.get_n_rows()
    columns = data_model.get_n_columns()
    print "    Number of columns: ", columns

    for i in range(columns):
        print "      column ", i;
        print "        name=", data_model.get_column_title(i)

        # Find out whether it's the primary key:
        field = data_model.describe_column(i)
        if field.get_primary_key():
            print "        (primary key)"

        print "\n";

    print "    Number of rows: ", rows

    for row_index in range(rows):
        print "      row ", row_index;

        for col_index in range(columns):
            print "        value=", data_model.get_value_at(col_index, row_index).get()

        print "\n";