Accéder au contenu principal

Récupérer les description des tables d'une base externe dans la base locale

Il peut arriver, lorsque vous créez une application Access "splittée", d'annoter les tables dans le back-end avant de les lier dans l'application à proprement parler. Mais une fois les tables liées, les descriptions sont restées de l'autre côté !
Voici un script à faire tourner pour les récupérer.

Sub getBackEndDescriptions()
'retrieve table descriptions from Back End for linked tables
'and assigns them to local (Front End) links
'by Patrick Honorez - www.idevlop.com
    Dim td As TableDef, db2 As Database
    Dim strDesc As String
    On Error Resume Next
    For Each td In CurrentDb.TableDefs
        If Left(td.Connect, 6) = ";DATAB" Then  'look for ";DATABASE"
            Set db2 = OpenDatabase(Mid(td.Connect, 11), , True)
            strDesc = ""
            strDesc = db2.TableDefs(td.SourceTableName).Properties("Description")
            If Len(strDesc) > 0 Then
                Err.Clear
                'try first by adding the property
                td.Properties.Append td.CreateProperty("Description", dbText, strDesc)
                'try againg by updating the property
                If Err.Number <> 0 Then td.Properties("Description") = strDesc
            End If
            db2.Close
        End If
        MsgBox "Done"
    Next td
End Sub

Commentaires

Posts les plus consultés de ce blog

Champs obligatoires dans un formulaire Access

Comment rendre des champs obligatoires dans un formulaire Access ? La réponse la plus évidente est de modifier le design de la table et d'assigner au paramètre Required la valeur True. L'ennui de cette méthode est que le message d'erreur d'Access n'est pas très convivial et ne spécifie pas quel champ a déclenché l'erreur. Plutôt que d'écrire une routine de gestion d'erreur complexe, il y a une solution toute simple: affecter la valeur Faux à la propriété  Required du champ, Validation Rule: Is Not Null Validation Text: le texte à afficher, ex: "Code Postal obligatoire" ..et le tour est joué. Cette astuce vient de l'excellent Allen Browne, dont le site (en anglais) regorge d'informations utiles sur Access. ps: je n'ai pas sous la main de version française d'Access pour la traduction des propriétés, désolé...

ROW_NUMBER OVER PARTITION en Access

Ceux qui ont l'habitude de travailler avec une "grosse" base données comme SQL Server / Oracle / PostGreSQL, sont parfois frustrés face à certaines lacunes du SQL d'Access.   Prenons par exemple: ROW_NUMBER() OVER PARTITION, dont l'absence rend certaines requêtes très compliquées.   J'ai donc écrit une petite fonction VBA qui peut être appelée depuis un query Access et qui simulera assez bien ce ROW_NUMBER() OVER PARTITION.   Notez que ceci ne fonctionnera pas correctement dans une vue ou un formulaire interactif. Par contre comme source d'un rapport ou d'un export Excel, c'est impeccable.   En pratique il est préférable d'initialiser la fonction avec une chaîne de caractères "improbable" avant de lancer le rapport, comme indiqué dans le code.