Bienvenue dans Access. Le tout-puissant SGBDR* de Microsoft.

* Système de Gestion de Bases de Données Relationnelles

Voyez également mon cours en ligne complet, pour tout comprendre d'Access, des versions 97 à 2003

Access est fascinant. Il est à la fois simple et complexe. Il est simple comparé à de puissants programmes de gestion de bases de données comme SQL Server ou Oracle, mais il devient complexe si on le compare à Word et Excel. Microsoft à donc voulu ajouter une pièce maîtresse dans sa suite Office en incluant Access, mais il ne faut donc pas s'imaginer que sa maîtrise viendra aussi vite que Word ou Excel. En fait, vous allez vraiment apprécier Access dans toute sa quintessence quand vous commencerez à vous sentir "A l'étroit" dans Excel.

Données de test : Cette base de données contient quelques tables comme une table des célébrités, avec une centaine de célébrités fictives, une liste de 350 clients, quelques fournisseurs, la liste de tous les pays du monde, les localités de Genève et leur code postal, ainsi que la liste des 24 cantons suisses.
Liste des mots français - Tous les noms communs du dictionnaire, au singulier et au pluriel, et au féminin
Best of Gestion : Un exemple de base de données professionnelle : La gestion d'une menuiserie.

Testez-votre QI - Pour rire bien sûr, mais votre logique sera mise à rude épreuve avec ce petit programme (Access 2000 minimum)
Dictionnaire d'apprentissage d'Esperanto - Une application Access très sympathique qui utilise deux sous formulaires côte à côte
SpeedList - Une application Access qui va vous permettre de faire des check lists pour ne rien oublier, plus jamais
AllowBypassKey - Base de données montrant par la pratique comment désactiver la touche SHIFT (Majuscuile) au démarrage

Runtime

Vous pouvez développer une application Access 2007, et l'installer sur autant de PC que vous le désirez, gratuitement. Pour ce faire, il vous faut Access 2007 sur votre PC, et télécharger le complément Access RunTime (57Mo).

PDF Natif

Access 2007 permet maintenant l'exportation en PDF. Nul besoin d'acheter Acrobat Distiller. Pour ce faire, rendez-vous sur cette page de Microsoft, téléchargez et exécutez le complément. Une fois que c'est fait, lorsque vous êtes dans une base de données, vous avez maintenant dans le ruban "Données externes" une icône "PDF" qui vous permet de créer un PDF à partir de n'importe quel objet Access

NOUVEAU : Créez un complément .accda - Pour les programmeurs en quête de productivité

NOUVEAU : Gardez l'historique de toutes les modifications que vous effectuez dans votre base de données

NOUVEAU : Créer un menu contextuel avec Access 2007 - Lorsque vous cliquez-droit avec votre souris au sein d'un formulaire ou d'un état, vous pouvez faire apparaître votre propre menu au lieu du menu contextuel prévu par Access

NOUVEAU : Enlever la sécurité Access 2007 - Comment se débarasser des différents messages de sécurité et blocages liées à la philosophie sécuritaire de Microsoft

NOUVEAU : Grouper les données dans une requête avec la fonction Partition - Obtenir des tranches de prix ou de salaire

NOUVEAU : Les nouveautés d'Access 2007

Access 2007 : Vous pouvez désormais définir des champs Mémo en format HTML (Propriété "Format du texte" : "Texte enrichi"). Toutefois, si vous mettez des couleurs, du gras, etc. dans ce genre de champ, ça se passera très bien, y compris lors de copier-coller vers Word ou Excel. Par contre, si vous exportez en "Fichier texte", les balises HTML seront visibles. Pour éviter ça, vous créerez une requête basées sur la table à exporter, et au lieu de mettre le champ "Remarque" (Qui serait un champ mémo HTML), vous mettez : Expr1:PlainText([Remarque])

jaugetresfacile.gif (104 octets)Plus la jauge est verte, plus c'est facile...jaugetresdifficile.gif (104 octets)

Comment faire en sorte qu'un champ NuméroAuto n'ait pas de "trous" ?

