Création d'une table-système

Bien souvent, dans Access, on a besoin d'informations spécifiques, et on ne sait pas vraiment ou la stocker. Ecrire dans la base de registres de Windows est une solution qui n'est pas toujours idéale, ni à la portée de tous. L'idée est de concevoir une table-système. Ce serait une simple table, qui contiendrait toutes sortes de renseignements, comme par exemple le nombre de fois ou la base de données a été ouverte, ou encore la date de la première fois ou on a ouvert cette base, ou encore la raison sociale de l'entreprise qui utilisa cette base de données.

Exemple : Déterminer le nombre de fois ou la base de données à été ouverte

Etape 1 : Création de la table système

- Créez une table dans laquelle il y a un seul champ : NombreOuverture. Définissez-le en Numérique/Entier
- Allez en mode saisie de données, et entrez un seul enregistrement qui contient 0 (il faut écrire physiquement 0, sinon ça ne marche pas)

Maintenant, il s'agit d'aller augmenter ce nombre à chaque ouverture de la base de données. Cela doit se faire automatiquement. Nous allons créer une macro AutoExec, qui ne fait rien d'autre qu'appeller une procédure Visual Basic qui incrémente ce champ d'un à chaque fois.

Allons-y :

Etape 2 : création du code Visual Basic

- Allez dans Module/Nouveau
- Insérez le code suivant :
Function IncrementeOuverture()
   Dim TableSysteme As Recordset
   Set TableSysteme = CurrentDb.OpenRecordset("T_Systeme", dbOpenDynaset)
   TableSysteme.Edit
   TableSysteme("NombreOuverture") = TableSysteme("NombreOuverture") + 1
   TableSysteme.Update
   TableSysteme.Close
End Function

Sauvegardez ce module sous le nom P_Incrementation

A ce stade, vous pouvez déjà vérifier que ce code marche bien : Il va effectivement augmenter le contenu du champ NombreOuverture de la table T_Systeme. Pour vérifier cela, vous cliquez quelque part au milieu de la fonction, et vous appuyez sur F5. Rien de visible ne se passe, mais quand vous allez cliquer dans la table elle-même, vous constaterez que le champ NombreOuverture est passé de 0 à 1. Et chaque fois que cette fonction sera exécutée, le chiffre augmentera de 1 à chaque fois

Maintenant, il s'agit d'appeler ce code automatiquement dès le démarrage de la base de données. Pour ce faire, nous allons devoir créer une macro dont le nom sera AutoExec. C'est ce nom réservé qui va faire qu'elle sera exécutée automatiquement

Fermez ce module pour vous retrouver dans la fenêtre principale d'Access

Etape 3 : Création de la macro AutoExec

- Allez dans Macro/Nouveau
- Dans la première ligne, choissez "ExécuterCode", et dans les options en bas de l'écran, dans la ligne Nom Fonction, écrivez IncrementeOuverture()
- Sauvegardez-là sous le nom AutoExec

Voilà. Vous allez pouvoir passez à une nouvelle étape de test. Exécutez cette macro pour voir si elle appelle bien votre fonction Visual Basic. Pour bien la tester, faites comme suit :

- Fermez votre macro
- Allez voir dans la table T_Systeme à combien se trouve le nombre d'ouvertures. Admettons qu'il est à 4
- Fermez la table
- Cliquez 2 fois sur AutoExec pour l'exécuter
- Rien ne se passe. C'est normal
- Retournez dans la table T_Systeme : le nombre d'ouvertures doit être maintenant de 5

Etape 6 : C'est terminé !

Voilà. Maintenant, chaque fois que vous allez ouvrir cette base de données, la macro AutoExec va s'exécuter automatiquement, appelant le code VB qui va incrémenter le nombre d'ouvertures. Faites le test : Fermez cette base de données, et rouvrez-là. Ouvrez ensuite la table T_Systeme : Le nombre d'ouvertures vient d'augmenter de 1