Le langage et la base de données

Oxygène possède sa propre Base de Données. Cependant, il est possible de stocker les données sur Microsoft SQL Server. La documentation suivante s'applique indifféremment pour la base Oxygène (dite parfois "propriétaire") et pour SQL Server. Le langage Oxygène permet de masquer (la majorité) les spécificités du type de la base utilisée. Pour plus de détails sur l'utilisation de Microsoft SQL Server, consultez le chapitre SQL Server.

 

La base de données contient les informations nécessaires au fonctionnement des logiciels que l'on développe avec Oxygène. Ces informations sont regroupées dans des tables et des champs.

Dans le programme L4G, on accède aux tables et aux champs de la base de données en les nommant directement dans le source.

Exemple :

LirePremier CLIENT             lit le premier enregistrement de la table CLIENT

La table principale

De nombreux modèles prévoient des traitements automatiques sur la table principale de l'objet que l'on crée à partir de ce modèle. Il ne peut y avoir qu'une seule table principale par objet ou modèle d'objet.

La table principale est définie par la déclaration unique :

TABLE : table_principale

On peut ensuite accéder aux champs de la table principale sans les préfixer du nom de la table.( ex: NOM représente le champ NOM de la table principale ).

Les tables secondaires

Les tables secondaires sont toutes les tables utilisées dans un objet, autre que la table principale. Il peut y avoir plusieurs tables secondaires par objet. Ces tables ne bénéficient pas d'automatismes, et l'on doit spécifier clairement les traitements que l'on souhaite leur faire réaliser.

On définit les tables secondaires par la déclaration suivante :

TABLE_SECONDAIRE : table1, table2 , table3

On peut accéder aux champs des tables secondaires, en préfixant chaque champ du nom de sa table.( ex: CLIENT.PRENOM représente les champ PRENOM de la table CLIENT ).

La déclaration champ 

Il n'est pas obligatoire de déclarer les champs de la base de données. Par défaut, le traducteur considérera comme un champ toute variable qui n'a pas été déclarée. Cependant un Avertissement, signale après la traduction les variables qui ont été utilisées comme des champs.

On peut ainsi vérifier si une simple faute de frappe n'a pas fait déclarer un champ qui en fait n'existe pas. Sinon, le premier message d'erreur concernant ce "faux champ" n'interviendra que lors de l'exécution...

Pour que les Avertissements ne concernent que les champs qui n'existent pas en réalité, on peut déclarer dans le programme les champs de la base de données que l'on va utiliser.

Les champs doivent être déclarés au niveau des variables d'un objet ou d'un modèle d'objet, en spécifiant que la variable définie est en fait un champ.

 

Objet SAISIE : MASAISIE
         Declaration
         TABLE : CLIENT                                         // table principale
         TABLE_SECONDAIRE : ARTICLE                   // une table secondaire
         VARIABLES:
                  Champ NOM,PRENOM,AGE                         // champs de la table principale
                  Champ ARTICLE.CODE, ARTICLE.TTC // champs de la table secondaire
         FinDeclaration
         .../...
FinObjet

Table et champs hérités

Pour garder le même contexte de travail entre les tables d'un modèle d'objet et l'objet qui en dérive, on peut déclarer des tables et des champs hérités.

Une table héritée, ne peut être qu'une table secondaire du nouvel objet.

Syntaxe :

TABLE_SECONDAIRE : Heritee ARTICLE

et

VARIABLES : Champ Herite ARTICLE.CODE, ARTICLE.TTC