Admettons une table avec 1000 enregistrements, mais lors de la saisie des données, il y a eu des annulations, des affacements. Bref, le NuméroAuto de cette table a des trous. Le dernier enregistrement (le millième exactement) porte par exemple le numéro 1045. Attention : l'astuce présentée ne doit PAS s'effectuer si le champ NuméroAuto de cette table est en relation avec d'autres tables, car ça mélangerait tout. (Access refuserait simplement d'effectuer cette astuce)
1. Supprimez le champ NuméroAuto de cette table
2. Recréez-le
Ce n'est pas plus compliqué que ça.

Comment rendre une table Invisible ?

Vous pouvez, bien entendu, cliquer avec le bouton droit de votre souris sur la table en question, et choisir Propriétés, cocher "Masqué". Mais une autre technique intéressante est simplement de renommer votre table en commençant par USYS. Par exemple Usys_Client. La table sera alors invisible, mais bien réelle. Pour les faire réapparaître, il faudra aller dans le menu Outils/Options, onglet Affichage, cocher "Objets système". Alors que si vous avez opté pour la première technique (Bouton droit/propriétés/Masqué), c'est "Objets masqués" qu'il faudra cocher. Ce préfixe USYS ne fonctionne qu'avec les tables, pas les requêtes, formulaires, etc.

Comment créer une requête qui retourne toutes les valeurs supérieure à la moyenne de tous les enregistrements ?

Admettons une table T_Salarie dans laquelle nous avons un champ Salaire, et qu'il s'agisse d'extraire tous les salaires supérieurs à la moyenne des salaires. Dans une requête, écrivez comme critère du salaire :
>MoyDom("[Salaire]";"T_Salarie")

jaugetresdifficile.gif (104 octets)La sécurité au niveau des utilisateurs, des groupes et des objets - Transformez votre base de données en forteresse (Attention : le format Access 2007 n'accepte plus cette fonctionnalité)
jaugetresdifficile.gif (104 octets)VBA : Gestion des utilisateurs et des groupes

Une bonne manière de s'initier à Visual Basic pour Access 2007 : Créez une macro qui contient quelques actions, et pour savoir comment écrire la même chose en Visual Basic, fermez la macro, enregistrez-là, et sélectionnez-là en cliquant une fois dessus (sans l'ouvrir). Dans le ruban, cliquez sur "Outils de base de données", et dans la rubrique "Macro", cliquez sur "Convertir les macros en Visual Basic". La macro, ou le groupe de macros sur lequel vous êtes sera transformée en fonctions VBA.

Les différentes relations possibles entre les tables - Avec et sans intégrité, relations de 1 à plusieurs, ou de 1 à 1
Répéter les titres de section dans un état avec le mot "Suite" si nécessaire - Ou un doigt de Visual Basic pour ajouter cette fonctionnalité bien pratique

Comment nettoyer une table de caractères parasites ?

Lorsque vous saisissez beacoup de données, vous pouvez "riper" sur votre clavier, et taper Du^pont ou Dùpont à la place de Dupont. Créez une requête, et dans cinq lignes de critères, copiez collez ceci :
Comme "*[°§+ç%&/()=`¦@#¬|¢'´~`!{}$£<>\,;.:-_]*"
Comme "*[*]*" Ou Comme "*[[]*" Ou Comme "*]*" Ou Comme '*"*' Ou Comme "*[?]*"
Comme "*[àäâéèêîìôöòóûùúÿñ]*"
Comme "*[0123456789]*"
Comme " *"
Premier Comme : Caractères spéciaux
Deuxième Comme : Caractères tellement spéciaux qu'on doit les écrire de manière particulière
Troisième et quatrième Comme : Caractères accentués et chiffres
Cinquième Comme : Enregistrements commençant par un espace tapé par erreur

jaugetresfacile.gif (104 octets)Les grands objets d'Access : Explication succinte mais complète des Tables, Requêtes, Formulaires, Etats
jaugetresdifficile.gif (104 octets)Requête suppression basée sur 2 tables - Ce n'est pas si simple, contrairement aux apparences ! Un doigt de SQL et la clause "IN" seront nécessaires
jaugedifficile.gif (344 octets)Comment créer une liste déroulante restreinte ? - Par exemple, une fois qu'on a choisit un pays, ne pouvoir sélectionner que les villes de CE pays
Utiliser les fonctions Excel au sein d'Access - Par exemple, la fonction NomPropre n'est pas disponible dans Access. Comment faire pour l'utiliser malgré tout
jaugedifficile.gif (344 octets)Les boutons radios et la fonction Choisir - Des boutons radios représentent une alternative esthétique des listes déroulantes. Ils se combinent à merveille avec la fonction Choisir

