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 ?
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 ?
Discussions sur les outils et logiciels de bureautique. Trouvez des solutions à vos problèmes, apprenez des astuces pour maximiser votre productivité et connectez-vous avec une communauté dédiée à l'efficacité au travail.