Lier une table
Le
Jacques

Bonjour,
Quelle est la différence entre ces deux codes de liaison des tables
Je pose la question parce que lorsque j'utilise cette fonction celle-ci me =
crée une table liée.
Set Db = CurrentDb
' Définit la chaîne de connexion
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:.mdb"
' Crée la nouvelle table
Set Tbl = Db.CreateTableDef(strNomTable)
With Tbl
.Connect = strConnect
.SourceTableName = strNomTable
End With
' Ajoute la table à la base de données
Db.TableDefs.Append Tbl: Db.TableDefs.Refresh
Par contre avec cette fonction, si la liaison existe ou est corrompue, la l=
iaison est mise à jour, mais si la liaison n'existe pas elle ne me crée=
pas de liaison.
'Boucle Parcourant toutes les tables de la Bdd en cours
For Each TblTables In dbBase.TableDefs
'Teste l'attribut de la table pour savoir si c'est une table liée
If TblTables.Attributes And dbAttachedTable Then
'Redéfini la propriété connect de la table avec la nouvel=
le base
TblTables.Connect = ";DATABASE=" & strChmFichier
'Remet à jour la liaison de la table
TblTables.RefreshLink
End If
Next TblTables
Est-ce que cela est normal comme fonctionnement, ou est-ce moi qui ne les u=
tilise pas correctement ?
Merci pour votre aide.
Salutations
Quelle est la différence entre ces deux codes de liaison des tables
Je pose la question parce que lorsque j'utilise cette fonction celle-ci me =
crée une table liée.
Set Db = CurrentDb
' Définit la chaîne de connexion
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:.mdb"
' Crée la nouvelle table
Set Tbl = Db.CreateTableDef(strNomTable)
With Tbl
.Connect = strConnect
.SourceTableName = strNomTable
End With
' Ajoute la table à la base de données
Db.TableDefs.Append Tbl: Db.TableDefs.Refresh
Par contre avec cette fonction, si la liaison existe ou est corrompue, la l=
iaison est mise à jour, mais si la liaison n'existe pas elle ne me crée=
pas de liaison.
'Boucle Parcourant toutes les tables de la Bdd en cours
For Each TblTables In dbBase.TableDefs
'Teste l'attribut de la table pour savoir si c'est une table liée
If TblTables.Attributes And dbAttachedTable Then
'Redéfini la propriété connect de la table avec la nouvel=
le base
TblTables.Connect = ";DATABASE=" & strChmFichier
'Remet à jour la liaison de la table
TblTables.RefreshLink
End If
Next TblTables
Est-ce que cela est normal comme fonctionnement, ou est-ce moi qui ne les u=
tilise pas correctement ?
Merci pour votre aide.
Salutations
Ben oui, c'est normal, CreateTableDef signifie créer une table, alors
que RefreshLink signifie rafraîchir le lien.
Si la liaison n'existe pas et qu'il n'y a pas de lien corrompu ... alors
c'est qu'il ne s'agit pas d'une table liée, si ?
Si les attributs de la table incluent dbAttachedTable, c'est que c'est
une table liée ... Donc, la table non liée n'est pas traitée, CQFD.
--