Gestion DoCmd VBA Access

Fermé
Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 - 21 déc. 2009 à 11:58
Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 - 21 déc. 2009 à 14:51
Bonjour,

Dans un formulaire je souhaite pouvoir mettre à jours les tables d'une autre base de donnée à partir de celle ou je suis (ayant des tables avec les même nom mais légèrement différentes puisque qu'on y a appliqué les mises à jours).
Pour cela je souhaite tout d'abord supprimer la table de la base distante. Puis copier la nouvelle table depuis la base local vers la base distante. db correspond à la table distante et CurrentDb à la local
Pour cela j'utilise ce code :
        For Each tableName In listTable
        
            ' Ouverture de la table distante
            Set rstDistant = db.OpenRecordset(tableName, dbOpenDynaset)
            ' Ouverture de la table locale
            Set rstLocal = CurrentDb.OpenRecordset(tableName, dbOpenDynaset)
            
            ws.BeginTrans
            transactionEnCours = True
            'Message preventif
            Rep = MsgBox(tableName & " : Souhaitez vous remplacer cette table", vbYesNo)
            Select Case Rep
                'Si l'utilisateur desire vraiment quitter
                Case vbYes
                    'On supprime la table de la base distante
                    DoCmd.DeleteObject acTable, db.TableDefs(tableName)
                    'On copie la table de la base local vers la base distante
                    DoCmd.CopyObject db, tableName, acTable, CurrentDb.TableDefs(tableName)                    
                Case vbNo
                    MsgBox "Opération Annulée"
                    
            End Select
            
            transactionEnCours = False
            ws.CommitTrans
                
            
            rstLocal.Close
            rstDistant.Close
            
        Next tableName


C'est au niveau de la suppression et de la copy de l'autre que je ne sais pas comment différencier celle de la table local et celle de la table distante. Notamment pour le delete, il n'accepte pas le "db.TableDefs(tableName)" comment pourra t'il savoir laquelle des tables je souhaite supprimer si je ne lui donne pas la base ?

1 réponse

Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 24
21 déc. 2009 à 14:51
Si ça peut faire avancer la réflexion :

Lorsqu'on utilise DoCmd avec plusieurs bases de données ouverte en même temps, comment savoir sur quelle base il travail en priorité (en cas de table ayant le même nom par exemple) et comment changer cette priorité si cela est necessaire ?

D'avance merci ;-)
1