Comment changer la valeur par défaut d'un champ dans une table ?
CurrentDb.TableDefs("T_Celebrite")("Ville").Properties("DefaultValue").Value = "Caracas"
Attention : Selon les propriétés, elles n'existent pas encore. Par exemple, si vous décidez de changer la propriété Caption (légende) d'un champ, il faut qu'auparavant il y ait eu au moins une fois une légende, sinon une erreur est générée.

Comment fermer Access depuis VBA
Fermer la base en laissant Access ouvert :
Application.CloseCurrentDatabase
Fermer la base et Access
Application.Quit

Créer dynamiquement une requête
CurrentDb.CreateQueryDef "R_1", "SELECT * FROM T_Animal;"
Et l'effacer :
DoCmd.DeleteObject acQuery, "R_1"

jaugedifficile.gif (344 octets)Choisissez un dossier avec VBA : Comment sélectionner un dossier particulier de votre ordinateur ou de votre réseau local. Consultez également cette page qui montre des exemple nettement plus simple avec Application.FileDialog
jaugemoyen.gif (361 octets)Les limites/performance d'Access : Limites de tailles des différents composants (Bases de données, tables, requêtes, objets, Formulaires, états, macros)

La fonction SysCmd permet de retrouver d'intéressantes informations :
Debug.Print SysCmd(acSysCmdAccessDir) ' Le dossier qui contient MSAccess.EXE
Debug.Print SysCmd(acSysCmdAccessVer) ' La version d'Access utilisée
Debug.Print SysCmd(acSysCmdGetWorkgroupFile) ' Le fichier de groupe de sécurité MDW utilisé

jaugedifficile.gif (344 octets)Installation d'Access 2003 : Vous avez un gros message d'erreur à l'ouverture vous enjoignant d'installer le Service Pack le plus récent pour Microsoft Jet. Voici ce que dit Microsoft à ce propos
jaugedifficile.gif (344 octets)Les différences entre Access 2000 et Access 2003
jaugedifficile.gif (344 octets)Comment additionner des heures dont le total excède 24 heures ?
jaugemoyen.gif (361 octets)Requêtes : l'opérateur Comme
jaugefacile.gif (240 octets)Base de données MDB endommagée ? Essayez ceci ... (Je n'ai pas testé)

Quelques idées de ce qu'il est possible d'écrire dans la colonne "Si" d'une Macro :
[Ville]="Paris"
CpteDom("[RéfCommande]", "Commandes")>35
CpteDom("*", " Détails Commandes ", "[RéfCommande]=Forms![Commandes]![RéfCommande]")>3
[DateEnvoi] Entre #2-Fév-2006# Et #2-Mar-2006#
Forms![Produits]![UnitésEnStock]<5
EstNull([Prénom])
[Pays/Région]="Royaume-Uni" And Forms![Total des ventes]![Commandes cumulées]>100
[Pays/région] In ("France", "Italie", "Espagne") And Len([Code Postal])<>5
BoîteMsg ("Confirmer modifications ?" ,1) = 1
[TempVars]![MsgBoxResult]=2

Source : Microsoft

jaugetresdifficile.gif (104 octets)Programmation : Accédez à Outlook, et envoyez un E-Mail à vos contacts qui se trouvent dans une table
jaugetresdifficile.gif (104 octets)Programmation : Comment importer toutes les feuilles d'un classeur en une seule opération
jaugetresdifficile.gif (104 octets)Programmation avec ADO - ActiveX Data Objects : Seulement pour programmeurs VBA expérimentés
Les commutateurs de démarrage Access

jaugetresfacile.gif (104 octets)Comment retrouver un mot de passe perdu sous Access ?

Accès à des champs de sous-formulaire : Soit un sous-formulaire nommé SFCommande avec un champ DateCommande :

MsgBox [SFCommande].[Form]![DateCommande]
MsgBox [SFCommande].Form("DateCommande")
MsgBox SFCommand.Form("DateCommande")
MsgBox Forms![F_Principal]![SFCommande].Form![DateCommande]


jaugetresdifficile.gif (104 octets)Créez vos menus contextuels personnalisés
Les raccourcis-clavier
jaugetresdifficile.gif (104 octets)Utilisation d'une table-système (Exemple : Compter le nombre de fois qu'une base de données a été ouverte)
jaugemoyen.gif (361 octets)Jongler avec différentes version d'Access
jaugemoyen.gif (361 octets)Lorsque vous avez de graves problèmes-système avec votre base de données

