IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Attacher les tables dans une base frontale depuis la base dorsale.


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Attacher les tables dans une base frontale depuis la base dorsale.
    ***** BONJOUR A TOUS **** (Où a t'on souvent la tête quand on a un problème ?)

    A partir de ma base de données, je voudrais créer par VBA tous les liens dans une base de donnée frontale:
    J'ai esayé de modifier le code qui fait l'inverse que j'ai pris dans l'aide d'access.

    Mais depuis je suis bloqué au niveau de cette erreur :

    3011
    Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'Accréditations sur opérations de production'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès.

    Voici du reste le code assoccié :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    'Date dernière modification de ce script : 08/08/2008
    'Script à copier et à coller dans un nouveau module d'une base exemple
     
    Function LierTablesDorsale(StrBaseFrontale As String) As Boolean
    On Error GoTo Err_LierTablesDorsale
    Dim strMotPasse As String
    Dim strConnect As String
    Dim strNomsTables() As String
    Dim strTemp, strDbPath As String
    Dim i As Integer
    Dim oDb As DAO.Database
    Dim oDbSource As DAO.Database
    Dim oTbl As DAO.TableDef
    Dim oTblSource As DAO.TableDef
     
        strPass = "thanks"
        strDbPath = CurrentDb.Name
        StrBaseFrontale = Left(strDbPath, Len(strDbPath) - 4) & " " & 
    StrChildbaseName
        DBEngine.CreateDatabase StrBaseFrontale, dbLangGeneral
     
        'dans StrBaseFrontale on trouve le chemin de ma cible style "C:\test.mdb"
        strConnect = "MS Access;pwd=" & strPass & ";DATABASE=" & StrBaseFrontale
        Set oDb = DBEngine.OpenDatabase(StrBaseFrontale, dbDriverComplete, _
        False, strConnect)
        Set oDbSource = CurrentDb
     
        'Récupère toutes les table de la base
        For Each oTblSource In oDbSource.TableDefs
            If (oTblSource.Attributes And dbSystemObject) = 0 Then
                strTemp = strTemp & oTblSource.Name & "|"
            End If
        Next
        oDbSource.Close: Set oDbSource = Nothing
        Debug.Print strTemp
     
        strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
        For i = 0 To UBound(strNomsTables)
            Debug.Print i, strNomsTables(i)
     
            'Initialisation de Table def
            Set oTbl = oDb.CreateTableDef(strNomsTables(i))
            Debug.Print "Affectation OK"
     
            'Conection à la Frontale
            oTbl.Connect = strConnect
            Debug.Print "Connection OK"
     
            'Désignation de la table à attacher
            oTbl.SourceTableName = strNomsTables(i)
            Debug.Print "Désignation OK"
     
            'Modification de Tabledefs et mise à jour de la définition
            'C'est ici que cela coince !
            '   Le moteur de base de données Microsoft Jet n'a pas pu
            '   trouver l 'objet 'Nom_de_la_table'.
            '   Assurez-vous que l'objet existe et que vous avez
            '    correctement saisi son nom et son chemin d'accès.
            oDb.TableDefs.Append oTbl
            Debug.Print "Definition OK"
        Next i
     
        oDb.TableDefs.Refresh
     
    Exit_LierTablesDorsale:
        Set oDbSource = Nothing
        Set oTbl = Nothing
        Set oDb = Nothing
        Exit Function
     
    Err_LierTablesDorsale:
        Select Case Err.Number
        Case 3012
            Debug.Print Err.Number, Err.Description
            Resume Next
     
        Case Else
            Debug.Print Err.Number, Err.Description
            Resume Exit_LierTablesDorsale
        End Select
     
    End Function    
     
    'Pour lancer le script, dans la fenetre de debogage, 
    'tapez :
    '    LierTablesDorsale "Frontale"
    Merci pour toutes vos contributions.

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Peut-être du côté des droits !

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Précisions.
    RE-BONJOUR A TOUS;

    En fait, je voudrais réaliser par cette fonction, l'équivalent de "fractionner une base de données" sauf qu'au final, je souhaiterais trier en sous ensemble ce qui doit être envoyé dans la base frontale.

    Cela pourrait me permettre de créer une base frontale différente pour chacun des modules de l'application du style : Comptabilité, Editions, etc.

    Merci d'avance.

Discussions similaires

  1. [AC-2003] Attacher les tables d'une base sécurisée
    Par samloba dans le forum Sécurité
    Réponses: 4
    Dernier message: 08/10/2011, 23h38
  2. [AC-2003] ne conserver que les tables dans une base externe
    Par AndréPe dans le forum VBA Access
    Réponses: 10
    Dernier message: 08/06/2010, 08h46
  3. Attacher les tables d'une base SQL server 2000
    Par dimitrak dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/03/2008, 16h08
  4. Réponses: 2
    Dernier message: 04/05/2007, 15h13
  5. Suppression de toutes les tables dans une base de données
    Par GDMINFO dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2007, 08h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo