# Manuel d'utilisation de Glom v0.2

pour Glom v1.6

2004 Murray Cumming
Équipe de développement de Glom
Murray Cumming
Glom Development Team

     murrayc@murrayc.com

Glom 1.6
20 June 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

  Choose Office Glom .

### Démarrage de Glom

Lorsque vous démarrez Glom, la fenêtre suivante s'affiche. Vous pouvez ouvrir un fichier Glom existant ou en créer un nouveau en se basant éventuellement sur l'un des modèles.

Fenêtre de démarrage de Glom, ouverture d'un fichier existant

Shows Glom main window used to open an existing Glom file.

Fenêtre de démarrage de Glom, création d'un nouveau fichier

Shows Glom main window used to create a new Glom file.

## 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.

When you open an existing document, Glom will be in `Operator` `user level`. This user level allows you to find and edit records, but does not allow you to change the fundamental structure of the database.

### 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

Navigating to a 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

The List View.

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

The Details View.

### 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

A report.

## Utilisation de Glom en tant que développeur

When you create a new document, Glom will be in the `Developer` `user level`. You can also change to the Developer user level after opening an existing document, with the `User Level` menu. Glom will only allow this if the administrator has allowed it.

### 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

Editing the table's fields.

#### 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 offers a few simple field types:

1. Number

2. Text

3. Date

4. Time

5. Boolean - either true or false

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

Editing the list layout.

#### 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

Editing the Details Layout.

### 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.

You can use the relationship in the following places.

1. To show a related field on the List or Details view.

2. To show a list of related records on the Details view.

3. To lookup a value from a field in a related record. For instance, to copy the current price of a "Product" into the "Price" field of an "Invoice Line" record.

4. To calculate a field value.

### 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

Translations.

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

Creating or editing reports.

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

A Glom report has three areas:

1. The Header, which appears at the start of the report

2. The Main area, in which the records and summary lines are shown, with the actual data from the database.

3. The Footer, which appears at the end of the report.

À 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

Editing a report.

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

Editing a report.

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

A Report with Vertical Groups.

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 is easy to use, but you must understand the following basic concepts.

1. `Database`: Each Glom document allows access to one database.

2. `Table`: Each database contains several tables, such as "Customers" and "Invoices" tables.

3. `Field`: Each table has several fields, such as "Customer ID", "First Name", and "Date of Birth" fields. In other documents and applications, fields are sometimes called "Columns"

4. `Records`: Each table contains several records, each of which has values for each of the fields. For instance, the "Customers" table will have a record for each customer. In other documents and applications, records are sometimes called `Rows`.

5. `Relationships`: Each table might be related to other tables, via fields in both tables. For instance, a "Customers" table could have a relationship to the "Invoices" table, so that people could see all the invoices for that customer. Only developers need to understand this concept. In other documents and applications, relationships are sometimes called "Joins".

## 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é

Editing the definition of a calculated field.

### Valeurs de champ

For instance,

    record["name_first"]

is the value of the name_first field in the current record.

### Enregistrements reliés

For instance,

    record.related["location"]

provides the related records for the current record.

#### Enregistrements reliés unique

For relationships that specify a single record, you can get the value of a field in that record. For instance,

    record.related["location"]["name"]

is the value of the name field in the table indicated by the location relationship (often called location::name).

#### Enregistrements reliés multiples

For relationships that specify multiple records, you can use the aggregate functions (sum, count, average) to get overall values. For instance,

    record.related["invoice_lines"].sum("total_price")

.

### 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 :

    # Utilise la connexion à la base de données actuelle
    # pour récupérer toutes les données de la table actuelle.
    #
    # record.connection est un objet gda.connection déjà ouvert,
    # nous évitant de nous occuper de l'ouverture de la connexion,
    # ou même de connaître le nom de la base de données.

    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 "    Nombre de colonnes: ", columns

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

        # Recherche s'il s'agit de la clé primaire :
        field = data_model.describe_column(i)
        if field.get_primary_key():
            print "        (clé primaire)"

        print "\n";

    print "    Nombre de lignes : ", rows

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

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

        print "\n";

MY-GNOME-APP
mygnomeapp