Comment changer le mot de passe de plusieurs bases de données en même temps ?

Il faut que vous vous trouviez dans une autre base de données, qui n'a pas besoin d'avoir son mot de passe changé (On ne peut pas changer le mot de passe d'une base de données ouverte). Dans VBA, vous allez dans Outils/Références/ cochez : "Microsoft ActiveX Data Objects 2.1 Library"

Essayez ce code :

Sub ChangerMotDePasse()
  Dim objConn As ADODB.Connection
  Set objConn = New ADODB.Connection
  objConn.Mode = adModeShareExclusive
  objConn.Provider = "Microsoft.Jet.OLEDB.4.0"
  objConn.Properties("Jet OLEDB:Database Password") = "ancien"
  objConn.Open "Data Source=D:\Mes documents\Compta.mdb"
  objConn.Execute "ALTER DATABASE PASSWORD [nouveau] [ancien]"
  objConn.Close
  Set objConn = Nothing
End Sub

jaugefacile.gif (240 octets)Créez vos listes déroulantes
jaugefacile.gif (240 octets)Plus de puissance avec les listes déroulantes
jaugetresfacile.gif (104 octets)C'est quoi, une clé primaire ?

Lorsqu'on définit un champ "Null interdit : Oui", il est donc obligatoire de renseigner ce champ. Or, quand l'utilisateur est dans un formulaire, il ne voit pas quels sont les champs à remplir obligatoirement, à moins que vous mettiez un petit texte "Champ obligatoire" a proximité. Une méthode plus élégante consiste à écrire en rouge "(obligatoire)" directement dans le champ. Lorsque l'utilisateur clique dedans, ce texte disparait aussitôt. Pour ce faire, dans la propriété "Format" de ce champ, écrivez :
@;[Rouge]"(Obligatoire)"
Et voilà...

jaugedifficile.gif (344 octets)Ca sert à quoi, les requêtes UNION ?
jaugetresdifficile.gif (104 octets)Comment faire commencer le NuméroAuto par autre chose que par 1 ?
jaugefacile.gif (240 octets)Etats : Comment gérer des champs trops larges ?

Et à part Info 3000, il y a quoi ?

Access Monster - Un énorme site consacré à Access, en anglais
Tout plein de liens externes concernant Access
Chez Stucki : Un excellent site de trucs et astuces Access avancés et très utiles
SQL - Syntaxe avancée en détail
Liste de toutes les fonctions Access


A partir d'ici, ce sont plus des notes personnelles que de véritables pages web :

Les objets de base Access

Tables : Réinitialiser le numéro automatique, diverses astuces
Tables liées - Retrouver le chemin et le fichier d'ou elles
sont issues
Requêtes : Action (mise à jour, suppression, création de table), Regroupement, paramètres, champs calculés, union, à tables multiples, premières valeurs, relations, requêtes imbriquées, analyse croisée, Create Table
SQL : Utilisation et explication de SQL, Innenr Join, Inner Join imbriqués, DistinctRow, Top, Appel SQL depuis VBA comparaison avec les requêtes faites avec le QBE (Query By Example)
Graphiques : Dans les formulaires
Formulaires : Extrait du fichier : Gestion de la dimension, événements, plusieurs instances, verrouillage d'enregistrements, listes modifiables, sous-formulaires, clavier, événement ToucheAppuyée, barre d'état, jauge de progression, FindRecord (trouver un enregistrement), filtre, cancelEvent, Control
Etats : Cumul, Dessin de lignes, Regroupement, Evénement AuFormatage, Colonnes, Ouverture en VBA en mode création, Ecriture de texte dynamiquement, Numérotation des lignes, Utilisation avancée
Macros : Fonctionnement, Conditions, Sous-Macros, Interaction avec VBA, macros automatiques AutoExec et AutoKeys

Programmation VBA : DAO - ADO

ATTENTION : La bibliothèque DAO 3.6 reconnaît les fichiers MDB, mais pas les fichiers ACCDB (Access 2007)

DAO : Référence complète et exhaustive des méthotes et propriétés
DAO  : (Data Access Object) - sauf les RecordSets - Versions de Jet, Création d'objets (Tables, utilisateurs, Bases de données, propriétés, formulaires, EventProcedure), Notion de collection, For Each, Count, Object, Workspace, DBEngine, Traitement des requêtes, Refresh, With, Objets par défaut...
DAO : Recordsets : RecordSetClone, FindFirst, CurrentDb, OpenDataBase, MoveFirst, Dynaset, Snapshot, EOF, Edit, Update, AddNew, GetRows, Index, Seek, NoMatch, Delete, Close...
ADO - ActiveX Data Object : la nouvelle alternative de Microsoft remplaçant DAO pour les accès aux données

Programmation VBA : Divers

Création de fonctions, procédures et types personnalisés - Exemple simple, Paramètres optionnels, préservation des variables, nombre variable d'arguments, Call, Types
Fonctions existantes dans Access : Tableaux, Conversion, Dates et heures, Regroupement de domaine, Financières, Inspection (IsNuméric, IsDate, ..., ), mathématiques, Iif, Switch, Traitement de textes, Retours des fonctions, Explications et astuces
Fonctions personnalisées prêtes à l'emploi Récupérer le nom de l'ordinateur, de l'utilisateur, Déterminer la langue d'Access, Chercher le dernier jour du mois, Qui fait partie de quel groupe (sécurité), Transformer un montant en toutes lettres, calculer un barême horaire, arrondissement à 5 centimes, calcul d'un montant sans TVA, etc.
DDE : Les liaisons DDE (Dynamic Data Exchange), principalement avec Word et Excel : DEPUIS ACCESS : Insérer du texte dans Word, Ajouter une feuille dans Excel, Exploitation d'une fonction Excel, 
Débuggage : Débuggage Express, Raccourcis Clavier, Points d'arrêts, Visualisation des variables
Fichiers et dossiers : accès en Lecture/écriture à un fichier texte, Dir, EOF, BOF, FileAttr, FreeFile, Input, Seek, ChDir, MKDIR, Kill, Input, Write, Print, ...
ActiveX : (Principalement CommonDialog) Utilisation et importation, Common Dialog, RTF, InitDir, ShowOpen...
API : Comportement et utilisation, DLL les plus usités, marche à suivre, Exemple simple, Analyse détaillée, Fonctions API intéressante : GetTickCount, mciExecute, sndPlaySound, GetWiindowsDirectory, GetComputerName, GetUserName...
OLE : (Object Linking and Embedding) - Liaison et incorporation d'objets divers par VBA, insertion de feuilles Excel
Assistant : Programmation de l'assistant Office : Exemple
Visual Basic : Déclaration de variables et de tableaux : Dim, General/Declaration, Tableaux dynamiques, Taille des types
Visual Basic : Opérations globales sur les objets d'Access : Ouverture-Fermeture de formulaires, d'états, Recherche d'un enregistrement dans un formulaire, Importation de fichier texte dans une table
Visual Basic : Utilisation de mots-clé de base : Do, Until, Loop, For, Next
Visual Basic : Remarques générales : Variables système, Opérateurs mathématiques et logiques, Echo, Option Explicit, F5, Collection personnalisée, Exécution d'un menu, Case Sensitive, Scinder le code en 2 lignes, Guillemets entre guillements, Msgbox, InputBox, Dsum, Dcount, Variables-Objets, Types de données...

Divers

Progiciel : Conseils pour la finalisation d'une base de données destinées à être distribuées au grand public, Barres d'outils et menus personnalisés, Menus contextuels, Fonctions personnalisées, .MDE, Options de démarrage, Kit de développement, Compactage et réparation automatique
Compléments : Utilisation des compléments Access, et Compléments personnalisés (.MDA), Gestionnaire, Analyseur, Attaches, Importation,
Configuration nécessaire à Access : Installation d'Office, Matériel, Logiciel, Réseau, Espace disque, Composants optionnels
Conseils personnels : Normalisation des noms de tables, de champs, d'objets, Abréviations, Création d'une base de données classique, Marche à suivre
Les fichiers d'aide (.HLP). Je m'appuie sur ForeHelp (logiciel indépendant d'Access)
Formats d'affichage complexes : Multi-Format selon la valeur, Dates, Texte, Valeur vide, format en couleur
Généralités globales d'Access (notamment le paramètre Command), Compactage, réparation, Lancement d'Access, Rendre un objet invisible...
Internet : Interaction Access avec Internet : Liens hypertexte, Télécommander un moteur de recherche, Envoyer par E-Mail
.LDB : (Log Data Base) Utilité et accès : accès par VBA

Menus et barres d'outils : Création et utilisation de menus et barres d'outils personnalisées
Réplication : Théorie, Utilité, fonctionnement, marche à suivre, gestion des conflits, Réplica-Maître : Création, récupération, cas pratique, Multi-Réplicas, Gestion des clés primaires, Réplica créé depuis un réplica, Réplication partielle, Réplication par DAO...
Ressources systèmes : Fichiers attachés à Access, base de registres, Tables systèmes, Accès par DAO, System.MDA, Utility.MDA, Wzbldr.MDA, Wzfrmrpt,.MDA, Wzlib.MDA, Wvquery.MDA, WzTable.MDA, Msacc2.ini, Install.stf
Sécurité : Les utilisateurs, les groupes, les groupes de travail .MDW (notamment System.MDW), premières démarches, l'administrateur, Codage/Décodage, Mots de passe, Propriétaires (Par défaut, Engine, Inconnu), Utilisateurs et groupes prédéfinis, Invités, Sécurité absolue, Sécurité par DAO...
Réseau local : Utilisation d'Access en réseau local, Intervalle d'actualisation
Utilisation de l'utilisateur courant et du domaine courant Windows NT

Le code suivant remplit une table qui doit être existante (T_TableChamp, pourvue des champs texte NomTable et NomChamp) avec les noms de tous les champs de toutes les tables de la base de données courante :

Sub StatistiqueTableChamps()
  Dim MaTable As New ADODB.Recordset
  MaTable.Open "T_TableChamp", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
  For Ctr = 0 To CurrentDb.tabledefs.Count - 1
    If Left(CurrentDb.tabledefs(Ctr).Name, 4) <> "MSYS" Then
      For C2 = 0 To CurrentDb.tabledefs(Ctr).Fields.Count - 1
        MaTable.AddNew
        MaTable("NomTable") = CurrentDb.tabledefs(Ctr).Name
        MaTable("NomChamp") = CurrentDb.tabledefs(Ctr).Fields(C2).Name
        MaTable.Update
      Next
    End If
  Next
  MaTable.Close
  Set MaTable = Nothing
End Sub

Afin d'éviter les apostrophes (') et les guillemets(") dans les champs, car ces deux caractères donnent bien du fil à retordre dans les filtres crées avec VBA, voici un bout de code tout bête qui permet de remplacer les apostrophes par des accents graves (´) et les guillemets par un double accent grave (´´). Vous allez sur l'événement "perte focus" (Lost focus) du champ qui vous intéresse :

Private Sub LeChamp_LostFocus()
    LeChamp = Replace(LeChamp, "'", "´")
    LeChamp = Replace(LeChamp, """", "´´")
End Sub

La même chose, mais juste avant qu'on enregistre les données, tous les champs en texte (A l'exclusion des listes déroulantes et autres) seront transformés :

Private Sub Form_BeforeUpdate(Cancel As Integer)
   On Error Resume Next
   For ctr = 0 To Me.Controls.Count - 1
     If Me.Controls(ctr).ControlType = 109 Then
        Me.Controls(ctr).Value = Replace(Me.Controls(ctr).Value, "'", "´")
        Me.Controls(ctr).Value = Replace(Me.Controls(ctr).Value, """", "´´")
     End If
   Next
End Sub

Divers VBA Sympa, en vrac

Enum, Type et tableaux avec For Each

Liens

Un excellent site de trucs et astuces Access | Liste des bugs connus sous Access

Office Systeème Access - Utilisation d'ActiveX, mais aussi des tonnes d'astuces avancées

Glossaire | Testez vos connaissances | Un autre excellent site

Si vous-même êtes formateur Access, voici une liste non exhaustive de chapitres à traiter lors de cours donnés à des débutants

 


Le saviez-vous ?  | Archives Le saviez-vous
MDB Veut dire Microsoft Data Base, et LDB : Log Data Base